1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -O0 -march=amdgcn -mcpu=tahiti -run-pass=legalizer -global-isel-abort=0 %s -o - | FileCheck %s 3 4--- 5name: test_select_s32 6body: | 7 bb.0: 8 liveins: $vgpr0 9 ; CHECK-LABEL: name: test_select_s32 10 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 11 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 12 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 13 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 14 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 15 ; CHECK: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C1]], [[C2]] 16 ; CHECK: $vgpr0 = COPY [[SELECT]](s32) 17 %0:_(s32) = G_CONSTANT i32 0 18 %1:_(s32) = COPY $vgpr0 19 20 %2:_(s1) = G_ICMP intpred(ne), %0, %1 21 %3:_(s32) = G_CONSTANT i32 1 22 %4:_(s32) = G_CONSTANT i32 2 23 %5:_(s32) = G_SELECT %2, %3, %4 24 $vgpr0 = COPY %5 25 26... 27 28--- 29name: test_select_s64 30body: | 31 bb.0: 32 liveins: $vgpr0 33 ; CHECK-LABEL: name: test_select_s64 34 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 35 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 36 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 37 ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 38 ; CHECK: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 39 ; CHECK: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[C1]], [[C2]] 40 ; CHECK: $vgpr0_vgpr1 = COPY [[SELECT]](s64) 41 %0:_(s32) = G_CONSTANT i32 0 42 %1:_(s32) = COPY $vgpr0 43 44 %2:_(s1) = G_ICMP intpred(ne), %0, %1 45 %3:_(s64) = G_CONSTANT i64 1 46 %4:_(s64) = G_CONSTANT i64 2 47 %5:_(s64) = G_SELECT %2, %3, %4 48 $vgpr0_vgpr1 = COPY %5 49 50... 51 52--- 53name: test_select_s48 54body: | 55 bb.0: 56 liveins: $vgpr0 57 ; CHECK-LABEL: name: test_select_s48 58 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 59 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 60 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 61 ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 62 ; CHECK: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 63 ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY [[C1]](s64) 64 ; CHECK: [[COPY2:%[0-9]+]]:_(s64) = COPY [[C2]](s64) 65 ; CHECK: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[COPY1]], [[COPY2]] 66 ; CHECK: [[COPY3:%[0-9]+]]:_(s64) = COPY [[SELECT]](s64) 67 ; CHECK: $vgpr0_vgpr1 = COPY [[COPY3]](s64) 68 %0:_(s32) = G_CONSTANT i32 0 69 %1:_(s32) = COPY $vgpr0 70 71 %2:_(s1) = G_ICMP intpred(ne), %0, %1 72 %3:_(s48) = G_CONSTANT i48 1 73 %4:_(s48) = G_CONSTANT i48 2 74 %5:_(s48) = G_SELECT %2, %3, %4 75 %6:_(s64) = G_ANYEXT %5 76 $vgpr0_vgpr1 = COPY %6 77 78... 79 80--- 81name: test_select_s16 82body: | 83 bb.0: 84 liveins: $vgpr0 85 ; CHECK-LABEL: name: test_select_s16 86 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 87 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 88 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 89 ; CHECK: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 1 90 ; CHECK: [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 2 91 ; CHECK: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C1]], [[C2]] 92 ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 93 ; CHECK: $vgpr0 = COPY [[ANYEXT]](s32) 94 %0:_(s32) = G_CONSTANT i32 0 95 %1:_(s32) = COPY $vgpr0 96 97 %2:_(s1) = G_ICMP intpred(ne), %0, %1 98 %3:_(s16) = G_CONSTANT i16 1 99 %4:_(s16) = G_CONSTANT i16 2 100 %5:_(s16) = G_SELECT %2, %3, %4 101 %6:_(s32) = G_ANYEXT %5 102 $vgpr0 = COPY %6 103 104... 105 106--- 107name: test_select_s8 108body: | 109 bb.0: 110 liveins: $vgpr0 111 ; CHECK-LABEL: name: test_select_s8 112 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 113 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 114 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 115 ; CHECK: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 1 116 ; CHECK: [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 2 117 ; CHECK: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C1]], [[C2]] 118 ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 119 ; CHECK: $vgpr0 = COPY [[ANYEXT]](s32) 120 %0:_(s32) = G_CONSTANT i32 0 121 %1:_(s32) = COPY $vgpr0 122 123 %2:_(s1) = G_ICMP intpred(ne), %0, %1 124 %3:_(s8) = G_CONSTANT i8 1 125 %4:_(s8) = G_CONSTANT i8 2 126 %5:_(s8) = G_SELECT %2, %3, %4 127 %6:_(s32) = G_ANYEXT %5 128 $vgpr0 = COPY %6 129 130... 131 132--- 133name: test_select_s7 134body: | 135 bb.0: 136 liveins: $vgpr0 137 ; CHECK-LABEL: name: test_select_s7 138 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 139 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 140 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 141 ; CHECK: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 1 142 ; CHECK: [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 2 143 ; CHECK: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C1]], [[C2]] 144 ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 145 ; CHECK: $vgpr0 = COPY [[ANYEXT]](s32) 146 %0:_(s32) = G_CONSTANT i32 0 147 %1:_(s32) = COPY $vgpr0 148 149 %2:_(s1) = G_ICMP intpred(ne), %0, %1 150 %3:_(s7) = G_CONSTANT i7 1 151 %4:_(s7) = G_CONSTANT i7 2 152 %5:_(s7) = G_SELECT %2, %3, %4 153 %6:_(s32) = G_ANYEXT %5 154 $vgpr0 = COPY %6 155 156... 157 158--- 159name: test_select_s96 160body: | 161 bb.0: 162 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5 , $vgpr6 163 ; CHECK-LABEL: name: test_select_s96 164 ; CHECK: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2 165 ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr3_vgpr4_vgpr5 166 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr6 167 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 168 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[C]] 169 ; CHECK: [[EXTRACT:%[0-9]+]]:_(s64) = G_EXTRACT [[COPY]](s96), 0 170 ; CHECK: [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s96), 64 171 ; CHECK: [[EXTRACT2:%[0-9]+]]:_(s64) = G_EXTRACT [[COPY1]](s96), 0 172 ; CHECK: [[EXTRACT3:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY1]](s96), 64 173 ; CHECK: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[EXTRACT2]] 174 ; CHECK: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[EXTRACT1]], [[EXTRACT3]] 175 ; CHECK: [[DEF:%[0-9]+]]:_(s96) = G_IMPLICIT_DEF 176 ; CHECK: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[DEF]], [[SELECT]](s64), 0 177 ; CHECK: [[INSERT1:%[0-9]+]]:_(s96) = G_INSERT [[INSERT]], [[SELECT1]](s32), 64 178 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT1]](s96) 179 %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2 180 %1:_(s96) = COPY $vgpr3_vgpr4_vgpr5 181 %2:_(s32) = COPY $vgpr6 182 %3:_(s32) = G_CONSTANT i32 0 183 184 %4:_(s1) = G_ICMP intpred(ne), %2, %3 185 %5:_(s96) = G_SELECT %4, %0, %1 186 $vgpr0_vgpr1_vgpr2 = COPY %5 187 188... 189 190--- 191name: test_select_s128 192body: | 193 bb.0: 194 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7 , $vgpr8 195 196 ; CHECK-LABEL: name: test_select_s128 197 ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 198 ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 199 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr8 200 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 201 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[C]] 202 ; CHECK: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](s128) 203 ; CHECK: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](s128) 204 ; CHECK: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 205 ; CHECK: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 206 ; CHECK: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[SELECT]](s64), [[SELECT1]](s64) 207 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[MV]](s128) 208 %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 209 %1:_(s128) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 210 %2:_(s32) = COPY $vgpr8 211 %3:_(s32) = G_CONSTANT i32 0 212 %4:_(s1) = G_ICMP intpred(ne), %2, %3 213 %5:_(s128) = G_SELECT %4, %0, %1 214 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %5 215 216... 217 218--- 219name: test_select_v2s8 220body: | 221 bb.0: 222 liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4 223 224 ; CHECK-LABEL: name: test_select_v2s8 225 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 226 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 227 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr1_vgpr2 228 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr3_vgpr4 229 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]] 230 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>) 231 ; CHECK: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 232 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 233 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32) 234 ; CHECK: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[TRUNC]], [[TRUNC1]] 235 ; CHECK: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32) 236 ; CHECK: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[UV3]](s32) 237 ; CHECK: [[SELECT1:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[TRUNC2]], [[TRUNC3]] 238 ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 239 ; CHECK: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT1]](s16) 240 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[ANYEXT]](s32) 241 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ANYEXT1]](s32) 242 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32) 243 ; CHECK: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 244 %0:_(s32) = COPY $vgpr0 245 %1:_(s32) = G_CONSTANT i32 0 246 %2:_(<2 x s32>) = COPY $vgpr1_vgpr2 247 %3:_(<2 x s32>) = COPY $vgpr3_vgpr4 248 %4:_(<2 x s8>) = G_TRUNC %2 249 %5:_(<2 x s8>) = G_TRUNC %3 250 251 %6:_(s1) = G_ICMP intpred(ne), %0, %1 252 %7:_(<2 x s8>) = G_SELECT %6, %4, %5 253 %8:_(<2 x s32>) = G_ANYEXT %7 254 $vgpr0_vgpr1 = COPY %8 255 256... 257 258--- 259name: test_select_v3s8 260body: | 261 bb.0: 262 liveins: $vgpr0, $vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6 263 264 ; CHECK-LABEL: name: test_select_v3s8 265 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 266 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 267 ; CHECK: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr1_vgpr2_vgpr3 268 ; CHECK: [[COPY2:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6 269 ; CHECK: [[TRUNC:%[0-9]+]]:_(<3 x s8>) = G_TRUNC [[COPY1]](<3 x s32>) 270 ; CHECK: [[TRUNC1:%[0-9]+]]:_(<3 x s8>) = G_TRUNC [[COPY2]](<3 x s32>) 271 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]] 272 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s8>) = G_IMPLICIT_DEF 273 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s8>) = G_INSERT [[DEF]], [[TRUNC]](<3 x s8>), 0 274 ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s8>) = G_INSERT [[DEF]], [[TRUNC1]](<3 x s8>), 0 275 ; CHECK: [[UV:%[0-9]+]]:_(s8), [[UV1:%[0-9]+]]:_(s8), [[UV2:%[0-9]+]]:_(s8), [[UV3:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[INSERT]](<4 x s8>) 276 ; CHECK: [[UV4:%[0-9]+]]:_(s8), [[UV5:%[0-9]+]]:_(s8), [[UV6:%[0-9]+]]:_(s8), [[UV7:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[INSERT1]](<4 x s8>) 277 ; CHECK: [[ANYEXT:%[0-9]+]]:_(s16) = G_ANYEXT [[UV]](s8) 278 ; CHECK: [[ANYEXT1:%[0-9]+]]:_(s16) = G_ANYEXT [[UV4]](s8) 279 ; CHECK: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[ANYEXT]], [[ANYEXT1]] 280 ; CHECK: [[TRUNC2:%[0-9]+]]:_(s8) = G_TRUNC [[SELECT]](s16) 281 ; CHECK: [[ANYEXT2:%[0-9]+]]:_(s16) = G_ANYEXT [[UV1]](s8) 282 ; CHECK: [[ANYEXT3:%[0-9]+]]:_(s16) = G_ANYEXT [[UV5]](s8) 283 ; CHECK: [[SELECT1:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[ANYEXT2]], [[ANYEXT3]] 284 ; CHECK: [[TRUNC3:%[0-9]+]]:_(s8) = G_TRUNC [[SELECT1]](s16) 285 ; CHECK: [[ANYEXT4:%[0-9]+]]:_(s16) = G_ANYEXT [[UV2]](s8) 286 ; CHECK: [[ANYEXT5:%[0-9]+]]:_(s16) = G_ANYEXT [[UV6]](s8) 287 ; CHECK: [[SELECT2:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[ANYEXT4]], [[ANYEXT5]] 288 ; CHECK: [[TRUNC4:%[0-9]+]]:_(s8) = G_TRUNC [[SELECT2]](s16) 289 ; CHECK: [[ANYEXT6:%[0-9]+]]:_(s16) = G_ANYEXT [[UV3]](s8) 290 ; CHECK: [[ANYEXT7:%[0-9]+]]:_(s16) = G_ANYEXT [[UV7]](s8) 291 ; CHECK: [[SELECT3:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[ANYEXT6]], [[ANYEXT7]] 292 ; CHECK: [[TRUNC5:%[0-9]+]]:_(s8) = G_TRUNC [[SELECT3]](s16) 293 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s8>) = G_BUILD_VECTOR [[TRUNC2]](s8), [[TRUNC3]](s8), [[TRUNC4]](s8), [[TRUNC5]](s8) 294 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s8>) = G_CONCAT_VECTORS [[BUILD_VECTOR]](<4 x s8>), [[DEF]](<4 x s8>), [[DEF]](<4 x s8>) 295 ; CHECK: [[UV8:%[0-9]+]]:_(<3 x s8>), [[UV9:%[0-9]+]]:_(<3 x s8>), [[UV10:%[0-9]+]]:_(<3 x s8>), [[UV11:%[0-9]+]]:_(<3 x s8>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<12 x s8>) 296 ; CHECK: [[ANYEXT8:%[0-9]+]]:_(<3 x s32>) = G_ANYEXT [[UV8]](<3 x s8>) 297 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[ANYEXT8]](<3 x s32>) 298 %0:_(s32) = COPY $vgpr0 299 %1:_(s32) = G_CONSTANT i32 0 300 %2:_(<3 x s32>) = COPY $vgpr1_vgpr2_vgpr3 301 %3:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6 302 %4:_(<3 x s8>) = G_TRUNC %2 303 %5:_(<3 x s8>) = G_TRUNC %3 304 305 %6:_(s1) = G_ICMP intpred(ne), %0, %1 306 %7:_(<3 x s8>) = G_SELECT %6, %4, %5 307 %8:_(<3 x s32>) = G_ANYEXT %7 308 $vgpr0_vgpr1_vgpr2 = COPY %8 309 310... 311 312--- 313name: test_select_v4s8 314body: | 315 bb.0: 316 liveins: $vgpr0, $vgpr1_vgpr2_vgpr3_vgpr4, $vgpr5_vgpr6_vgpr7_vgpr8 317 318 ; CHECK-LABEL: name: test_select_v4s8 319 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 320 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 321 ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4 322 ; CHECK: [[COPY2:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr5_vgpr6_vgpr7_vgpr8 323 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]] 324 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<4 x s32>) 325 ; CHECK: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<4 x s32>) 326 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32) 327 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV4]](s32) 328 ; CHECK: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[TRUNC]], [[TRUNC1]] 329 ; CHECK: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32) 330 ; CHECK: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[UV5]](s32) 331 ; CHECK: [[SELECT1:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[TRUNC2]], [[TRUNC3]] 332 ; CHECK: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32) 333 ; CHECK: [[TRUNC5:%[0-9]+]]:_(s16) = G_TRUNC [[UV6]](s32) 334 ; CHECK: [[SELECT2:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[TRUNC4]], [[TRUNC5]] 335 ; CHECK: [[TRUNC6:%[0-9]+]]:_(s16) = G_TRUNC [[UV3]](s32) 336 ; CHECK: [[TRUNC7:%[0-9]+]]:_(s16) = G_TRUNC [[UV7]](s32) 337 ; CHECK: [[SELECT3:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[TRUNC6]], [[TRUNC7]] 338 ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 339 ; CHECK: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT1]](s16) 340 ; CHECK: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT2]](s16) 341 ; CHECK: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT3]](s16) 342 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[ANYEXT]](s32) 343 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ANYEXT1]](s32) 344 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ANYEXT2]](s32) 345 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[ANYEXT3]](s32) 346 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32) 347 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>) 348 %0:_(s32) = COPY $vgpr0 349 %1:_(s32) = G_CONSTANT i32 0 350 %2:_(<4 x s32>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4 351 %3:_(<4 x s32>) = COPY $vgpr5_vgpr6_vgpr7_vgpr8 352 %4:_(<4 x s8>) = G_TRUNC %2 353 %5:_(<4 x s8>) = G_TRUNC %3 354 355 %6:_(s1) = G_ICMP intpred(ne), %0, %1 356 %7:_(<4 x s8>) = G_SELECT %6, %4, %5 357 %8:_(<4 x s32>) = G_ANYEXT %7 358 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %8 359 360... 361 362--- 363name: test_select_v2s16 364body: | 365 bb.0: 366 liveins: $vgpr0, $vgpr1, $vgpr2 367 ; CHECK-LABEL: name: test_select_v2s16 368 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 369 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 370 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 371 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 372 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[C]] 373 ; CHECK: [[SELECT:%[0-9]+]]:_(<2 x s16>) = G_SELECT [[ICMP]](s1), [[COPY]], [[COPY1]] 374 ; CHECK: $vgpr0 = COPY [[SELECT]](<2 x s16>) 375 %0:_(<2 x s16>) = COPY $vgpr0 376 %1:_(<2 x s16>) = COPY $vgpr1 377 %2:_(s32) = COPY $vgpr2 378 %3:_(s32) = G_CONSTANT i32 0 379 380 %4:_(s1) = G_ICMP intpred(ne), %2, %3 381 %5:_(<2 x s16>) = G_SELECT %4, %0, %1 382 $vgpr0 = COPY %5 383 384... 385 386--- 387name: test_select_v3s16 388body: | 389 bb.0: 390 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5, $vgpr6 391 ; CHECK-LABEL: name: test_select_v3s16 392 ; CHECK: [[COPY:%[0-9]+]]:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2 393 ; CHECK: [[COPY1:%[0-9]+]]:_(<6 x s16>) = COPY $vgpr3_vgpr4_vgpr5 394 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr6 395 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 396 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[C]] 397 ; CHECK: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[COPY]](<6 x s16>) 398 ; CHECK: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[COPY1]](<6 x s16>) 399 ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 400 ; CHECK: [[INSERT:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV]](<3 x s16>), 0 401 ; CHECK: [[INSERT1:%[0-9]+]]:_(<4 x s16>) = G_INSERT [[DEF]], [[UV2]](<3 x s16>), 0 402 ; CHECK: [[SELECT:%[0-9]+]]:_(<4 x s16>) = G_SELECT [[ICMP]](s1), [[INSERT]], [[INSERT1]] 403 ; CHECK: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 404 ; CHECK: [[UV4:%[0-9]+]]:_(<2 x s16>), [[UV5:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[SELECT]](<4 x s16>) 405 ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV4]](<2 x s16>) 406 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 407 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C1]](s32) 408 ; CHECK: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV5]](<2 x s16>) 409 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C1]](s32) 410 ; CHECK: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) 411 ; CHECK: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV6]](<2 x s16>) 412 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C1]](s32) 413 ; CHECK: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>) 414 ; CHECK: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C1]](s32) 415 ; CHECK: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 416 ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) 417 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C2]] 418 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) 419 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C2]] 420 ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32) 421 ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]] 422 ; CHECK: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) 423 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) 424 ; CHECK: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY5]], [[C2]] 425 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[BITCAST2]](s32) 426 ; CHECK: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C2]] 427 ; CHECK: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C1]](s32) 428 ; CHECK: [[OR1:%[0-9]+]]:_(s32) = G_OR [[AND2]], [[SHL1]] 429 ; CHECK: [[BITCAST5:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32) 430 ; CHECK: [[COPY7:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) 431 ; CHECK: [[AND4:%[0-9]+]]:_(s32) = G_AND [[COPY7]], [[C2]] 432 ; CHECK: [[COPY8:%[0-9]+]]:_(s32) = COPY [[BITCAST3]](s32) 433 ; CHECK: [[AND5:%[0-9]+]]:_(s32) = G_AND [[COPY8]], [[C2]] 434 ; CHECK: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND5]], [[C1]](s32) 435 ; CHECK: [[OR2:%[0-9]+]]:_(s32) = G_OR [[AND4]], [[SHL2]] 436 ; CHECK: [[BITCAST6:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32) 437 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BITCAST4]](<2 x s16>), [[BITCAST5]](<2 x s16>), [[BITCAST6]](<2 x s16>) 438 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[CONCAT_VECTORS]](<6 x s16>) 439 %0:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2 440 %1:_(<6 x s16>) = COPY $vgpr3_vgpr4_vgpr5 441 %2:_(s32) = COPY $vgpr6 442 %3:_(s32) = G_CONSTANT i32 0 443 %4:_(s1) = G_ICMP intpred(ne), %2, %3 444 %5:_(<3 x s16>), %6:_(<3 x s16>) = G_UNMERGE_VALUES %0 445 %7:_(<3 x s16>), %8:_(<3 x s16>) = G_UNMERGE_VALUES %1 446 %9:_(<3 x s16>) = G_SELECT %4, %5, %7 447 %10:_(<3 x s16>) = G_IMPLICIT_DEF 448 %11:_(<6 x s16>) = G_CONCAT_VECTORS %9, %10 449 $vgpr0_vgpr1_vgpr2 = COPY %11 450 451... 452 453--- 454name: test_select_v4s16 455body: | 456 bb.0: 457 liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4 458 ; CHECK-LABEL: name: test_select_v4s16 459 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 460 ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr1_vgpr2 461 ; CHECK: [[COPY2:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr3_vgpr4 462 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 463 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]] 464 ; CHECK: [[SELECT:%[0-9]+]]:_(<4 x s16>) = G_SELECT [[ICMP]](s1), [[COPY1]], [[COPY2]] 465 ; CHECK: $vgpr0_vgpr1 = COPY [[SELECT]](<4 x s16>) 466 %0:_(s32) = COPY $vgpr0 467 %1:_(<4 x s16>) = COPY $vgpr1_vgpr2 468 %2:_(<4 x s16>) = COPY $vgpr3_vgpr4 469 %4:_(s32) = G_CONSTANT i32 0 470 471 %5:_(s1) = G_ICMP intpred(ne), %0, %4 472 %6:_(<4 x s16>) = G_SELECT %5, %1, %2 473 $vgpr0_vgpr1 = COPY %6 474 475... 476 477--- 478name: test_select_v2s32 479body: | 480 bb.0: 481 liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4 482 ; CHECK-LABEL: name: test_select_v2s32 483 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 484 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr1_vgpr2 485 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr3_vgpr4 486 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 487 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]] 488 ; CHECK: [[SELECT:%[0-9]+]]:_(<2 x s32>) = G_SELECT [[ICMP]](s1), [[COPY1]], [[COPY2]] 489 ; CHECK: $vgpr0_vgpr1 = COPY [[SELECT]](<2 x s32>) 490 %0:_(s32) = COPY $vgpr0 491 %1:_(<2 x s32>) = COPY $vgpr1_vgpr2 492 %2:_(<2 x s32>) = COPY $vgpr3_vgpr4 493 %4:_(s32) = G_CONSTANT i32 0 494 495 %5:_(s1) = G_ICMP intpred(ne), %0, %4 496 %6:_(<2 x s32>) = G_SELECT %5, %1, %2 497 $vgpr0_vgpr1 = COPY %6 498 499... 500 501--- 502name: test_select_v3s32 503body: | 504 bb.0: 505 liveins: $vgpr0, $vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6 506 ; CHECK-LABEL: name: test_select_v3s32 507 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 508 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 509 ; CHECK: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr1_vgpr2_vgpr3 510 ; CHECK: [[COPY2:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6 511 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 512 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>) 513 ; CHECK: [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<3 x s32>) 514 ; CHECK: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV3]] 515 ; CHECK: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV4]] 516 ; CHECK: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[UV2]], [[UV5]] 517 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32), [[SELECT2]](s32) 518 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>) 519 %0:_(s32) = G_CONSTANT i32 0 520 %1:_(s32) = COPY $vgpr0 521 %2:_(<3 x s32>) = COPY $vgpr1_vgpr2_vgpr3 522 %3:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6 523 524 %4:_(s1) = G_ICMP intpred(ne), %0, %1 525 %5:_(<3 x s32>) = G_SELECT %4, %2, %3 526 $vgpr0_vgpr1_vgpr2 = COPY %5 527 528... 529 530--- 531name: test_select_v4s32 532body: | 533 bb.0: 534 liveins: $vgpr0, $vgpr1_vgpr2_vgpr3_vgpr4, $vgpr5_vgpr6_vgpr7_vgpr8 535 ; CHECK-LABEL: name: test_select_v4s32 536 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 537 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 538 ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4 539 ; CHECK: [[COPY2:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr5_vgpr6_vgpr7_vgpr8 540 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 541 ; CHECK: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[COPY1]](<4 x s32>) 542 ; CHECK: [[UV2:%[0-9]+]]:_(<2 x s32>), [[UV3:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[COPY2]](<4 x s32>) 543 ; CHECK: [[SELECT:%[0-9]+]]:_(<2 x s32>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 544 ; CHECK: [[SELECT1:%[0-9]+]]:_(<2 x s32>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 545 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s32>) = G_CONCAT_VECTORS [[SELECT]](<2 x s32>), [[SELECT1]](<2 x s32>) 546 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[CONCAT_VECTORS]](<4 x s32>) 547 %0:_(s32) = G_CONSTANT i32 0 548 %1:_(s32) = COPY $vgpr0 549 %2:_(<4 x s32>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4 550 %3:_(<4 x s32>) = COPY $vgpr5_vgpr6_vgpr7_vgpr8 551 552 %4:_(s1) = G_ICMP intpred(ne), %0, %1 553 %5:_(<4 x s32>) = G_SELECT %4, %2, %3 554 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %5 555 556... 557 558--- 559name: test_select_v2s64 560body: | 561 bb.0: 562 liveins: $vgpr0, $vgpr1_vgpr2_vgpr3_vgpr4, $vgpr5_vgpr6_vgpr7_vgpr8 563 ; CHECK-LABEL: name: test_select_v2s64 564 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 565 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 566 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4 567 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr5_vgpr6_vgpr7_vgpr8 568 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 569 ; CHECK: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>) 570 ; CHECK: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY2]](<2 x s64>) 571 ; CHECK: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 572 ; CHECK: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 573 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[SELECT]](s64), [[SELECT1]](s64) 574 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>) 575 %0:_(s32) = G_CONSTANT i32 0 576 %1:_(s32) = COPY $vgpr0 577 %2:_(<2 x s64>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4 578 %3:_(<2 x s64>) = COPY $vgpr5_vgpr6_vgpr7_vgpr8 579 580 %4:_(s1) = G_ICMP intpred(ne), %0, %1 581 %5:_(<2 x s64>) = G_SELECT %4, %2, %3 582 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %5 583 584... 585 586--- 587name: test_select_p0 588body: | 589 bb.0: 590 liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4 591 ; CHECK-LABEL: name: test_select_p0 592 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 593 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 594 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr1_vgpr2 595 ; CHECK: [[COPY2:%[0-9]+]]:_(p0) = COPY $vgpr3_vgpr4 596 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 597 ; CHECK: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[COPY1]], [[COPY2]] 598 ; CHECK: $vgpr0_vgpr1 = COPY [[SELECT]](p0) 599 %0:_(s32) = G_CONSTANT i32 0 600 %1:_(s32) = COPY $vgpr0 601 %2:_(p0) = COPY $vgpr1_vgpr2 602 %3:_(p0) = COPY $vgpr3_vgpr4 603 604 %4:_(s1) = G_ICMP intpred(ne), %0, %1 605 %5:_(p0) = G_SELECT %4, %2, %3 606 $vgpr0_vgpr1 = COPY %5 607 608... 609 610--- 611name: test_select_p1 612body: | 613 bb.0: 614 liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4 615 ; CHECK-LABEL: name: test_select_p1 616 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 617 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 618 ; CHECK: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr1_vgpr2 619 ; CHECK: [[COPY2:%[0-9]+]]:_(p1) = COPY $vgpr3_vgpr4 620 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 621 ; CHECK: [[SELECT:%[0-9]+]]:_(p1) = G_SELECT [[ICMP]](s1), [[COPY1]], [[COPY2]] 622 ; CHECK: $vgpr0_vgpr1 = COPY [[SELECT]](p1) 623 %0:_(s32) = G_CONSTANT i32 0 624 %1:_(s32) = COPY $vgpr0 625 %2:_(p1) = COPY $vgpr1_vgpr2 626 %3:_(p1) = COPY $vgpr3_vgpr4 627 628 %4:_(s1) = G_ICMP intpred(ne), %0, %1 629 %5:_(p1) = G_SELECT %4, %2, %3 630 $vgpr0_vgpr1 = COPY %5 631 632... 633 634--- 635name: test_select_p2 636body: | 637 bb.0: 638 liveins: $vgpr0, $vgpr1, $vgpr2 639 ; CHECK-LABEL: name: test_select_p2 640 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 641 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 642 ; CHECK: [[COPY1:%[0-9]+]]:_(p2) = COPY $vgpr1 643 ; CHECK: [[COPY2:%[0-9]+]]:_(p2) = COPY $vgpr2 644 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 645 ; CHECK: [[SELECT:%[0-9]+]]:_(p2) = G_SELECT [[ICMP]](s1), [[COPY1]], [[COPY2]] 646 ; CHECK: $vgpr0 = COPY [[SELECT]](p2) 647 %0:_(s32) = G_CONSTANT i32 0 648 %1:_(s32) = COPY $vgpr0 649 %2:_(p2) = COPY $vgpr1 650 %3:_(p2) = COPY $vgpr2 651 652 %4:_(s1) = G_ICMP intpred(ne), %0, %1 653 %5:_(p2) = G_SELECT %4, %2, %3 654 $vgpr0 = COPY %5 655 656... 657 658--- 659name: test_select_p3 660body: | 661 bb.0: 662 liveins: $vgpr0, $vgpr1, $vgpr2 663 ; CHECK-LABEL: name: test_select_p3 664 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 665 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 666 ; CHECK: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1 667 ; CHECK: [[COPY2:%[0-9]+]]:_(p3) = COPY $vgpr2 668 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 669 ; CHECK: [[SELECT:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[COPY1]], [[COPY2]] 670 ; CHECK: $vgpr0 = COPY [[SELECT]](p3) 671 %0:_(s32) = G_CONSTANT i32 0 672 %1:_(s32) = COPY $vgpr0 673 %2:_(p3) = COPY $vgpr1 674 %3:_(p3) = COPY $vgpr2 675 676 %4:_(s1) = G_ICMP intpred(ne), %0, %1 677 %5:_(p3) = G_SELECT %4, %2, %3 678 $vgpr0 = COPY %5 679 680... 681 682--- 683name: test_select_p4 684body: | 685 bb.0: 686 liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4 687 ; CHECK-LABEL: name: test_select_p4 688 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 689 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 690 ; CHECK: [[COPY1:%[0-9]+]]:_(p4) = COPY $vgpr1_vgpr2 691 ; CHECK: [[COPY2:%[0-9]+]]:_(p4) = COPY $vgpr3_vgpr4 692 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 693 ; CHECK: [[SELECT:%[0-9]+]]:_(p4) = G_SELECT [[ICMP]](s1), [[COPY1]], [[COPY2]] 694 ; CHECK: $vgpr0_vgpr1 = COPY [[SELECT]](p4) 695 %0:_(s32) = G_CONSTANT i32 0 696 %1:_(s32) = COPY $vgpr0 697 %2:_(p4) = COPY $vgpr1_vgpr2 698 %3:_(p4) = COPY $vgpr3_vgpr4 699 700 %4:_(s1) = G_ICMP intpred(ne), %0, %1 701 %5:_(p4) = G_SELECT %4, %2, %3 702 $vgpr0_vgpr1 = COPY %5 703 704... 705 706--- 707name: test_select_p5 708body: | 709 bb.0: 710 liveins: $vgpr0, $vgpr1, $vgpr2 711 712 ; CHECK-LABEL: name: test_select_p5 713 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 714 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 715 ; CHECK: [[COPY1:%[0-9]+]]:_(p5) = COPY $vgpr1 716 ; CHECK: [[COPY2:%[0-9]+]]:_(p5) = COPY $vgpr2 717 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 718 ; CHECK: [[SELECT:%[0-9]+]]:_(p5) = G_SELECT [[ICMP]](s1), [[COPY1]], [[COPY2]] 719 ; CHECK: $vgpr0 = COPY [[SELECT]](p5) 720 %0:_(s32) = G_CONSTANT i32 0 721 %1:_(s32) = COPY $vgpr0 722 %2:_(p5) = COPY $vgpr1 723 %3:_(p5) = COPY $vgpr2 724 %4:_(s1) = G_ICMP intpred(ne), %0, %1 725 %5:_(p5) = G_SELECT %4, %2, %3 726 $vgpr0 = COPY %5 727 728... 729 730--- 731name: test_select_p999 732body: | 733 bb.0: 734 liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4 735 736 ; CHECK-LABEL: name: test_select_p999 737 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 738 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 739 ; CHECK: [[COPY1:%[0-9]+]]:_(p999) = COPY $vgpr1_vgpr2 740 ; CHECK: [[COPY2:%[0-9]+]]:_(p999) = COPY $vgpr3_vgpr4 741 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 742 ; CHECK: [[SELECT:%[0-9]+]]:_(p999) = G_SELECT [[ICMP]](s1), [[COPY1]], [[COPY2]] 743 ; CHECK: $vgpr0_vgpr1 = COPY [[SELECT]](p999) 744 %0:_(s32) = G_CONSTANT i32 0 745 %1:_(s32) = COPY $vgpr0 746 %2:_(p999) = COPY $vgpr1_vgpr2 747 %3:_(p999) = COPY $vgpr3_vgpr4 748 %4:_(s1) = G_ICMP intpred(ne), %0, %1 749 %5:_(p999) = G_SELECT %4, %2, %3 750 $vgpr0_vgpr1 = COPY %5 751 752... 753 754--- 755 756name: test_select_v2p3 757body: | 758 bb.0: 759 liveins: $vgpr0, $vgpr1_vgpr2, $vgpr3_vgpr4 760 761 ; CHECK-LABEL: name: test_select_v2p3 762 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 763 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr1_vgpr2 764 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr3_vgpr4 765 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 766 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]] 767 ; CHECK: [[SELECT:%[0-9]+]]:_(<2 x p3>) = G_SELECT [[ICMP]](s1), [[COPY1]], [[COPY2]] 768 ; CHECK: $vgpr0_vgpr1 = COPY [[SELECT]](<2 x p3>) 769 %0:_(s32) = COPY $vgpr0 770 %1:_(<2 x p3>) = COPY $vgpr1_vgpr2 771 %2:_(<2 x p3>) = COPY $vgpr3_vgpr4 772 %4:_(s32) = G_CONSTANT i32 0 773 %5:_(s1) = G_ICMP intpred(ne), %0, %4 774 %6:_(<2 x p3>) = G_SELECT %5, %1, %2 775 $vgpr0_vgpr1 = COPY %6 776 777... 778 779--- 780name: test_select_v3p3 781body: | 782 bb.0: 783 liveins: $vgpr0, $vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6 784 785 ; CHECK-LABEL: name: test_select_v3p3 786 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 787 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 788 ; CHECK: [[COPY1:%[0-9]+]]:_(<3 x p3>) = COPY $vgpr1_vgpr2_vgpr3 789 ; CHECK: [[COPY2:%[0-9]+]]:_(<3 x p3>) = COPY $vgpr4_vgpr5_vgpr6 790 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 791 ; CHECK: [[UV:%[0-9]+]]:_(p3), [[UV1:%[0-9]+]]:_(p3), [[UV2:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY1]](<3 x p3>) 792 ; CHECK: [[UV3:%[0-9]+]]:_(p3), [[UV4:%[0-9]+]]:_(p3), [[UV5:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY2]](<3 x p3>) 793 ; CHECK: [[SELECT:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[UV]], [[UV3]] 794 ; CHECK: [[SELECT1:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV4]] 795 ; CHECK: [[SELECT2:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[UV2]], [[UV5]] 796 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x p3>) = G_BUILD_VECTOR [[SELECT]](p3), [[SELECT1]](p3), [[SELECT2]](p3) 797 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x p3>) 798 %0:_(s32) = G_CONSTANT i32 0 799 %1:_(s32) = COPY $vgpr0 800 %2:_(<3 x p3>) = COPY $vgpr1_vgpr2_vgpr3 801 %3:_(<3 x p3>) = COPY $vgpr4_vgpr5_vgpr6 802 803 %4:_(s1) = G_ICMP intpred(ne), %0, %1 804 %5:_(<3 x p3>) = G_SELECT %4, %2, %3 805 $vgpr0_vgpr1_vgpr2 = COPY %5 806 807... 808 809--- 810name: test_select_v4p3 811body: | 812 bb.0: 813 liveins: $vgpr0, $vgpr1_vgpr2_vgpr3_vgpr4, $vgpr5_vgpr6_vgpr7_vgpr8 814 815 ; CHECK-LABEL: name: test_select_v4p3 816 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 817 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 818 ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x p3>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4 819 ; CHECK: [[COPY2:%[0-9]+]]:_(<4 x p3>) = COPY $vgpr5_vgpr6_vgpr7_vgpr8 820 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 821 ; CHECK: [[UV:%[0-9]+]]:_(<2 x p3>), [[UV1:%[0-9]+]]:_(<2 x p3>) = G_UNMERGE_VALUES [[COPY1]](<4 x p3>) 822 ; CHECK: [[UV2:%[0-9]+]]:_(<2 x p3>), [[UV3:%[0-9]+]]:_(<2 x p3>) = G_UNMERGE_VALUES [[COPY2]](<4 x p3>) 823 ; CHECK: [[SELECT:%[0-9]+]]:_(<2 x p3>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 824 ; CHECK: [[SELECT1:%[0-9]+]]:_(<2 x p3>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 825 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x p3>) = G_CONCAT_VECTORS [[SELECT]](<2 x p3>), [[SELECT1]](<2 x p3>) 826 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[CONCAT_VECTORS]](<4 x p3>) 827 %0:_(s32) = G_CONSTANT i32 0 828 %1:_(s32) = COPY $vgpr0 829 %2:_(<4 x p3>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4 830 %3:_(<4 x p3>) = COPY $vgpr5_vgpr6_vgpr7_vgpr8 831 832 %4:_(s1) = G_ICMP intpred(ne), %0, %1 833 %5:_(<4 x p3>) = G_SELECT %4, %2, %3 834 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %5 835 836... 837 838--- 839name: test_select_v4p5 840body: | 841 bb.0: 842 liveins: $vgpr0, $vgpr1_vgpr2_vgpr3_vgpr4, $vgpr5_vgpr6_vgpr7_vgpr8 843 844 ; CHECK-LABEL: name: test_select_v4p5 845 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 846 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 847 ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x p5>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4 848 ; CHECK: [[COPY2:%[0-9]+]]:_(<4 x p5>) = COPY $vgpr5_vgpr6_vgpr7_vgpr8 849 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 850 ; CHECK: [[UV:%[0-9]+]]:_(<2 x p5>), [[UV1:%[0-9]+]]:_(<2 x p5>) = G_UNMERGE_VALUES [[COPY1]](<4 x p5>) 851 ; CHECK: [[UV2:%[0-9]+]]:_(<2 x p5>), [[UV3:%[0-9]+]]:_(<2 x p5>) = G_UNMERGE_VALUES [[COPY2]](<4 x p5>) 852 ; CHECK: [[SELECT:%[0-9]+]]:_(<2 x p5>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 853 ; CHECK: [[SELECT1:%[0-9]+]]:_(<2 x p5>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 854 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x p5>) = G_CONCAT_VECTORS [[SELECT]](<2 x p5>), [[SELECT1]](<2 x p5>) 855 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[CONCAT_VECTORS]](<4 x p5>) 856 %0:_(s32) = G_CONSTANT i32 0 857 %1:_(s32) = COPY $vgpr0 858 %2:_(<4 x p5>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4 859 %3:_(<4 x p5>) = COPY $vgpr5_vgpr6_vgpr7_vgpr8 860 861 %4:_(s1) = G_ICMP intpred(ne), %0, %1 862 %5:_(<4 x p5>) = G_SELECT %4, %2, %3 863 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %5 864 865... 866 867--- 868name: test_select_v2p0 869body: | 870 bb.0: 871 liveins: $vgpr0, $vgpr1_vgpr2_vgpr3_vgpr4, $vgpr5_vgpr6_vgpr7_vgpr8 872 873 ; CHECK-LABEL: name: test_select_v2p0 874 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 875 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 876 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4 877 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr5_vgpr6_vgpr7_vgpr8 878 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 879 ; CHECK: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY1]](<2 x p0>) 880 ; CHECK: [[UV2:%[0-9]+]]:_(p0), [[UV3:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY2]](<2 x p0>) 881 ; CHECK: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 882 ; CHECK: [[SELECT1:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 883 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[SELECT]](p0), [[SELECT1]](p0) 884 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p0>) 885 %0:_(s32) = G_CONSTANT i32 0 886 %1:_(s32) = COPY $vgpr0 887 %2:_(<2 x p0>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4 888 %3:_(<2 x p0>) = COPY $vgpr5_vgpr6_vgpr7_vgpr8 889 890 %4:_(s1) = G_ICMP intpred(ne), %0, %1 891 %5:_(<2 x p0>) = G_SELECT %4, %2, %3 892 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %5 893 894... 895 896--- 897name: test_select_v4p0 898body: | 899 bb.0: 900 liveins: $vgpr0, $vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8, $vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16 901 902 ; CHECK-LABEL: name: test_select_v4p0 903 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 904 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 905 ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x p0>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8 906 ; CHECK: [[COPY2:%[0-9]+]]:_(<4 x p0>) = COPY $vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16 907 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 908 ; CHECK: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0), [[UV2:%[0-9]+]]:_(p0), [[UV3:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY1]](<4 x p0>) 909 ; CHECK: [[UV4:%[0-9]+]]:_(p0), [[UV5:%[0-9]+]]:_(p0), [[UV6:%[0-9]+]]:_(p0), [[UV7:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY2]](<4 x p0>) 910 ; CHECK: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV]], [[UV4]] 911 ; CHECK: [[SELECT1:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV5]] 912 ; CHECK: [[SELECT2:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV2]], [[UV6]] 913 ; CHECK: [[SELECT3:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV3]], [[UV7]] 914 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x p0>) = G_BUILD_VECTOR [[SELECT]](p0), [[SELECT1]](p0), [[SELECT2]](p0), [[SELECT3]](p0) 915 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[BUILD_VECTOR]](<4 x p0>) 916 %0:_(s32) = G_CONSTANT i32 0 917 %1:_(s32) = COPY $vgpr0 918 %2:_(<4 x p0>) = COPY $vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8 919 %3:_(<4 x p0>) = COPY $vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16 920 921 %4:_(s1) = G_ICMP intpred(ne), %0, %1 922 %5:_(<4 x p0>) = G_SELECT %4, %2, %3 923 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %5 924 925... 926 927--- 928name: test_select_v2s96 929body: | 930 bb.0: 931 liveins: $vgpr0 932 933 ; CHECK-LABEL: name: test_select_v2s96 934 ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s96>) = G_IMPLICIT_DEF 935 ; CHECK: [[DEF1:%[0-9]+]]:_(<2 x s96>) = G_IMPLICIT_DEF 936 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 937 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 938 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]] 939 ; CHECK: [[UV:%[0-9]+]]:_(s96), [[UV1:%[0-9]+]]:_(s96) = G_UNMERGE_VALUES [[DEF]](<2 x s96>) 940 ; CHECK: [[UV2:%[0-9]+]]:_(s96), [[UV3:%[0-9]+]]:_(s96) = G_UNMERGE_VALUES [[DEF1]](<2 x s96>) 941 ; CHECK: [[EXTRACT:%[0-9]+]]:_(s64) = G_EXTRACT [[UV]](s96), 0 942 ; CHECK: [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](s96), 64 943 ; CHECK: [[EXTRACT2:%[0-9]+]]:_(s64) = G_EXTRACT [[UV2]](s96), 0 944 ; CHECK: [[EXTRACT3:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](s96), 64 945 ; CHECK: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[EXTRACT2]] 946 ; CHECK: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[EXTRACT1]], [[EXTRACT3]] 947 ; CHECK: [[DEF2:%[0-9]+]]:_(s96) = G_IMPLICIT_DEF 948 ; CHECK: [[COPY1:%[0-9]+]]:_(s96) = COPY [[DEF2]](s96) 949 ; CHECK: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY1]], [[SELECT]](s64), 0 950 ; CHECK: [[INSERT1:%[0-9]+]]:_(s96) = G_INSERT [[INSERT]], [[SELECT1]](s32), 64 951 ; CHECK: [[EXTRACT4:%[0-9]+]]:_(s64) = G_EXTRACT [[UV1]](s96), 0 952 ; CHECK: [[EXTRACT5:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](s96), 64 953 ; CHECK: [[EXTRACT6:%[0-9]+]]:_(s64) = G_EXTRACT [[UV3]](s96), 0 954 ; CHECK: [[EXTRACT7:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](s96), 64 955 ; CHECK: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[EXTRACT4]], [[EXTRACT6]] 956 ; CHECK: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[EXTRACT5]], [[EXTRACT7]] 957 ; CHECK: [[INSERT2:%[0-9]+]]:_(s96) = G_INSERT [[DEF2]], [[SELECT2]](s64), 0 958 ; CHECK: [[INSERT3:%[0-9]+]]:_(s96) = G_INSERT [[INSERT2]], [[SELECT3]](s32), 64 959 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s96>) = G_BUILD_VECTOR [[INSERT1]](s96), [[INSERT3]](s96) 960 ; CHECK: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s96>) 961 %0:_(<2 x s96>) = G_IMPLICIT_DEF 962 %1:_(<2 x s96>) = G_IMPLICIT_DEF 963 %2:_(s32) = COPY $vgpr0 964 %3:_(s32) = G_CONSTANT i32 0 965 %4:_(s1) = G_ICMP intpred(ne), %2, %3 966 %5:_(<2 x s96>) = G_SELECT %4, %0, %1 967 S_NOP 0, implicit %5 968 969... 970 971--- 972 973name: test_select_v8p0 974body: | 975 bb.0: 976 liveins: $vgpr0 977 978 ; CHECK-LABEL: name: test_select_v8p0 979 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 980 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 981 ; CHECK: [[DEF:%[0-9]+]]:_(<8 x p0>) = G_IMPLICIT_DEF 982 ; CHECK: [[DEF1:%[0-9]+]]:_(<8 x p0>) = G_IMPLICIT_DEF 983 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 984 ; CHECK: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0), [[UV2:%[0-9]+]]:_(p0), [[UV3:%[0-9]+]]:_(p0), [[UV4:%[0-9]+]]:_(p0), [[UV5:%[0-9]+]]:_(p0), [[UV6:%[0-9]+]]:_(p0), [[UV7:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[DEF]](<8 x p0>) 985 ; CHECK: [[UV8:%[0-9]+]]:_(p0), [[UV9:%[0-9]+]]:_(p0), [[UV10:%[0-9]+]]:_(p0), [[UV11:%[0-9]+]]:_(p0), [[UV12:%[0-9]+]]:_(p0), [[UV13:%[0-9]+]]:_(p0), [[UV14:%[0-9]+]]:_(p0), [[UV15:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[DEF1]](<8 x p0>) 986 ; CHECK: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV]], [[UV8]] 987 ; CHECK: [[SELECT1:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV9]] 988 ; CHECK: [[SELECT2:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV2]], [[UV10]] 989 ; CHECK: [[SELECT3:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV3]], [[UV11]] 990 ; CHECK: [[SELECT4:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV4]], [[UV12]] 991 ; CHECK: [[SELECT5:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV5]], [[UV13]] 992 ; CHECK: [[SELECT6:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV6]], [[UV14]] 993 ; CHECK: [[SELECT7:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV7]], [[UV15]] 994 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x p0>) = G_BUILD_VECTOR [[SELECT]](p0), [[SELECT1]](p0), [[SELECT2]](p0), [[SELECT3]](p0), [[SELECT4]](p0), [[SELECT5]](p0), [[SELECT6]](p0), [[SELECT7]](p0) 995 ; CHECK: S_NOP 0, implicit [[BUILD_VECTOR]](<8 x p0>) 996 %0:_(s32) = G_CONSTANT i32 0 997 %1:_(s32) = COPY $vgpr0 998 %2:_(<8 x p0>) = G_IMPLICIT_DEF 999 %3:_(<8 x p0>) = G_IMPLICIT_DEF 1000 1001 %4:_(s1) = G_ICMP intpred(ne), %0, %1 1002 %5:_(<8 x p0>) = G_SELECT %4, %2, %3 1003 S_NOP 0, implicit %5 1004... 1005--- 1006name: test_select_v2s128 1007body: | 1008 bb.0: 1009 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15, $vgpr16 1010 1011 ; CHECK-LABEL: name: test_select_v2s128 1012 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s128>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 1013 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s128>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 1014 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr16 1015 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 1016 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[C]] 1017 ; CHECK: [[UV:%[0-9]+]]:_(s128), [[UV1:%[0-9]+]]:_(s128) = G_UNMERGE_VALUES [[COPY]](<2 x s128>) 1018 ; CHECK: [[UV2:%[0-9]+]]:_(s128), [[UV3:%[0-9]+]]:_(s128) = G_UNMERGE_VALUES [[COPY1]](<2 x s128>) 1019 ; CHECK: [[UV4:%[0-9]+]]:_(s64), [[UV5:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[UV]](s128) 1020 ; CHECK: [[UV6:%[0-9]+]]:_(s64), [[UV7:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[UV2]](s128) 1021 ; CHECK: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[UV4]], [[UV6]] 1022 ; CHECK: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[UV5]], [[UV7]] 1023 ; CHECK: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[SELECT]](s64), [[SELECT1]](s64) 1024 ; CHECK: [[UV8:%[0-9]+]]:_(s64), [[UV9:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[UV1]](s128) 1025 ; CHECK: [[UV10:%[0-9]+]]:_(s64), [[UV11:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[UV3]](s128) 1026 ; CHECK: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[UV8]], [[UV10]] 1027 ; CHECK: [[SELECT3:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[UV9]], [[UV11]] 1028 ; CHECK: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[SELECT2]](s64), [[SELECT3]](s64) 1029 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s128>) = G_BUILD_VECTOR [[MV]](s128), [[MV1]](s128) 1030 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[BUILD_VECTOR]](<2 x s128>) 1031 %0:_(<2 x s128>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 , 1032 %1:_(<2 x s128>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 1033 %2:_(s32) = COPY $vgpr16 1034 %3:_(s32) = G_CONSTANT i32 0 1035 %4:_(s1) = G_ICMP intpred(ne), %2, %3 1036 %5:_(<2 x s128>) = G_SELECT %4, %0, %1 1037 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %5 1038 1039... 1040 1041--- 1042name: test_vselect_v2s32 1043body: | 1044 bb.0: 1045 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7 1046 ; CHECK-LABEL: name: test_vselect_v2s32 1047 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 1048 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3 1049 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5 1050 ; CHECK: [[COPY3:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr6_vgpr7 1051 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 1052 ; CHECK: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>) 1053 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV2]] 1054 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV3]] 1055 ; CHECK: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 1056 ; CHECK: [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 1057 ; CHECK: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[UV4]], [[UV6]] 1058 ; CHECK: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[UV5]], [[UV7]] 1059 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 1060 ; CHECK: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 1061 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1 1062 %1:_(<2 x s32>) = COPY $vgpr2_vgpr3 1063 %2:_(<2 x s32>) = COPY $vgpr4_vgpr5 1064 %3:_(<2 x s32>) = COPY $vgpr6_vgpr7 1065 1066 %4:_(<2 x s1>) = G_ICMP intpred(ne), %0, %1 1067 %5:_(<2 x s32>) = G_SELECT %4, %2, %3 1068 $vgpr0_vgpr1 = COPY %5 1069 1070... 1071 1072--- 1073name: test_vselect_v3s32 1074body: | 1075 bb.0: 1076 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5, $vgpr6_vgpr7_vgpr8 1077 ; CHECK-LABEL: name: test_vselect_v3s32 1078 ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 1079 ; CHECK: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr3_vgpr4_vgpr5 1080 ; CHECK: [[COPY2:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr6_vgpr7_vgpr8 1081 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>) 1082 ; CHECK: [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>) 1083 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV3]] 1084 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV4]] 1085 ; CHECK: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV5]] 1086 ; CHECK: [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>) 1087 ; CHECK: [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<3 x s32>) 1088 ; CHECK: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[UV6]], [[UV9]] 1089 ; CHECK: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[UV7]], [[UV10]] 1090 ; CHECK: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s1), [[UV8]], [[UV11]] 1091 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32), [[SELECT2]](s32) 1092 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>) 1093 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 1094 %1:_(<3 x s32>) = COPY $vgpr3_vgpr4_vgpr5 1095 %2:_(<3 x s32>) = COPY $vgpr6_vgpr7_vgpr8 1096 1097 %3:_(<3 x s1>) = G_ICMP intpred(ne), %0, %1 1098 %4:_(<3 x s32>) = G_SELECT %3, %1, %2 1099 $vgpr0_vgpr1_vgpr2 = COPY %4 1100 1101... 1102 1103--- 1104name: test_vselect_v4s32 1105body: | 1106 bb.0: 1107 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11 1108 ; CHECK-LABEL: name: test_vselect_v4s32 1109 ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 1110 ; CHECK: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 1111 ; CHECK: [[COPY2:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11 1112 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>) 1113 ; CHECK: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<4 x s32>) 1114 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV4]] 1115 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV5]] 1116 ; CHECK: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV6]] 1117 ; CHECK: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV3]](s32), [[UV7]] 1118 ; CHECK: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<4 x s32>) 1119 ; CHECK: [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<4 x s32>) 1120 ; CHECK: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[UV8]], [[UV12]] 1121 ; CHECK: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[UV9]], [[UV13]] 1122 ; CHECK: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s1), [[UV10]], [[UV14]] 1123 ; CHECK: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s1), [[UV11]], [[UV15]] 1124 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32), [[SELECT2]](s32), [[SELECT3]](s32) 1125 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>) 1126 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 1127 %1:_(<4 x s32>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 1128 %2:_(<4 x s32>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11 1129 1130 %3:_(<4 x s1>) = G_ICMP intpred(ne), %0, %1 1131 %4:_(<4 x s32>) = G_SELECT %3, %1, %2 1132 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %4 1133 1134... 1135 1136--- 1137name: test_vselect_v2s64 1138body: | 1139 bb.0: 1140 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11 1141 ; CHECK-LABEL: name: test_vselect_v2s64 1142 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 1143 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 1144 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11 1145 ; CHECK: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>) 1146 ; CHECK: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>) 1147 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s64), [[UV2]] 1148 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s64), [[UV3]] 1149 ; CHECK: [[UV4:%[0-9]+]]:_(s64), [[UV5:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>) 1150 ; CHECK: [[UV6:%[0-9]+]]:_(s64), [[UV7:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY2]](<2 x s64>) 1151 ; CHECK: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[UV4]], [[UV6]] 1152 ; CHECK: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s1), [[UV5]], [[UV7]] 1153 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[SELECT]](s64), [[SELECT1]](s64) 1154 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>) 1155 %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 1156 %1:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 1157 %2:_(<2 x s64>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11 1158 1159 %3:_(<2 x s1>) = G_ICMP intpred(ne), %0, %1 1160 %4:_(<2 x s64>) = G_SELECT %3, %1, %2 1161 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %4 1162 1163... 1164 1165--- 1166name: test_vselect_v2p3 1167body: | 1168 bb.0: 1169 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7 1170 ; CHECK-LABEL: name: test_vselect_v2p3 1171 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 1172 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3 1173 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr4_vgpr5 1174 ; CHECK: [[COPY3:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr6_vgpr7 1175 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 1176 ; CHECK: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>) 1177 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV2]] 1178 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV3]] 1179 ; CHECK: [[UV4:%[0-9]+]]:_(p3), [[UV5:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY2]](<2 x p3>) 1180 ; CHECK: [[UV6:%[0-9]+]]:_(p3), [[UV7:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY3]](<2 x p3>) 1181 ; CHECK: [[SELECT:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[UV4]], [[UV6]] 1182 ; CHECK: [[SELECT1:%[0-9]+]]:_(p3) = G_SELECT [[ICMP1]](s1), [[UV5]], [[UV7]] 1183 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[SELECT]](p3), [[SELECT1]](p3) 1184 ; CHECK: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x p3>) 1185 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1 1186 %1:_(<2 x s32>) = COPY $vgpr2_vgpr3 1187 %2:_(<2 x p3>) = COPY $vgpr4_vgpr5 1188 %3:_(<2 x p3>) = COPY $vgpr6_vgpr7 1189 1190 %4:_(<2 x s1>) = G_ICMP intpred(ne), %0, %1 1191 %5:_(<2 x p3>) = G_SELECT %4, %2, %3 1192 $vgpr0_vgpr1 = COPY %5 1193 1194... 1195 1196--- 1197name: test_vselect_v2p0 1198body: | 1199 bb.0: 1200 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11, $vgpr12_vgpr13_vgpr14_vgpr15 1201 1202 ; CHECK-LABEL: name: test_vselect_v2p0 1203 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 1204 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 1205 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11 1206 ; CHECK: [[COPY3:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr12_vgpr13_vgpr14_vgpr15 1207 ; CHECK: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>) 1208 ; CHECK: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>) 1209 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s64), [[UV2]] 1210 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s64), [[UV3]] 1211 ; CHECK: [[UV4:%[0-9]+]]:_(p0), [[UV5:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY2]](<2 x p0>) 1212 ; CHECK: [[UV6:%[0-9]+]]:_(p0), [[UV7:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY3]](<2 x p0>) 1213 ; CHECK: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[UV4]], [[UV6]] 1214 ; CHECK: [[SELECT1:%[0-9]+]]:_(p0) = G_SELECT [[ICMP1]](s1), [[UV5]], [[UV7]] 1215 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[SELECT]](p0), [[SELECT1]](p0) 1216 ; CHECK: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p0>) 1217 %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 1218 %1:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 1219 %2:_(<2 x p0>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11 1220 %3:_(<2 x p0>) = COPY $vgpr12_vgpr13_vgpr14_vgpr15 1221 1222 %4:_(<2 x s1>) = G_ICMP intpred(ne), %0, %1 1223 %5:_(<2 x p0>) = G_SELECT %4, %2, %3 1224 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %5 1225 1226... 1227 1228--- 1229name: test_vselect_v3s8 1230body: | 1231 bb.0: 1232 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5, $vgpr6_vgpr7_vgpr8, $vgpr9_vgpr10_vgpr11 1233 ; CHECK-LABEL: name: test_vselect_v3s8 1234 ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 1235 ; CHECK: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr3_vgpr4_vgpr5 1236 ; CHECK: [[COPY2:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr6_vgpr7_vgpr8 1237 ; CHECK: [[COPY3:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr9_vgpr10_vgpr11 1238 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>) 1239 ; CHECK: [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>) 1240 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV3]] 1241 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV4]] 1242 ; CHECK: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV5]] 1243 ; CHECK: [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<3 x s32>) 1244 ; CHECK: [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<3 x s32>) 1245 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV6]](s32) 1246 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV9]](s32) 1247 ; CHECK: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[TRUNC]], [[TRUNC1]] 1248 ; CHECK: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV7]](s32) 1249 ; CHECK: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[UV10]](s32) 1250 ; CHECK: [[SELECT1:%[0-9]+]]:_(s16) = G_SELECT [[ICMP1]](s1), [[TRUNC2]], [[TRUNC3]] 1251 ; CHECK: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[UV8]](s32) 1252 ; CHECK: [[TRUNC5:%[0-9]+]]:_(s16) = G_TRUNC [[UV11]](s32) 1253 ; CHECK: [[SELECT2:%[0-9]+]]:_(s16) = G_SELECT [[ICMP2]](s1), [[TRUNC4]], [[TRUNC5]] 1254 ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 1255 ; CHECK: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT1]](s16) 1256 ; CHECK: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT2]](s16) 1257 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ANYEXT]](s32) 1258 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ANYEXT1]](s32) 1259 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[ANYEXT2]](s32) 1260 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32) 1261 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>) 1262 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 1263 %1:_(<3 x s32>) = COPY $vgpr3_vgpr4_vgpr5 1264 %2:_(<3 x s32>) = COPY $vgpr6_vgpr7_vgpr8 1265 %3:_(<3 x s32>) = COPY $vgpr9_vgpr10_vgpr11 1266 %4:_(<3 x s1>) = G_ICMP intpred(ne), %0, %1 1267 %5:_(<3 x s8>) = G_TRUNC %2 1268 %6:_(<3 x s8>) = G_TRUNC %3 1269 %7:_(<3 x s8>) = G_SELECT %4, %5, %6 1270 %8:_(<3 x s32>) = G_ANYEXT %7 1271 $vgpr0_vgpr1_vgpr2 = COPY %8 1272 1273... 1274 1275--- 1276name: test_vselect_v3s16 1277body: | 1278 bb.0: 1279 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5, $vgpr6_vgpr7_vgpr8, $vgpr9_vgpr10_vgpr11 1280 ; CHECK-LABEL: name: test_vselect_v3s16 1281 ; CHECK: [[COPY:%[0-9]+]]:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2 1282 ; CHECK: [[COPY1:%[0-9]+]]:_(<6 x s16>) = COPY $vgpr3_vgpr4_vgpr5 1283 ; CHECK: [[COPY2:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr6_vgpr7_vgpr8 1284 ; CHECK: [[COPY3:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr9_vgpr10_vgpr11 1285 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<3 x s32>) 1286 ; CHECK: [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<3 x s32>) 1287 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV3]] 1288 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV4]] 1289 ; CHECK: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV5]] 1290 ; CHECK: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>), [[UV8:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<6 x s16>) 1291 ; CHECK: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV6]](<2 x s16>) 1292 ; CHECK: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32) 1293 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 1294 ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32) 1295 ; CHECK: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32) 1296 ; CHECK: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>) 1297 ; CHECK: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST1]](s32) 1298 ; CHECK: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32) 1299 ; CHECK: [[UV9:%[0-9]+]]:_(<2 x s16>), [[UV10:%[0-9]+]]:_(<2 x s16>), [[UV11:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<6 x s16>) 1300 ; CHECK: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV9]](<2 x s16>) 1301 ; CHECK: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST2]](s32) 1302 ; CHECK: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C]](s32) 1303 ; CHECK: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR2]](s32) 1304 ; CHECK: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV10]](<2 x s16>) 1305 ; CHECK: [[TRUNC5:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST3]](s32) 1306 ; CHECK: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C]](s32) 1307 ; CHECK: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[TRUNC]], [[TRUNC3]] 1308 ; CHECK: [[SELECT1:%[0-9]+]]:_(s16) = G_SELECT [[ICMP1]](s1), [[TRUNC1]], [[TRUNC4]] 1309 ; CHECK: [[SELECT2:%[0-9]+]]:_(s16) = G_SELECT [[ICMP2]](s1), [[TRUNC2]], [[TRUNC5]] 1310 ; CHECK: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF 1311 ; CHECK: [[DEF1:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF 1312 ; CHECK: [[DEF2:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 1313 ; CHECK: [[DEF3:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF 1314 ; CHECK: [[UV12:%[0-9]+]]:_(<2 x s16>), [[UV13:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF2]](<4 x s16>) 1315 ; CHECK: [[BITCAST4:%[0-9]+]]:_(s32) = G_BITCAST [[UV12]](<2 x s16>) 1316 ; CHECK: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST4]], [[C]](s32) 1317 ; CHECK: [[BITCAST5:%[0-9]+]]:_(s32) = G_BITCAST [[UV13]](<2 x s16>) 1318 ; CHECK: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST5]], [[C]](s32) 1319 ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[SELECT]](s16) 1320 ; CHECK: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[SELECT1]](s16) 1321 ; CHECK: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C]](s32) 1322 ; CHECK: [[OR:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL]] 1323 ; CHECK: [[BITCAST6:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) 1324 ; CHECK: [[ZEXT2:%[0-9]+]]:_(s32) = G_ZEXT [[SELECT2]](s16) 1325 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 1326 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[BITCAST4]](s32) 1327 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C1]] 1328 ; CHECK: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C]](s32) 1329 ; CHECK: [[OR1:%[0-9]+]]:_(s32) = G_OR [[ZEXT2]], [[SHL1]] 1330 ; CHECK: [[BITCAST7:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32) 1331 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) 1332 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY5]], [[C1]] 1333 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[BITCAST5]](s32) 1334 ; CHECK: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C1]] 1335 ; CHECK: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C]](s32) 1336 ; CHECK: [[OR2:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL2]] 1337 ; CHECK: [[BITCAST8:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32) 1338 ; CHECK: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BITCAST6]](<2 x s16>), [[BITCAST7]](<2 x s16>), [[BITCAST8]](<2 x s16>) 1339 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[CONCAT_VECTORS]](<6 x s16>) 1340 %0:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr2 1341 %1:_(<6 x s16>) = COPY $vgpr3_vgpr4_vgpr5 1342 %2:_(<3 x s32>) = COPY $vgpr6_vgpr7_vgpr8 1343 %3:_(<3 x s32>) = COPY $vgpr9_vgpr10_vgpr11 1344 %4:_(<3 x s1>) = G_ICMP intpred(ne), %2, %3 1345 %5:_(<3 x s16>), %6:_(<3 x s16>) = G_UNMERGE_VALUES %0 1346 %7:_(<3 x s16>), %8:_(<3 x s16>) = G_UNMERGE_VALUES %1 1347 %9:_(<3 x s16>) = G_SELECT %4, %5, %7 1348 %10:_(<3 x s16>) = G_IMPLICIT_DEF 1349 %11:_(<6 x s16>) = G_CONCAT_VECTORS %9, %10 1350 $vgpr0_vgpr1_vgpr2 = COPY %11 1351... 1352 1353--- 1354name: test_select_s1 1355body: | 1356 bb.0: 1357 liveins: $vgpr0, $vgpr1, $vgpr2 1358 1359 ; CHECK-LABEL: name: test_select_s1 1360 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 1361 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 1362 ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2 1363 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 1364 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]] 1365 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[C]] 1366 ; CHECK: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[C]] 1367 ; CHECK: [[ANYEXT:%[0-9]+]]:_(s16) = G_ANYEXT [[ICMP1]](s1) 1368 ; CHECK: [[ANYEXT1:%[0-9]+]]:_(s16) = G_ANYEXT [[ICMP2]](s1) 1369 ; CHECK: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[ANYEXT]], [[ANYEXT1]] 1370 ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 1371 ; CHECK: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 1372 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C1]] 1373 ; CHECK: $vgpr0 = COPY [[AND]](s32) 1374 %0:_(s32) = COPY $vgpr0 1375 %1:_(s32) = COPY $vgpr1 1376 %2:_(s32) = COPY $vgpr2 1377 %3:_(s32) = G_CONSTANT i32 0 1378 %4:_(s1) = G_ICMP intpred(ne), %0, %3 1379 %5:_(s1) = G_ICMP intpred(ne), %1, %3 1380 %6:_(s1) = G_ICMP intpred(ne), %2, %3 1381 %7:_(s1) = G_SELECT %4, %5, %6 1382 %8:_(s32) = G_ZEXT %7 1383 $vgpr0 = COPY %8 1384 1385... 1386 1387--- 1388name: test_select_v2s1 1389body: | 1390 bb.0: 1391 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7 1392 1393 ; CHECK-LABEL: name: test_select_v2s1 1394 ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 1395 ; CHECK: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3 1396 ; CHECK: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5 1397 ; CHECK: [[COPY3:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr6_vgpr7 1398 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 1399 ; CHECK: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 1400 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV2]] 1401 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV3]] 1402 ; CHECK: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>) 1403 ; CHECK: [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 1404 ; CHECK: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV4]](s32), [[UV6]] 1405 ; CHECK: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV5]](s32), [[UV7]] 1406 ; CHECK: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 1407 ; CHECK: [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 1408 ; CHECK: [[ICMP4:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV8]](s32), [[UV10]] 1409 ; CHECK: [[ICMP5:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV9]](s32), [[UV11]] 1410 ; CHECK: [[ANYEXT:%[0-9]+]]:_(s16) = G_ANYEXT [[ICMP2]](s1) 1411 ; CHECK: [[ANYEXT1:%[0-9]+]]:_(s16) = G_ANYEXT [[ICMP4]](s1) 1412 ; CHECK: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[ANYEXT]], [[ANYEXT1]] 1413 ; CHECK: [[ANYEXT2:%[0-9]+]]:_(s16) = G_ANYEXT [[ICMP3]](s1) 1414 ; CHECK: [[ANYEXT3:%[0-9]+]]:_(s16) = G_ANYEXT [[ICMP5]](s1) 1415 ; CHECK: [[SELECT1:%[0-9]+]]:_(s16) = G_SELECT [[ICMP1]](s1), [[ANYEXT2]], [[ANYEXT3]] 1416 ; CHECK: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 1417 ; CHECK: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT1]](s16) 1418 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 1419 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ANYEXT4]](s32) 1420 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C]] 1421 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ANYEXT5]](s32) 1422 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY5]], [[C]] 1423 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32) 1424 ; CHECK: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 1425 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1 1426 %1:_(<2 x s32>) = COPY $vgpr2_vgpr3 1427 %2:_(<2 x s32>) = COPY $vgpr4_vgpr5 1428 %3:_(<2 x s32>) = COPY $vgpr6_vgpr7 1429 %4:_(<2 x s1>) = G_ICMP intpred(ne), %0, %3 1430 %5:_(<2 x s1>) = G_ICMP intpred(ne), %1, %3 1431 %6:_(<2 x s1>) = G_ICMP intpred(ne), %2, %3 1432 %7:_(<2 x s1>) = G_SELECT %4, %5, %6 1433 %8:_(<2 x s32>) = G_ZEXT %7 1434 $vgpr0_vgpr1 = COPY %8 1435 1436... 1437 1438--- 1439name: test_select_v3s1 1440body: | 1441 bb.0: 1442 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5, $vgpr6_vgpr7_vgpr8, $vgpr9_vgpr10_vgpr11 1443 1444 ; CHECK-LABEL: name: test_select_v3s1 1445 ; CHECK: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 1446 ; CHECK: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr3_vgpr4_vgpr5 1447 ; CHECK: [[COPY2:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr6_vgpr7_vgpr8 1448 ; CHECK: [[COPY3:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr9_vgpr10_vgpr11 1449 ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>) 1450 ; CHECK: [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<3 x s32>) 1451 ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV3]] 1452 ; CHECK: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV4]] 1453 ; CHECK: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV5]] 1454 ; CHECK: [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>) 1455 ; CHECK: [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<3 x s32>) 1456 ; CHECK: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV6]](s32), [[UV9]] 1457 ; CHECK: [[ICMP4:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV7]](s32), [[UV10]] 1458 ; CHECK: [[ICMP5:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV8]](s32), [[UV11]] 1459 ; CHECK: [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<3 x s32>) 1460 ; CHECK: [[UV15:%[0-9]+]]:_(s32), [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<3 x s32>) 1461 ; CHECK: [[ICMP6:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV12]](s32), [[UV15]] 1462 ; CHECK: [[ICMP7:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV13]](s32), [[UV16]] 1463 ; CHECK: [[ICMP8:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV14]](s32), [[UV17]] 1464 ; CHECK: [[ANYEXT:%[0-9]+]]:_(s16) = G_ANYEXT [[ICMP3]](s1) 1465 ; CHECK: [[ANYEXT1:%[0-9]+]]:_(s16) = G_ANYEXT [[ICMP6]](s1) 1466 ; CHECK: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[ANYEXT]], [[ANYEXT1]] 1467 ; CHECK: [[ANYEXT2:%[0-9]+]]:_(s16) = G_ANYEXT [[ICMP4]](s1) 1468 ; CHECK: [[ANYEXT3:%[0-9]+]]:_(s16) = G_ANYEXT [[ICMP7]](s1) 1469 ; CHECK: [[SELECT1:%[0-9]+]]:_(s16) = G_SELECT [[ICMP1]](s1), [[ANYEXT2]], [[ANYEXT3]] 1470 ; CHECK: [[ANYEXT4:%[0-9]+]]:_(s16) = G_ANYEXT [[ICMP5]](s1) 1471 ; CHECK: [[ANYEXT5:%[0-9]+]]:_(s16) = G_ANYEXT [[ICMP8]](s1) 1472 ; CHECK: [[SELECT2:%[0-9]+]]:_(s16) = G_SELECT [[ICMP2]](s1), [[ANYEXT4]], [[ANYEXT5]] 1473 ; CHECK: [[ANYEXT6:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 1474 ; CHECK: [[ANYEXT7:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT1]](s16) 1475 ; CHECK: [[ANYEXT8:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT2]](s16) 1476 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 1477 ; CHECK: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ANYEXT6]](s32) 1478 ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C]] 1479 ; CHECK: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ANYEXT7]](s32) 1480 ; CHECK: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY5]], [[C]] 1481 ; CHECK: [[COPY6:%[0-9]+]]:_(s32) = COPY [[ANYEXT8]](s32) 1482 ; CHECK: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C]] 1483 ; CHECK: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32) 1484 ; CHECK: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>) 1485 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 1486 %1:_(<3 x s32>) = COPY $vgpr3_vgpr4_vgpr5 1487 %2:_(<3 x s32>) = COPY $vgpr6_vgpr7_vgpr8 1488 %3:_(<3 x s32>) = COPY $vgpr9_vgpr10_vgpr11 1489 %4:_(<3 x s1>) = G_ICMP intpred(ne), %0, %3 1490 %5:_(<3 x s1>) = G_ICMP intpred(ne), %1, %3 1491 %6:_(<3 x s1>) = G_ICMP intpred(ne), %2, %3 1492 %7:_(<3 x s1>) = G_SELECT %4, %5, %6 1493 %8:_(<3 x s32>) = G_ZEXT %7 1494 $vgpr0_vgpr1_vgpr2 = COPY %8 1495 1496... 1497