557 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE64 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE32 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefixes=GFX11-TRUE16 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefixes=GFX11-FAKE16 %s6# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefixes=GFX12-TRUE16 %s7# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefixes=GFX12-FAKE16 %s8 9---10 11name: icmp_eq_s16_sv12legalized: true13regBankSelected: true14 15body: |16 bb.0:17 liveins: $sgpr0, $vgpr018 19 ; WAVE64-LABEL: name: icmp_eq_s16_sv20 ; WAVE64: liveins: $sgpr0, $vgpr021 ; WAVE64-NEXT: {{ $}}22 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr023 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr024 ; WAVE64-NEXT: [[V_CMP_EQ_U16_e64_:%[0-9]+]]:sreg_64 = V_CMP_EQ_U16_e64 [[COPY]], [[COPY1]], implicit $exec25 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_e64_]]26 ;27 ; WAVE32-LABEL: name: icmp_eq_s16_sv28 ; WAVE32: liveins: $sgpr0, $vgpr029 ; WAVE32-NEXT: {{ $}}30 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr031 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr032 ; WAVE32-NEXT: [[V_CMP_EQ_U16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_e64 [[COPY]], [[COPY1]], implicit $exec33 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_e64_]]34 ;35 ; GFX11-TRUE16-LABEL: name: icmp_eq_s16_sv36 ; GFX11-TRUE16: liveins: $sgpr0, $vgpr037 ; GFX11-TRUE16-NEXT: {{ $}}38 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr039 ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr040 ; GFX11-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo1641 ; GFX11-TRUE16-NEXT: [[V_CMP_EQ_U16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_t16_e64 0, [[COPY]], 0, [[COPY2]], 0, implicit $exec42 ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_t16_e64_]]43 ;44 ; GFX11-FAKE16-LABEL: name: icmp_eq_s16_sv45 ; GFX11-FAKE16: liveins: $sgpr0, $vgpr046 ; GFX11-FAKE16-NEXT: {{ $}}47 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr048 ; GFX11-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr049 ; GFX11-FAKE16-NEXT: [[V_CMP_EQ_U16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec50 ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_fake16_e64_]]51 ;52 ; GFX12-TRUE16-LABEL: name: icmp_eq_s16_sv53 ; GFX12-TRUE16: liveins: $sgpr0, $vgpr054 ; GFX12-TRUE16-NEXT: {{ $}}55 ; GFX12-TRUE16-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr056 ; GFX12-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr057 ; GFX12-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo1658 ; GFX12-TRUE16-NEXT: [[V_CMP_EQ_U16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_t16_e64 0, [[COPY]], 0, [[COPY2]], 0, implicit $exec59 ; GFX12-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_t16_e64_]]60 ;61 ; GFX12-FAKE16-LABEL: name: icmp_eq_s16_sv62 ; GFX12-FAKE16: liveins: $sgpr0, $vgpr063 ; GFX12-FAKE16-NEXT: {{ $}}64 ; GFX12-FAKE16-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr065 ; GFX12-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr066 ; GFX12-FAKE16-NEXT: [[V_CMP_EQ_U16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec67 ; GFX12-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_fake16_e64_]]68 %0:sgpr(s32) = COPY $sgpr069 %1:vgpr(s32) = COPY $vgpr070 %2:sgpr(s16) = G_TRUNC %071 %3:vgpr(s16) = G_TRUNC %172 %4:vcc(s1) = G_ICMP intpred(eq), %2, %373 S_ENDPGM 0, implicit %474...75 76---77 78name: icmp_eq_s16_vs79legalized: true80regBankSelected: true81 82body: |83 bb.0:84 liveins: $sgpr0, $vgpr085 86 ; WAVE64-LABEL: name: icmp_eq_s16_vs87 ; WAVE64: liveins: $sgpr0, $vgpr088 ; WAVE64-NEXT: {{ $}}89 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr090 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr091 ; WAVE64-NEXT: [[V_CMP_EQ_U16_e64_:%[0-9]+]]:sreg_64 = V_CMP_EQ_U16_e64 [[COPY]], [[COPY1]], implicit $exec92 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_e64_]]93 ;94 ; WAVE32-LABEL: name: icmp_eq_s16_vs95 ; WAVE32: liveins: $sgpr0, $vgpr096 ; WAVE32-NEXT: {{ $}}97 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr098 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr099 ; WAVE32-NEXT: [[V_CMP_EQ_U16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_e64 [[COPY]], [[COPY1]], implicit $exec100 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_e64_]]101 ;102 ; GFX11-TRUE16-LABEL: name: icmp_eq_s16_vs103 ; GFX11-TRUE16: liveins: $sgpr0, $vgpr0104 ; GFX11-TRUE16-NEXT: {{ $}}105 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0106 ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0107 ; GFX11-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16108 ; GFX11-TRUE16-NEXT: [[V_CMP_EQ_U16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_t16_e64 0, [[COPY2]], 0, [[COPY1]], 0, implicit $exec109 ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_t16_e64_]]110 ;111 ; GFX11-FAKE16-LABEL: name: icmp_eq_s16_vs112 ; GFX11-FAKE16: liveins: $sgpr0, $vgpr0113 ; GFX11-FAKE16-NEXT: {{ $}}114 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0115 ; GFX11-FAKE16-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0116 ; GFX11-FAKE16-NEXT: [[V_CMP_EQ_U16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec117 ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_fake16_e64_]]118 ;119 ; GFX12-TRUE16-LABEL: name: icmp_eq_s16_vs120 ; GFX12-TRUE16: liveins: $sgpr0, $vgpr0121 ; GFX12-TRUE16-NEXT: {{ $}}122 ; GFX12-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0123 ; GFX12-TRUE16-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0124 ; GFX12-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16125 ; GFX12-TRUE16-NEXT: [[V_CMP_EQ_U16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_t16_e64 0, [[COPY2]], 0, [[COPY1]], 0, implicit $exec126 ; GFX12-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_t16_e64_]]127 ;128 ; GFX12-FAKE16-LABEL: name: icmp_eq_s16_vs129 ; GFX12-FAKE16: liveins: $sgpr0, $vgpr0130 ; GFX12-FAKE16-NEXT: {{ $}}131 ; GFX12-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0132 ; GFX12-FAKE16-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0133 ; GFX12-FAKE16-NEXT: [[V_CMP_EQ_U16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec134 ; GFX12-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_fake16_e64_]]135 %0:vgpr(s32) = COPY $vgpr0136 %1:sgpr(s32) = COPY $sgpr0137 %2:vgpr(s16) = G_TRUNC %0138 %3:sgpr(s16) = G_TRUNC %1139 %4:vcc(s1) = G_ICMP intpred(eq), %2, %3140 S_ENDPGM 0, implicit %4141...142 143---144 145name: icmp_eq_s16_vv146legalized: true147regBankSelected: true148 149body: |150 bb.0:151 liveins: $vgpr0, $vgpr1152 153 ; WAVE64-LABEL: name: icmp_eq_s16_vv154 ; WAVE64: liveins: $vgpr0, $vgpr1155 ; WAVE64-NEXT: {{ $}}156 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0157 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1158 ; WAVE64-NEXT: [[V_CMP_EQ_U16_e64_:%[0-9]+]]:sreg_64 = V_CMP_EQ_U16_e64 [[COPY]], [[COPY1]], implicit $exec159 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_e64_]]160 ;161 ; WAVE32-LABEL: name: icmp_eq_s16_vv162 ; WAVE32: liveins: $vgpr0, $vgpr1163 ; WAVE32-NEXT: {{ $}}164 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0165 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1166 ; WAVE32-NEXT: [[V_CMP_EQ_U16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_e64 [[COPY]], [[COPY1]], implicit $exec167 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_e64_]]168 ;169 ; GFX11-TRUE16-LABEL: name: icmp_eq_s16_vv170 ; GFX11-TRUE16: liveins: $vgpr0, $vgpr1171 ; GFX11-TRUE16-NEXT: {{ $}}172 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0173 ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1174 ; GFX11-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16175 ; GFX11-TRUE16-NEXT: [[COPY3:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo16176 ; GFX11-TRUE16-NEXT: [[V_CMP_EQ_U16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_t16_e64 0, [[COPY2]], 0, [[COPY3]], 0, implicit $exec177 ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_t16_e64_]]178 ;179 ; GFX11-FAKE16-LABEL: name: icmp_eq_s16_vv180 ; GFX11-FAKE16: liveins: $vgpr0, $vgpr1181 ; GFX11-FAKE16-NEXT: {{ $}}182 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0183 ; GFX11-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1184 ; GFX11-FAKE16-NEXT: [[V_CMP_EQ_U16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec185 ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_fake16_e64_]]186 ;187 ; GFX12-TRUE16-LABEL: name: icmp_eq_s16_vv188 ; GFX12-TRUE16: liveins: $vgpr0, $vgpr1189 ; GFX12-TRUE16-NEXT: {{ $}}190 ; GFX12-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0191 ; GFX12-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1192 ; GFX12-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16193 ; GFX12-TRUE16-NEXT: [[COPY3:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo16194 ; GFX12-TRUE16-NEXT: [[V_CMP_EQ_U16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_t16_e64 0, [[COPY2]], 0, [[COPY3]], 0, implicit $exec195 ; GFX12-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_t16_e64_]]196 ;197 ; GFX12-FAKE16-LABEL: name: icmp_eq_s16_vv198 ; GFX12-FAKE16: liveins: $vgpr0, $vgpr1199 ; GFX12-FAKE16-NEXT: {{ $}}200 ; GFX12-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0201 ; GFX12-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1202 ; GFX12-FAKE16-NEXT: [[V_CMP_EQ_U16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_EQ_U16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec203 ; GFX12-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_U16_fake16_e64_]]204 %0:vgpr(s32) = COPY $vgpr0205 %1:vgpr(s32) = COPY $vgpr1206 %2:vgpr(s16) = G_TRUNC %0207 %3:vgpr(s16) = G_TRUNC %1208 %4:vcc(s1) = G_ICMP intpred(eq), %2, %3209 S_ENDPGM 0, implicit %4210...211 212---213 214name: icmp_ne_s16_vv215legalized: true216regBankSelected: true217 218body: |219 bb.0:220 liveins: $vgpr0, $vgpr1221 222 ; WAVE64-LABEL: name: icmp_ne_s16_vv223 ; WAVE64: liveins: $vgpr0, $vgpr1224 ; WAVE64-NEXT: {{ $}}225 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0226 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1227 ; WAVE64-NEXT: [[V_CMP_NE_U16_e64_:%[0-9]+]]:sreg_64 = V_CMP_NE_U16_e64 [[COPY]], [[COPY1]], implicit $exec228 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_CMP_NE_U16_e64_]]229 ;230 ; WAVE32-LABEL: name: icmp_ne_s16_vv231 ; WAVE32: liveins: $vgpr0, $vgpr1232 ; WAVE32-NEXT: {{ $}}233 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0234 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1235 ; WAVE32-NEXT: [[V_CMP_NE_U16_e64_:%[0-9]+]]:sreg_32 = V_CMP_NE_U16_e64 [[COPY]], [[COPY1]], implicit $exec236 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_CMP_NE_U16_e64_]]237 ;238 ; GFX11-TRUE16-LABEL: name: icmp_ne_s16_vv239 ; GFX11-TRUE16: liveins: $vgpr0, $vgpr1240 ; GFX11-TRUE16-NEXT: {{ $}}241 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0242 ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1243 ; GFX11-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16244 ; GFX11-TRUE16-NEXT: [[COPY3:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo16245 ; GFX11-TRUE16-NEXT: [[V_CMP_NE_U16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_NE_U16_t16_e64 0, [[COPY2]], 0, [[COPY3]], 0, implicit $exec246 ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_NE_U16_t16_e64_]]247 ;248 ; GFX11-FAKE16-LABEL: name: icmp_ne_s16_vv249 ; GFX11-FAKE16: liveins: $vgpr0, $vgpr1250 ; GFX11-FAKE16-NEXT: {{ $}}251 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0252 ; GFX11-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1253 ; GFX11-FAKE16-NEXT: [[V_CMP_NE_U16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_NE_U16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec254 ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_NE_U16_fake16_e64_]]255 ;256 ; GFX12-TRUE16-LABEL: name: icmp_ne_s16_vv257 ; GFX12-TRUE16: liveins: $vgpr0, $vgpr1258 ; GFX12-TRUE16-NEXT: {{ $}}259 ; GFX12-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0260 ; GFX12-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1261 ; GFX12-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16262 ; GFX12-TRUE16-NEXT: [[COPY3:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo16263 ; GFX12-TRUE16-NEXT: [[V_CMP_NE_U16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_NE_U16_t16_e64 0, [[COPY2]], 0, [[COPY3]], 0, implicit $exec264 ; GFX12-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_NE_U16_t16_e64_]]265 ;266 ; GFX12-FAKE16-LABEL: name: icmp_ne_s16_vv267 ; GFX12-FAKE16: liveins: $vgpr0, $vgpr1268 ; GFX12-FAKE16-NEXT: {{ $}}269 ; GFX12-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0270 ; GFX12-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1271 ; GFX12-FAKE16-NEXT: [[V_CMP_NE_U16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_NE_U16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec272 ; GFX12-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_NE_U16_fake16_e64_]]273 %0:vgpr(s32) = COPY $vgpr0274 %1:vgpr(s32) = COPY $vgpr1275 %2:vgpr(s16) = G_TRUNC %0276 %3:vgpr(s16) = G_TRUNC %1277 %4:vcc(s1) = G_ICMP intpred(ne), %2, %3278 S_ENDPGM 0, implicit %4279...280 281---282 283name: icmp_slt_s16_vv284legalized: true285regBankSelected: true286 287body: |288 bb.0:289 liveins: $vgpr0, $vgpr1290 291 ; WAVE64-LABEL: name: icmp_slt_s16_vv292 ; WAVE64: liveins: $vgpr0, $vgpr1293 ; WAVE64-NEXT: {{ $}}294 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0295 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1296 ; WAVE64-NEXT: [[V_CMP_LT_I16_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_I16_e64 [[COPY]], [[COPY1]], implicit $exec297 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_I16_e64_]]298 ;299 ; WAVE32-LABEL: name: icmp_slt_s16_vv300 ; WAVE32: liveins: $vgpr0, $vgpr1301 ; WAVE32-NEXT: {{ $}}302 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0303 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1304 ; WAVE32-NEXT: [[V_CMP_LT_I16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LT_I16_e64 [[COPY]], [[COPY1]], implicit $exec305 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_I16_e64_]]306 ;307 ; GFX11-TRUE16-LABEL: name: icmp_slt_s16_vv308 ; GFX11-TRUE16: liveins: $vgpr0, $vgpr1309 ; GFX11-TRUE16-NEXT: {{ $}}310 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0311 ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1312 ; GFX11-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16313 ; GFX11-TRUE16-NEXT: [[COPY3:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo16314 ; GFX11-TRUE16-NEXT: [[V_CMP_LT_I16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LT_I16_t16_e64 0, [[COPY2]], 0, [[COPY3]], 0, implicit $exec315 ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_I16_t16_e64_]]316 ;317 ; GFX11-FAKE16-LABEL: name: icmp_slt_s16_vv318 ; GFX11-FAKE16: liveins: $vgpr0, $vgpr1319 ; GFX11-FAKE16-NEXT: {{ $}}320 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0321 ; GFX11-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1322 ; GFX11-FAKE16-NEXT: [[V_CMP_LT_I16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LT_I16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec323 ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_I16_fake16_e64_]]324 ;325 ; GFX12-TRUE16-LABEL: name: icmp_slt_s16_vv326 ; GFX12-TRUE16: liveins: $vgpr0, $vgpr1327 ; GFX12-TRUE16-NEXT: {{ $}}328 ; GFX12-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0329 ; GFX12-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1330 ; GFX12-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16331 ; GFX12-TRUE16-NEXT: [[COPY3:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo16332 ; GFX12-TRUE16-NEXT: [[V_CMP_LT_I16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LT_I16_t16_e64 0, [[COPY2]], 0, [[COPY3]], 0, implicit $exec333 ; GFX12-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_I16_t16_e64_]]334 ;335 ; GFX12-FAKE16-LABEL: name: icmp_slt_s16_vv336 ; GFX12-FAKE16: liveins: $vgpr0, $vgpr1337 ; GFX12-FAKE16-NEXT: {{ $}}338 ; GFX12-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0339 ; GFX12-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1340 ; GFX12-FAKE16-NEXT: [[V_CMP_LT_I16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LT_I16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec341 ; GFX12-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_I16_fake16_e64_]]342 %0:vgpr(s32) = COPY $vgpr0343 %1:vgpr(s32) = COPY $vgpr1344 %2:vgpr(s16) = G_TRUNC %0345 %3:vgpr(s16) = G_TRUNC %1346 %4:vcc(s1) = G_ICMP intpred(slt), %2, %3347 S_ENDPGM 0, implicit %4348...349 350---351 352name: icmp_sle_s16_vv353legalized: true354regBankSelected: true355 356body: |357 bb.0:358 liveins: $vgpr0, $vgpr1359 360 ; WAVE64-LABEL: name: icmp_sle_s16_vv361 ; WAVE64: liveins: $vgpr0, $vgpr1362 ; WAVE64-NEXT: {{ $}}363 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0364 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1365 ; WAVE64-NEXT: [[V_CMP_LE_I16_e64_:%[0-9]+]]:sreg_64 = V_CMP_LE_I16_e64 [[COPY]], [[COPY1]], implicit $exec366 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_I16_e64_]]367 ;368 ; WAVE32-LABEL: name: icmp_sle_s16_vv369 ; WAVE32: liveins: $vgpr0, $vgpr1370 ; WAVE32-NEXT: {{ $}}371 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0372 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1373 ; WAVE32-NEXT: [[V_CMP_LE_I16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LE_I16_e64 [[COPY]], [[COPY1]], implicit $exec374 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_I16_e64_]]375 ;376 ; GFX11-TRUE16-LABEL: name: icmp_sle_s16_vv377 ; GFX11-TRUE16: liveins: $vgpr0, $vgpr1378 ; GFX11-TRUE16-NEXT: {{ $}}379 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0380 ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1381 ; GFX11-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16382 ; GFX11-TRUE16-NEXT: [[COPY3:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo16383 ; GFX11-TRUE16-NEXT: [[V_CMP_LE_I16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LE_I16_t16_e64 0, [[COPY2]], 0, [[COPY3]], 0, implicit $exec384 ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_I16_t16_e64_]]385 ;386 ; GFX11-FAKE16-LABEL: name: icmp_sle_s16_vv387 ; GFX11-FAKE16: liveins: $vgpr0, $vgpr1388 ; GFX11-FAKE16-NEXT: {{ $}}389 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0390 ; GFX11-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1391 ; GFX11-FAKE16-NEXT: [[V_CMP_LE_I16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LE_I16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec392 ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_I16_fake16_e64_]]393 ;394 ; GFX12-TRUE16-LABEL: name: icmp_sle_s16_vv395 ; GFX12-TRUE16: liveins: $vgpr0, $vgpr1396 ; GFX12-TRUE16-NEXT: {{ $}}397 ; GFX12-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0398 ; GFX12-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1399 ; GFX12-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16400 ; GFX12-TRUE16-NEXT: [[COPY3:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo16401 ; GFX12-TRUE16-NEXT: [[V_CMP_LE_I16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LE_I16_t16_e64 0, [[COPY2]], 0, [[COPY3]], 0, implicit $exec402 ; GFX12-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_I16_t16_e64_]]403 ;404 ; GFX12-FAKE16-LABEL: name: icmp_sle_s16_vv405 ; GFX12-FAKE16: liveins: $vgpr0, $vgpr1406 ; GFX12-FAKE16-NEXT: {{ $}}407 ; GFX12-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0408 ; GFX12-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1409 ; GFX12-FAKE16-NEXT: [[V_CMP_LE_I16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LE_I16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec410 ; GFX12-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_I16_fake16_e64_]]411 %0:vgpr(s32) = COPY $vgpr0412 %1:vgpr(s32) = COPY $vgpr1413 %2:vgpr(s16) = G_TRUNC %0414 %3:vgpr(s16) = G_TRUNC %1415 %4:vcc(s1) = G_ICMP intpred(sle), %2, %3416 S_ENDPGM 0, implicit %4417...418 419---420 421name: icmp_ult_s16_vv422legalized: true423regBankSelected: true424 425body: |426 bb.0:427 liveins: $vgpr0, $vgpr1428 429 ; WAVE64-LABEL: name: icmp_ult_s16_vv430 ; WAVE64: liveins: $vgpr0, $vgpr1431 ; WAVE64-NEXT: {{ $}}432 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0433 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1434 ; WAVE64-NEXT: [[V_CMP_LT_U16_e64_:%[0-9]+]]:sreg_64 = V_CMP_LT_U16_e64 [[COPY]], [[COPY1]], implicit $exec435 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_U16_e64_]]436 ;437 ; WAVE32-LABEL: name: icmp_ult_s16_vv438 ; WAVE32: liveins: $vgpr0, $vgpr1439 ; WAVE32-NEXT: {{ $}}440 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0441 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1442 ; WAVE32-NEXT: [[V_CMP_LT_U16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LT_U16_e64 [[COPY]], [[COPY1]], implicit $exec443 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_U16_e64_]]444 ;445 ; GFX11-TRUE16-LABEL: name: icmp_ult_s16_vv446 ; GFX11-TRUE16: liveins: $vgpr0, $vgpr1447 ; GFX11-TRUE16-NEXT: {{ $}}448 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0449 ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1450 ; GFX11-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16451 ; GFX11-TRUE16-NEXT: [[COPY3:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo16452 ; GFX11-TRUE16-NEXT: [[V_CMP_LT_U16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LT_U16_t16_e64 0, [[COPY2]], 0, [[COPY3]], 0, implicit $exec453 ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_U16_t16_e64_]]454 ;455 ; GFX11-FAKE16-LABEL: name: icmp_ult_s16_vv456 ; GFX11-FAKE16: liveins: $vgpr0, $vgpr1457 ; GFX11-FAKE16-NEXT: {{ $}}458 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0459 ; GFX11-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1460 ; GFX11-FAKE16-NEXT: [[V_CMP_LT_U16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LT_U16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec461 ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_U16_fake16_e64_]]462 ;463 ; GFX12-TRUE16-LABEL: name: icmp_ult_s16_vv464 ; GFX12-TRUE16: liveins: $vgpr0, $vgpr1465 ; GFX12-TRUE16-NEXT: {{ $}}466 ; GFX12-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0467 ; GFX12-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1468 ; GFX12-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16469 ; GFX12-TRUE16-NEXT: [[COPY3:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo16470 ; GFX12-TRUE16-NEXT: [[V_CMP_LT_U16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LT_U16_t16_e64 0, [[COPY2]], 0, [[COPY3]], 0, implicit $exec471 ; GFX12-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_U16_t16_e64_]]472 ;473 ; GFX12-FAKE16-LABEL: name: icmp_ult_s16_vv474 ; GFX12-FAKE16: liveins: $vgpr0, $vgpr1475 ; GFX12-FAKE16-NEXT: {{ $}}476 ; GFX12-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0477 ; GFX12-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1478 ; GFX12-FAKE16-NEXT: [[V_CMP_LT_U16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LT_U16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec479 ; GFX12-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_U16_fake16_e64_]]480 %0:vgpr(s32) = COPY $vgpr0481 %1:vgpr(s32) = COPY $vgpr1482 %2:vgpr(s16) = G_TRUNC %0483 %3:vgpr(s16) = G_TRUNC %1484 %4:vcc(s1) = G_ICMP intpred(ult), %2, %3485 S_ENDPGM 0, implicit %4486...487 488---489 490name: icmp_ule_s16_vv491legalized: true492regBankSelected: true493 494body: |495 bb.0:496 liveins: $vgpr0, $vgpr1497 498 ; WAVE64-LABEL: name: icmp_ule_s16_vv499 ; WAVE64: liveins: $vgpr0, $vgpr1500 ; WAVE64-NEXT: {{ $}}501 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0502 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1503 ; WAVE64-NEXT: [[V_CMP_LE_U16_e64_:%[0-9]+]]:sreg_64 = V_CMP_LE_U16_e64 [[COPY]], [[COPY1]], implicit $exec504 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_U16_e64_]]505 ;506 ; WAVE32-LABEL: name: icmp_ule_s16_vv507 ; WAVE32: liveins: $vgpr0, $vgpr1508 ; WAVE32-NEXT: {{ $}}509 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0510 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1511 ; WAVE32-NEXT: [[V_CMP_LE_U16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LE_U16_e64 [[COPY]], [[COPY1]], implicit $exec512 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_U16_e64_]]513 ;514 ; GFX11-TRUE16-LABEL: name: icmp_ule_s16_vv515 ; GFX11-TRUE16: liveins: $vgpr0, $vgpr1516 ; GFX11-TRUE16-NEXT: {{ $}}517 ; GFX11-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0518 ; GFX11-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1519 ; GFX11-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16520 ; GFX11-TRUE16-NEXT: [[COPY3:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo16521 ; GFX11-TRUE16-NEXT: [[V_CMP_LE_U16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LE_U16_t16_e64 0, [[COPY2]], 0, [[COPY3]], 0, implicit $exec522 ; GFX11-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_U16_t16_e64_]]523 ;524 ; GFX11-FAKE16-LABEL: name: icmp_ule_s16_vv525 ; GFX11-FAKE16: liveins: $vgpr0, $vgpr1526 ; GFX11-FAKE16-NEXT: {{ $}}527 ; GFX11-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0528 ; GFX11-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1529 ; GFX11-FAKE16-NEXT: [[V_CMP_LE_U16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LE_U16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec530 ; GFX11-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_U16_fake16_e64_]]531 ;532 ; GFX12-TRUE16-LABEL: name: icmp_ule_s16_vv533 ; GFX12-TRUE16: liveins: $vgpr0, $vgpr1534 ; GFX12-TRUE16-NEXT: {{ $}}535 ; GFX12-TRUE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0536 ; GFX12-TRUE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1537 ; GFX12-TRUE16-NEXT: [[COPY2:%[0-9]+]]:vgpr_16 = COPY [[COPY]].lo16538 ; GFX12-TRUE16-NEXT: [[COPY3:%[0-9]+]]:vgpr_16 = COPY [[COPY1]].lo16539 ; GFX12-TRUE16-NEXT: [[V_CMP_LE_U16_t16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LE_U16_t16_e64 0, [[COPY2]], 0, [[COPY3]], 0, implicit $exec540 ; GFX12-TRUE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_U16_t16_e64_]]541 ;542 ; GFX12-FAKE16-LABEL: name: icmp_ule_s16_vv543 ; GFX12-FAKE16: liveins: $vgpr0, $vgpr1544 ; GFX12-FAKE16-NEXT: {{ $}}545 ; GFX12-FAKE16-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0546 ; GFX12-FAKE16-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1547 ; GFX12-FAKE16-NEXT: [[V_CMP_LE_U16_fake16_e64_:%[0-9]+]]:sreg_32 = V_CMP_LE_U16_fake16_e64 [[COPY]], [[COPY1]], implicit $exec548 ; GFX12-FAKE16-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_U16_fake16_e64_]]549 %0:vgpr(s32) = COPY $vgpr0550 %1:vgpr(s32) = COPY $vgpr1551 %2:vgpr(s16) = G_TRUNC %0552 %3:vgpr(s16) = G_TRUNC %1553 %4:vcc(s1) = G_ICMP intpred(ule), %2, %3554 S_ENDPGM 0, implicit %4555...556 557