1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -O0 -march=amdgcn -mcpu=hawaii -run-pass=legalizer -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX7 %s 3# RUN: llc -O0 -march=amdgcn -mcpu=fiji -run-pass=legalizer -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX8 %s 4# RUN: llc -O0 -march=amdgcn -mcpu=gfx900 -run-pass=legalizer -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9 %s 5# RUN: llc -O0 -march=amdgcn -mcpu=gfx1010 -run-pass=legalizer -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9 %s 6 7--- 8name: test_icmp_s32 9body: | 10 bb.0: 11 liveins: $vgpr0 12 ; GFX7-LABEL: name: test_icmp_s32 13 ; GFX7: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 14 ; GFX7: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 15 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 16 ; GFX7: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]] 17 ; GFX7: $vgpr0 = COPY [[SELECT]](s32) 18 ; GFX8-LABEL: name: test_icmp_s32 19 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 20 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 21 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 22 ; GFX8: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]] 23 ; GFX8: $vgpr0 = COPY [[SELECT]](s32) 24 ; GFX9-LABEL: name: test_icmp_s32 25 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 26 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 27 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[COPY]] 28 ; GFX9: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]] 29 ; GFX9: $vgpr0 = COPY [[SELECT]](s32) 30 %0:_(s32) = G_CONSTANT i32 0 31 %1:_(s32) = COPY $vgpr0 32 %2:_(s1) = G_ICMP intpred(ne), %0, %1 33 %3:_(s32) = G_SELECT %2, %0, %1 34 $vgpr0 = COPY %3 35... 36 37--- 38name: test_icmp_s64 39body: | 40 bb.0: 41 liveins: $vgpr0_vgpr1 42 ; GFX7-LABEL: name: test_icmp_s64 43 ; GFX7: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 44 ; GFX7: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 45 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s64), [[COPY]] 46 ; GFX7: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]] 47 ; GFX7: $vgpr0_vgpr1 = COPY [[SELECT]](s64) 48 ; GFX8-LABEL: name: test_icmp_s64 49 ; GFX8: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 50 ; GFX8: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 51 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s64), [[COPY]] 52 ; GFX8: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]] 53 ; GFX8: $vgpr0_vgpr1 = COPY [[SELECT]](s64) 54 ; GFX9-LABEL: name: test_icmp_s64 55 ; GFX9: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 56 ; GFX9: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 57 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s64), [[COPY]] 58 ; GFX9: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]] 59 ; GFX9: $vgpr0_vgpr1 = COPY [[SELECT]](s64) 60 %0:_(s64) = G_CONSTANT i64 0 61 %1:_(s64) = COPY $vgpr0_vgpr1 62 %2:_(s1) = G_ICMP intpred(ne), %0, %1 63 %3:_(s64) = G_SELECT %2, %0, %1 64 $vgpr0_vgpr1 = COPY %3 65... 66 67--- 68name: test_icmp_s16 69body: | 70 bb.0: 71 liveins: $vgpr0 72 ; GFX7-LABEL: name: test_icmp_s16 73 ; GFX7: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0 74 ; GFX7: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 75 ; GFX7: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 76 ; GFX7: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 77 ; GFX7: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 78 ; GFX7: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C2]] 79 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C1]](s32), [[AND]] 80 ; GFX7: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C]], [[TRUNC]] 81 ; GFX7: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 82 ; GFX7: $vgpr0 = COPY [[ANYEXT]](s32) 83 ; GFX8-LABEL: name: test_icmp_s16 84 ; GFX8: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0 85 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 86 ; GFX8: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 87 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s16), [[TRUNC]] 88 ; GFX8: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C]], [[TRUNC]] 89 ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 90 ; GFX8: $vgpr0 = COPY [[ANYEXT]](s32) 91 ; GFX9-LABEL: name: test_icmp_s16 92 ; GFX9: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0 93 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 94 ; GFX9: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 95 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s16), [[TRUNC]] 96 ; GFX9: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C]], [[TRUNC]] 97 ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 98 ; GFX9: $vgpr0 = COPY [[ANYEXT]](s32) 99 %0:_(s16) = G_CONSTANT i16 0 100 %1:_(s32) = COPY $vgpr0 101 %2:_(s16) = G_TRUNC %1 102 %3:_(s1) = G_ICMP intpred(ne), %0, %2 103 %4:_(s16) = G_SELECT %3, %0, %2 104 %5:_(s32) = G_ANYEXT %4 105 $vgpr0 = COPY %5 106... 107 108--- 109name: test_icmp_s8 110body: | 111 bb.0: 112 liveins: $vgpr0 113 ; GFX7-LABEL: name: test_icmp_s8 114 ; GFX7: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 115 ; GFX7: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 116 ; GFX7: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 117 ; GFX7: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C]](s32) 118 ; GFX7: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 119 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[AND]] 120 ; GFX7: [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 0 121 ; GFX7: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 122 ; GFX7: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C2]], [[TRUNC]] 123 ; GFX7: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 124 ; GFX7: $vgpr0 = COPY [[ANYEXT]](s32) 125 ; GFX8-LABEL: name: test_icmp_s8 126 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 127 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 128 ; GFX8: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 129 ; GFX8: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C]](s32) 130 ; GFX8: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 131 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[AND]] 132 ; GFX8: [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 0 133 ; GFX8: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 134 ; GFX8: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C2]], [[TRUNC]] 135 ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 136 ; GFX8: $vgpr0 = COPY [[ANYEXT]](s32) 137 ; GFX9-LABEL: name: test_icmp_s8 138 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 139 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 140 ; GFX9: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255 141 ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C]](s32) 142 ; GFX9: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 143 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[AND]] 144 ; GFX9: [[C2:%[0-9]+]]:_(s16) = G_CONSTANT i16 0 145 ; GFX9: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 146 ; GFX9: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ICMP]](s1), [[C2]], [[TRUNC]] 147 ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 148 ; GFX9: $vgpr0 = COPY [[ANYEXT]](s32) 149 %0:_(s8) = G_CONSTANT i8 0 150 %1:_(s32) = COPY $vgpr0 151 %2:_(s8) = G_TRUNC %1 152 %3:_(s1) = G_ICMP intpred(ne), %0, %2 153 %4:_(s8) = G_SELECT %3, %0, %2 154 %5:_(s32) = G_ANYEXT %4 155 $vgpr0 = COPY %5 156... 157 158--- 159name: test_icmp_s24 160body: | 161 bb.0: 162 liveins: $vgpr0 163 ; GFX7-LABEL: name: test_icmp_s24 164 ; GFX7: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 165 ; GFX7: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 166 ; GFX7: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16777215 167 ; GFX7: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C]](s32) 168 ; GFX7: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 169 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[AND]] 170 ; GFX7: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]] 171 ; GFX7: $vgpr0 = COPY [[SELECT]](s32) 172 ; GFX8-LABEL: name: test_icmp_s24 173 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 174 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 175 ; GFX8: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16777215 176 ; GFX8: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C]](s32) 177 ; GFX8: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 178 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[AND]] 179 ; GFX8: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]] 180 ; GFX8: $vgpr0 = COPY [[SELECT]](s32) 181 ; GFX9-LABEL: name: test_icmp_s24 182 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 183 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 184 ; GFX9: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16777215 185 ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C]](s32) 186 ; GFX9: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 187 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[AND]] 188 ; GFX9: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[C]], [[COPY]] 189 ; GFX9: $vgpr0 = COPY [[SELECT]](s32) 190 %0:_(s24) = G_CONSTANT i24 0 191 %1:_(s32) = COPY $vgpr0 192 %2:_(s24) = G_TRUNC %1 193 %3:_(s1) = G_ICMP intpred(ne), %0, %2 194 %4:_(s24) = G_SELECT %3, %0, %2 195 %5:_(s32) = G_ANYEXT %4 196 $vgpr0 = COPY %5 197... 198 199--- 200name: test_icmp_v2s32 201body: | 202 bb.0: 203 liveins: $vgpr0_vgpr1 204 ; GFX7-LABEL: name: test_icmp_v2s32 205 ; GFX7: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 206 ; GFX7: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 207 ; GFX7: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 208 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[UV]] 209 ; GFX7: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[UV1]] 210 ; GFX7: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 211 ; GFX7: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 212 ; GFX7: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 213 ; GFX7: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C1]] 214 ; GFX7: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C1]] 215 ; GFX7: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32) 216 ; GFX7: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>) 217 ; GFX8-LABEL: name: test_icmp_v2s32 218 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 219 ; GFX8: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 220 ; GFX8: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 221 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[UV]] 222 ; GFX8: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[UV1]] 223 ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 224 ; GFX8: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 225 ; GFX8: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 226 ; GFX8: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C1]] 227 ; GFX8: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C1]] 228 ; GFX8: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32) 229 ; GFX8: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>) 230 ; GFX9-LABEL: name: test_icmp_v2s32 231 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 232 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 233 ; GFX9: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 234 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[UV]] 235 ; GFX9: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[C]](s32), [[UV1]] 236 ; GFX9: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 237 ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 238 ; GFX9: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C1]] 239 ; GFX9: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 240 ; GFX9: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C1]] 241 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32) 242 ; GFX9: S_NOP 0, implicit [[BUILD_VECTOR]](<2 x s32>) 243 %0:_(s32) = G_CONSTANT i32 0 244 %1:_(<2 x s32>) = G_BUILD_VECTOR %0, %0 245 %2:_(<2 x s32>) = COPY $vgpr0_vgpr1 246 %3:_(<2 x s1>) = G_ICMP intpred(ne), %1, %2 247 %4:_(<2 x s32>) = G_ZEXT %3 248 S_NOP 0, implicit %4 249... 250 251--- 252name: test_icmp_v3s32 253body: | 254 bb.0: 255 liveins: $vgpr0_vgpr1_vgpr2 256 257 ; GFX7-LABEL: name: test_icmp_v3s32 258 ; GFX7: [[DEF:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF 259 ; GFX7: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 260 ; GFX7: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<3 x s32>) 261 ; GFX7: [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>) 262 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV3]] 263 ; GFX7: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV4]] 264 ; GFX7: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV5]] 265 ; GFX7: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 266 ; GFX7: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 267 ; GFX7: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1) 268 ; GFX7: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 269 ; GFX7: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]] 270 ; GFX7: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C]] 271 ; GFX7: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C]] 272 ; GFX7: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32) 273 ; GFX7: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s32>) 274 ; GFX8-LABEL: name: test_icmp_v3s32 275 ; GFX8: [[DEF:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF 276 ; GFX8: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 277 ; GFX8: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<3 x s32>) 278 ; GFX8: [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>) 279 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV3]] 280 ; GFX8: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV4]] 281 ; GFX8: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV5]] 282 ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 283 ; GFX8: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 284 ; GFX8: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1) 285 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 286 ; GFX8: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]] 287 ; GFX8: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C]] 288 ; GFX8: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C]] 289 ; GFX8: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32) 290 ; GFX8: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s32>) 291 ; GFX9-LABEL: name: test_icmp_v3s32 292 ; GFX9: [[DEF:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF 293 ; GFX9: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 294 ; GFX9: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<3 x s32>) 295 ; GFX9: [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>) 296 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV3]] 297 ; GFX9: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV4]] 298 ; GFX9: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV5]] 299 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 300 ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 301 ; GFX9: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]] 302 ; GFX9: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 303 ; GFX9: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C]] 304 ; GFX9: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1) 305 ; GFX9: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C]] 306 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32) 307 ; GFX9: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s32>) 308 %0:_(<3 x s32>) = G_IMPLICIT_DEF 309 %1:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2 310 %2:_(<3 x s1>) = G_ICMP intpred(ne), %0, %1 311 %3:_(<3 x s32>) = G_ZEXT %2 312 S_NOP 0, implicit %3 313... 314 315--- 316name: test_icmp_v4s32 317body: | 318 bb.0: 319 liveins: $vgpr0_vgpr1_vgpr2_vgpr3 320 321 ; GFX7-LABEL: name: test_icmp_v4s32 322 ; GFX7: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 323 ; GFX7: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[DEF]](p1) :: (volatile load (<4 x s32>)) 324 ; GFX7: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 325 ; GFX7: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<4 x s32>) 326 ; GFX7: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>) 327 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV4]] 328 ; GFX7: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV5]] 329 ; GFX7: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV6]] 330 ; GFX7: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV3]](s32), [[UV7]] 331 ; GFX7: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 332 ; GFX7: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 333 ; GFX7: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1) 334 ; GFX7: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP3]](s1) 335 ; GFX7: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 336 ; GFX7: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]] 337 ; GFX7: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C]] 338 ; GFX7: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C]] 339 ; GFX7: [[AND3:%[0-9]+]]:_(s32) = G_AND [[ANYEXT3]], [[C]] 340 ; GFX7: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32), [[AND3]](s32) 341 ; GFX7: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s32>) 342 ; GFX8-LABEL: name: test_icmp_v4s32 343 ; GFX8: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 344 ; GFX8: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[DEF]](p1) :: (volatile load (<4 x s32>)) 345 ; GFX8: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 346 ; GFX8: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<4 x s32>) 347 ; GFX8: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>) 348 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV4]] 349 ; GFX8: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV5]] 350 ; GFX8: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV6]] 351 ; GFX8: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV3]](s32), [[UV7]] 352 ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 353 ; GFX8: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 354 ; GFX8: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1) 355 ; GFX8: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP3]](s1) 356 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 357 ; GFX8: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]] 358 ; GFX8: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C]] 359 ; GFX8: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C]] 360 ; GFX8: [[AND3:%[0-9]+]]:_(s32) = G_AND [[ANYEXT3]], [[C]] 361 ; GFX8: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32), [[AND3]](s32) 362 ; GFX8: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s32>) 363 ; GFX9-LABEL: name: test_icmp_v4s32 364 ; GFX9: [[DEF:%[0-9]+]]:_(p1) = G_IMPLICIT_DEF 365 ; GFX9: [[LOAD:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[DEF]](p1) :: (volatile load (<4 x s32>)) 366 ; GFX9: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 367 ; GFX9: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<4 x s32>) 368 ; GFX9: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>) 369 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](s32), [[UV4]] 370 ; GFX9: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](s32), [[UV5]] 371 ; GFX9: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV2]](s32), [[UV6]] 372 ; GFX9: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV3]](s32), [[UV7]] 373 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 374 ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 375 ; GFX9: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]] 376 ; GFX9: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 377 ; GFX9: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C]] 378 ; GFX9: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP2]](s1) 379 ; GFX9: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C]] 380 ; GFX9: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP3]](s1) 381 ; GFX9: [[AND3:%[0-9]+]]:_(s32) = G_AND [[ANYEXT3]], [[C]] 382 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[AND1]](s32), [[AND2]](s32), [[AND3]](s32) 383 ; GFX9: S_NOP 0, implicit [[BUILD_VECTOR]](<4 x s32>) 384 %0:_(p1) = G_IMPLICIT_DEF 385 %1:_(<4 x s32>) = G_LOAD %0 :: (volatile load (<4 x s32>)) 386 %2:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 387 %3:_(<4 x s1>) = G_ICMP intpred(ne), %1, %2 388 %4:_(<4 x s32>) = G_ZEXT %3 389 S_NOP 0, implicit %4 390 391... 392 393--- 394name: test_icmp_p0 395body: | 396 bb.0: 397 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 398 ; GFX7-LABEL: name: test_icmp_p0 399 ; GFX7: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 400 ; GFX7: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 401 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[COPY1]] 402 ; GFX7: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 403 ; GFX7: $vgpr0 = COPY [[SEXT]](s32) 404 ; GFX8-LABEL: name: test_icmp_p0 405 ; GFX8: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 406 ; GFX8: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 407 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[COPY1]] 408 ; GFX8: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 409 ; GFX8: $vgpr0 = COPY [[SEXT]](s32) 410 ; GFX9-LABEL: name: test_icmp_p0 411 ; GFX9: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 412 ; GFX9: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 413 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[COPY1]] 414 ; GFX9: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 415 ; GFX9: $vgpr0 = COPY [[SEXT]](s32) 416 %0:_(p0) = COPY $vgpr0_vgpr1 417 %1:_(p0) = COPY $vgpr0_vgpr1 418 %2:_(s1) = G_ICMP intpred(ne), %0, %1 419 %3:_(s32) = G_SEXT %2 420 $vgpr0 = COPY %3 421... 422 423--- 424name: test_icmp_p1 425body: | 426 bb.0: 427 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 428 ; GFX7-LABEL: name: test_icmp_p1 429 ; GFX7: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 430 ; GFX7: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 431 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p1), [[COPY1]] 432 ; GFX7: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 433 ; GFX7: $vgpr0 = COPY [[SEXT]](s32) 434 ; GFX8-LABEL: name: test_icmp_p1 435 ; GFX8: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 436 ; GFX8: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 437 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p1), [[COPY1]] 438 ; GFX8: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 439 ; GFX8: $vgpr0 = COPY [[SEXT]](s32) 440 ; GFX9-LABEL: name: test_icmp_p1 441 ; GFX9: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 442 ; GFX9: [[COPY1:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 443 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p1), [[COPY1]] 444 ; GFX9: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 445 ; GFX9: $vgpr0 = COPY [[SEXT]](s32) 446 %0:_(p1) = COPY $vgpr0_vgpr1 447 %1:_(p1) = COPY $vgpr0_vgpr1 448 %2:_(s1) = G_ICMP intpred(ne), %0, %1 449 %3:_(s32) = G_SEXT %2 450 $vgpr0 = COPY %3 451... 452 453--- 454name: test_icmp_p2 455body: | 456 bb.0: 457 liveins: $vgpr0, $vgpr1 458 459 ; GFX7-LABEL: name: test_icmp_p2 460 ; GFX7: [[COPY:%[0-9]+]]:_(p2) = COPY $vgpr0 461 ; GFX7: [[COPY1:%[0-9]+]]:_(p2) = COPY $vgpr1 462 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p2), [[COPY1]] 463 ; GFX7: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 464 ; GFX7: $vgpr0 = COPY [[SEXT]](s32) 465 ; GFX8-LABEL: name: test_icmp_p2 466 ; GFX8: [[COPY:%[0-9]+]]:_(p2) = COPY $vgpr0 467 ; GFX8: [[COPY1:%[0-9]+]]:_(p2) = COPY $vgpr1 468 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p2), [[COPY1]] 469 ; GFX8: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 470 ; GFX8: $vgpr0 = COPY [[SEXT]](s32) 471 ; GFX9-LABEL: name: test_icmp_p2 472 ; GFX9: [[COPY:%[0-9]+]]:_(p2) = COPY $vgpr0 473 ; GFX9: [[COPY1:%[0-9]+]]:_(p2) = COPY $vgpr1 474 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p2), [[COPY1]] 475 ; GFX9: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 476 ; GFX9: $vgpr0 = COPY [[SEXT]](s32) 477 %0:_(p2) = COPY $vgpr0 478 %1:_(p2) = COPY $vgpr1 479 %2:_(s1) = G_ICMP intpred(ne), %0, %1 480 %3:_(s32) = G_SEXT %2 481 $vgpr0 = COPY %3 482... 483 484--- 485name: test_icmp_p3 486body: | 487 bb.0: 488 liveins: $vgpr0, $vgpr1 489 490 ; GFX7-LABEL: name: test_icmp_p3 491 ; GFX7: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 492 ; GFX7: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1 493 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p3), [[COPY1]] 494 ; GFX7: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 495 ; GFX7: $vgpr0 = COPY [[SEXT]](s32) 496 ; GFX8-LABEL: name: test_icmp_p3 497 ; GFX8: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 498 ; GFX8: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1 499 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p3), [[COPY1]] 500 ; GFX8: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 501 ; GFX8: $vgpr0 = COPY [[SEXT]](s32) 502 ; GFX9-LABEL: name: test_icmp_p3 503 ; GFX9: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 504 ; GFX9: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr1 505 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p3), [[COPY1]] 506 ; GFX9: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 507 ; GFX9: $vgpr0 = COPY [[SEXT]](s32) 508 %0:_(p3) = COPY $vgpr0 509 %1:_(p3) = COPY $vgpr1 510 %2:_(s1) = G_ICMP intpred(ne), %0, %1 511 %3:_(s32) = G_SEXT %2 512 $vgpr0 = COPY %3 513... 514 515--- 516name: test_icmp_p4 517body: | 518 bb.0: 519 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 520 ; GFX7-LABEL: name: test_icmp_p4 521 ; GFX7: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1 522 ; GFX7: [[COPY1:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1 523 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p4), [[COPY1]] 524 ; GFX7: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 525 ; GFX7: $vgpr0 = COPY [[SEXT]](s32) 526 ; GFX8-LABEL: name: test_icmp_p4 527 ; GFX8: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1 528 ; GFX8: [[COPY1:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1 529 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p4), [[COPY1]] 530 ; GFX8: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 531 ; GFX8: $vgpr0 = COPY [[SEXT]](s32) 532 ; GFX9-LABEL: name: test_icmp_p4 533 ; GFX9: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1 534 ; GFX9: [[COPY1:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1 535 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p4), [[COPY1]] 536 ; GFX9: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 537 ; GFX9: $vgpr0 = COPY [[SEXT]](s32) 538 %0:_(p4) = COPY $vgpr0_vgpr1 539 %1:_(p4) = COPY $vgpr0_vgpr1 540 %2:_(s1) = G_ICMP intpred(ne), %0, %1 541 %3:_(s32) = G_SEXT %2 542 $vgpr0 = COPY %3 543... 544 545--- 546name: test_icmp_p5 547body: | 548 bb.0: 549 liveins: $vgpr0, $vgpr1 550 551 ; GFX7-LABEL: name: test_icmp_p5 552 ; GFX7: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0 553 ; GFX7: [[COPY1:%[0-9]+]]:_(p5) = COPY $vgpr1 554 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p5), [[COPY1]] 555 ; GFX7: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 556 ; GFX7: $vgpr0 = COPY [[SEXT]](s32) 557 ; GFX8-LABEL: name: test_icmp_p5 558 ; GFX8: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0 559 ; GFX8: [[COPY1:%[0-9]+]]:_(p5) = COPY $vgpr1 560 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p5), [[COPY1]] 561 ; GFX8: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 562 ; GFX8: $vgpr0 = COPY [[SEXT]](s32) 563 ; GFX9-LABEL: name: test_icmp_p5 564 ; GFX9: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0 565 ; GFX9: [[COPY1:%[0-9]+]]:_(p5) = COPY $vgpr1 566 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p5), [[COPY1]] 567 ; GFX9: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 568 ; GFX9: $vgpr0 = COPY [[SEXT]](s32) 569 %0:_(p5) = COPY $vgpr0 570 %1:_(p5) = COPY $vgpr1 571 %2:_(s1) = G_ICMP intpred(ne), %0, %1 572 %3:_(s32) = G_SEXT %2 573 $vgpr0 = COPY %3 574... 575 576--- 577name: test_icmp_p999 578body: | 579 bb.0: 580 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 581 ; GFX7-LABEL: name: test_icmp_p999 582 ; GFX7: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1 583 ; GFX7: [[COPY1:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1 584 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p999), [[COPY1]] 585 ; GFX7: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 586 ; GFX7: $vgpr0 = COPY [[SEXT]](s32) 587 ; GFX8-LABEL: name: test_icmp_p999 588 ; GFX8: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1 589 ; GFX8: [[COPY1:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1 590 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p999), [[COPY1]] 591 ; GFX8: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 592 ; GFX8: $vgpr0 = COPY [[SEXT]](s32) 593 ; GFX9-LABEL: name: test_icmp_p999 594 ; GFX9: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1 595 ; GFX9: [[COPY1:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1 596 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p999), [[COPY1]] 597 ; GFX9: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[ICMP]](s1) 598 ; GFX9: $vgpr0 = COPY [[SEXT]](s32) 599 %0:_(p999) = COPY $vgpr0_vgpr1 600 %1:_(p999) = COPY $vgpr0_vgpr1 601 %2:_(s1) = G_ICMP intpred(ne), %0, %1 602 %3:_(s32) = G_SEXT %2 603 $vgpr0 = COPY %3 604... 605 606--- 607name: test_icmp_v2p3 608body: | 609 bb.0: 610 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 611 ; GFX7-LABEL: name: test_icmp_v2p3 612 ; GFX7: [[COPY:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1 613 ; GFX7: [[COPY1:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1 614 ; GFX7: [[UV:%[0-9]+]]:_(p3), [[UV1:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY]](<2 x p3>) 615 ; GFX7: [[UV2:%[0-9]+]]:_(p3), [[UV3:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY1]](<2 x p3>) 616 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p3), [[UV2]] 617 ; GFX7: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p3), [[UV3]] 618 ; GFX7: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 619 ; GFX7: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 620 ; GFX7: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT]], 1 621 ; GFX7: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT1]], 1 622 ; GFX7: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SEXT_INREG]](s32), [[SEXT_INREG1]](s32) 623 ; GFX7: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 624 ; GFX8-LABEL: name: test_icmp_v2p3 625 ; GFX8: [[COPY:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1 626 ; GFX8: [[COPY1:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1 627 ; GFX8: [[UV:%[0-9]+]]:_(p3), [[UV1:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY]](<2 x p3>) 628 ; GFX8: [[UV2:%[0-9]+]]:_(p3), [[UV3:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY1]](<2 x p3>) 629 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p3), [[UV2]] 630 ; GFX8: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p3), [[UV3]] 631 ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 632 ; GFX8: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 633 ; GFX8: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT]], 1 634 ; GFX8: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT1]], 1 635 ; GFX8: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SEXT_INREG]](s32), [[SEXT_INREG1]](s32) 636 ; GFX8: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 637 ; GFX9-LABEL: name: test_icmp_v2p3 638 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1 639 ; GFX9: [[COPY1:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1 640 ; GFX9: [[UV:%[0-9]+]]:_(p3), [[UV1:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY]](<2 x p3>) 641 ; GFX9: [[UV2:%[0-9]+]]:_(p3), [[UV3:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY1]](<2 x p3>) 642 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p3), [[UV2]] 643 ; GFX9: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p3), [[UV3]] 644 ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 645 ; GFX9: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT]], 1 646 ; GFX9: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 647 ; GFX9: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT1]], 1 648 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SEXT_INREG]](s32), [[SEXT_INREG1]](s32) 649 ; GFX9: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 650 %0:_(<2 x p3>) = COPY $vgpr0_vgpr1 651 %1:_(<2 x p3>) = COPY $vgpr0_vgpr1 652 %2:_(<2 x s1>) = G_ICMP intpred(ne), %0, %1 653 %3:_(<2 x s32>) = G_SEXT %2 654 $vgpr0_vgpr1 = COPY %3 655... 656 657--- 658name: test_icmp_v2p999 659body: | 660 bb.0: 661 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7 662 ; GFX7-LABEL: name: test_icmp_v2p999 663 ; GFX7: [[COPY:%[0-9]+]]:_(<2 x p999>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 664 ; GFX7: [[COPY1:%[0-9]+]]:_(<2 x p999>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 665 ; GFX7: [[UV:%[0-9]+]]:_(p999), [[UV1:%[0-9]+]]:_(p999) = G_UNMERGE_VALUES [[COPY]](<2 x p999>) 666 ; GFX7: [[UV2:%[0-9]+]]:_(p999), [[UV3:%[0-9]+]]:_(p999) = G_UNMERGE_VALUES [[COPY1]](<2 x p999>) 667 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p999), [[UV2]] 668 ; GFX7: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p999), [[UV3]] 669 ; GFX7: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 670 ; GFX7: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 671 ; GFX7: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT]], 1 672 ; GFX7: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT1]], 1 673 ; GFX7: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SEXT_INREG]](s32), [[SEXT_INREG1]](s32) 674 ; GFX7: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 675 ; GFX8-LABEL: name: test_icmp_v2p999 676 ; GFX8: [[COPY:%[0-9]+]]:_(<2 x p999>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 677 ; GFX8: [[COPY1:%[0-9]+]]:_(<2 x p999>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 678 ; GFX8: [[UV:%[0-9]+]]:_(p999), [[UV1:%[0-9]+]]:_(p999) = G_UNMERGE_VALUES [[COPY]](<2 x p999>) 679 ; GFX8: [[UV2:%[0-9]+]]:_(p999), [[UV3:%[0-9]+]]:_(p999) = G_UNMERGE_VALUES [[COPY1]](<2 x p999>) 680 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p999), [[UV2]] 681 ; GFX8: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p999), [[UV3]] 682 ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 683 ; GFX8: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 684 ; GFX8: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT]], 1 685 ; GFX8: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT1]], 1 686 ; GFX8: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SEXT_INREG]](s32), [[SEXT_INREG1]](s32) 687 ; GFX8: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 688 ; GFX9-LABEL: name: test_icmp_v2p999 689 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x p999>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 690 ; GFX9: [[COPY1:%[0-9]+]]:_(<2 x p999>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 691 ; GFX9: [[UV:%[0-9]+]]:_(p999), [[UV1:%[0-9]+]]:_(p999) = G_UNMERGE_VALUES [[COPY]](<2 x p999>) 692 ; GFX9: [[UV2:%[0-9]+]]:_(p999), [[UV3:%[0-9]+]]:_(p999) = G_UNMERGE_VALUES [[COPY1]](<2 x p999>) 693 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p999), [[UV2]] 694 ; GFX9: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p999), [[UV3]] 695 ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP]](s1) 696 ; GFX9: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT]], 1 697 ; GFX9: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ICMP1]](s1) 698 ; GFX9: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[ANYEXT1]], 1 699 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SEXT_INREG]](s32), [[SEXT_INREG1]](s32) 700 ; GFX9: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 701 %0:_(<2 x p999>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 702 %1:_(<2 x p999>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 703 %2:_(<2 x s1>) = G_ICMP intpred(ne), %0, %1 704 %3:_(<2 x s32>) = G_SEXT %2 705 $vgpr0_vgpr1 = COPY %3 706... 707 708--- 709name: test_icmp_v2s16 710body: | 711 bb.0: 712 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5 713 ; GFX7-LABEL: name: test_icmp_v2s16 714 ; GFX7: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 715 ; GFX7: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 716 ; GFX7: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3 717 ; GFX7: [[COPY3:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5 718 ; GFX7: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>) 719 ; GFX7: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 720 ; GFX7: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32) 721 ; GFX7: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>) 722 ; GFX7: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32) 723 ; GFX7: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 724 ; GFX7: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]] 725 ; GFX7: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST1]], [[C1]] 726 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[AND]](s32), [[AND1]] 727 ; GFX7: [[AND2:%[0-9]+]]:_(s32) = G_AND [[LSHR]], [[C1]] 728 ; GFX7: [[AND3:%[0-9]+]]:_(s32) = G_AND [[LSHR1]], [[C1]] 729 ; GFX7: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[AND2]](s32), [[AND3]] 730 ; GFX7: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 731 ; GFX7: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 732 ; GFX7: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 733 ; GFX7: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[UV1]], [[UV3]] 734 ; GFX7: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 735 ; GFX7: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 736 ; GFX8-LABEL: name: test_icmp_v2s16 737 ; GFX8: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 738 ; GFX8: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 739 ; GFX8: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3 740 ; GFX8: [[COPY3:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5 741 ; GFX8: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>) 742 ; GFX8: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32) 743 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 744 ; GFX8: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32) 745 ; GFX8: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32) 746 ; GFX8: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>) 747 ; GFX8: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST1]](s32) 748 ; GFX8: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32) 749 ; GFX8: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR1]](s32) 750 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[TRUNC]](s16), [[TRUNC2]] 751 ; GFX8: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[TRUNC1]](s16), [[TRUNC3]] 752 ; GFX8: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 753 ; GFX8: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 754 ; GFX8: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 755 ; GFX8: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[UV1]], [[UV3]] 756 ; GFX8: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 757 ; GFX8: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 758 ; GFX9-LABEL: name: test_icmp_v2s16 759 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 760 ; GFX9: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 761 ; GFX9: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3 762 ; GFX9: [[COPY3:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5 763 ; GFX9: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>) 764 ; GFX9: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32) 765 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 766 ; GFX9: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32) 767 ; GFX9: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32) 768 ; GFX9: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>) 769 ; GFX9: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST1]](s32) 770 ; GFX9: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32) 771 ; GFX9: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR1]](s32) 772 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[TRUNC]](s16), [[TRUNC2]] 773 ; GFX9: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[TRUNC1]](s16), [[TRUNC3]] 774 ; GFX9: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 775 ; GFX9: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 776 ; GFX9: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 777 ; GFX9: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[UV1]], [[UV3]] 778 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 779 ; GFX9: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 780 %0:_(<2 x s16>) = COPY $vgpr0 781 %1:_(<2 x s16>) = COPY $vgpr1 782 %2:_(<2 x s32>) = COPY $vgpr2_vgpr3 783 %3:_(<2 x s32>) = COPY $vgpr4_vgpr5 784 %4:_(<2 x s1>) = G_ICMP intpred(ne), %0, %1 785 %5:_(<2 x s32>) = G_SELECT %4, %2, %3 786 $vgpr0_vgpr1 = COPY %5 787... 788 789--- 790name: test_icmp_s33 791body: | 792 bb.0: 793 liveins: $vgpr0_vgpr1 794 ; GFX7-LABEL: name: test_icmp_s33 795 ; GFX7: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 796 ; GFX7: [[COPY:%[0-9]+]]:_(s64) = COPY [[C]](s64) 797 ; GFX7: [[COPY1:%[0-9]+]]:_(s64) = COPY [[C]](s64) 798 ; GFX7: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]] 799 ; GFX7: S_ENDPGM 0, implicit [[ICMP]](s1) 800 ; GFX8-LABEL: name: test_icmp_s33 801 ; GFX8: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 802 ; GFX8: [[COPY:%[0-9]+]]:_(s64) = COPY [[C]](s64) 803 ; GFX8: [[COPY1:%[0-9]+]]:_(s64) = COPY [[C]](s64) 804 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]] 805 ; GFX8: S_ENDPGM 0, implicit [[ICMP]](s1) 806 ; GFX9-LABEL: name: test_icmp_s33 807 ; GFX9: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 808 ; GFX9: [[COPY:%[0-9]+]]:_(s64) = COPY [[C]](s64) 809 ; GFX9: [[COPY1:%[0-9]+]]:_(s64) = COPY [[C]](s64) 810 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[COPY1]] 811 ; GFX9: S_ENDPGM 0, implicit [[ICMP]](s1) 812 %0:_(s64) = COPY $vgpr0_vgpr1 813 %1:_(s33) = G_TRUNC %0 814 %2:_(s33) = G_CONSTANT i33 0 815 %3:_(s1) = G_ICMP intpred(ne), %2, %2 816 S_ENDPGM 0, implicit %3 817... 818