375 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -mattr=-real-true16 -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX11 %s3 4---5name: fcmp_false_s16_vv6legalized: true7regBankSelected: true8 9body: |10 bb.0:11 liveins: $vgpr0, $vgpr112 ; GFX11-LABEL: name: fcmp_false_s16_vv13 ; GFX11: liveins: $vgpr0, $vgpr114 ; GFX11-NEXT: {{ $}}15 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr016 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr117 ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)18 ; GFX11-NEXT: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32)19 ; GFX11-NEXT: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(false), [[TRUNC]](s16), [[TRUNC1]]20 ; GFX11-NEXT: S_ENDPGM 0, implicit [[FCMP]](s1)21 %0:vgpr(s32) = COPY $vgpr022 %1:vgpr(s32) = COPY $vgpr123 %2:vgpr(s16) = G_TRUNC %024 %3:vgpr(s16) = G_TRUNC %125 %4:vcc(s1) = G_FCMP floatpred(false), %2, %326 S_ENDPGM 0, implicit %427...28 29---30name: fcmp_oeq_s16_vv31legalized: true32regBankSelected: true33 34body: |35 bb.0:36 liveins: $vgpr0, $vgpr137 ; GFX11-LABEL: name: fcmp_oeq_s16_vv38 ; GFX11: liveins: $vgpr0, $vgpr139 ; GFX11-NEXT: {{ $}}40 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr041 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr142 ; GFX11-NEXT: [[V_CMP_EQ_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_EQ_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec43 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_EQ_F16_fake16_e64_]]44 %0:vgpr(s32) = COPY $vgpr045 %1:vgpr(s32) = COPY $vgpr146 %2:vgpr(s16) = G_TRUNC %047 %3:vgpr(s16) = G_TRUNC %148 %4:vcc(s1) = G_FCMP floatpred(oeq), %2, %349 S_ENDPGM 0, implicit %450...51 52---53name: fcmp_ogt_s16_vv54legalized: true55regBankSelected: true56 57body: |58 bb.0:59 liveins: $vgpr0, $vgpr160 ; GFX11-LABEL: name: fcmp_ogt_s16_vv61 ; GFX11: liveins: $vgpr0, $vgpr162 ; GFX11-NEXT: {{ $}}63 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr064 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr165 ; GFX11-NEXT: [[V_CMP_GT_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_GT_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec66 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_GT_F16_fake16_e64_]]67 %0:vgpr(s32) = COPY $vgpr068 %1:vgpr(s32) = COPY $vgpr169 %2:vgpr(s16) = G_TRUNC %070 %3:vgpr(s16) = G_TRUNC %171 %4:vcc(s1) = G_FCMP floatpred(ogt), %2, %372 S_ENDPGM 0, implicit %473...74 75---76name: fcmp_oge_s16_vv77legalized: true78regBankSelected: true79 80body: |81 bb.0:82 liveins: $vgpr0, $vgpr183 ; GFX11-LABEL: name: fcmp_oge_s16_vv84 ; GFX11: liveins: $vgpr0, $vgpr185 ; GFX11-NEXT: {{ $}}86 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr087 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr188 ; GFX11-NEXT: [[V_CMP_GE_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_GE_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec89 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_GE_F16_fake16_e64_]]90 %0:vgpr(s32) = COPY $vgpr091 %1:vgpr(s32) = COPY $vgpr192 %2:vgpr(s16) = G_TRUNC %093 %3:vgpr(s16) = G_TRUNC %194 %4:vcc(s1) = G_FCMP floatpred(oge), %2, %395 S_ENDPGM 0, implicit %496...97 98---99name: fcmp_olt_s16_vv100legalized: true101regBankSelected: true102 103body: |104 bb.0:105 liveins: $vgpr0, $vgpr1106 ; GFX11-LABEL: name: fcmp_olt_s16_vv107 ; GFX11: liveins: $vgpr0, $vgpr1108 ; GFX11-NEXT: {{ $}}109 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0110 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1111 ; GFX11-NEXT: [[V_CMP_LT_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_LT_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec112 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_LT_F16_fake16_e64_]]113 %0:vgpr(s32) = COPY $vgpr0114 %1:vgpr(s32) = COPY $vgpr1115 %2:vgpr(s16) = G_TRUNC %0116 %3:vgpr(s16) = G_TRUNC %1117 %4:vcc(s1) = G_FCMP floatpred(olt), %2, %3118 S_ENDPGM 0, implicit %4119...120 121---122name: fcmp_ole_s16_vv123legalized: true124regBankSelected: true125 126body: |127 bb.0:128 liveins: $vgpr0, $vgpr1129 ; GFX11-LABEL: name: fcmp_ole_s16_vv130 ; GFX11: liveins: $vgpr0, $vgpr1131 ; GFX11-NEXT: {{ $}}132 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0133 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1134 ; GFX11-NEXT: [[V_CMP_LE_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_LE_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec135 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_LE_F16_fake16_e64_]]136 %0:vgpr(s32) = COPY $vgpr0137 %1:vgpr(s32) = COPY $vgpr1138 %2:vgpr(s16) = G_TRUNC %0139 %3:vgpr(s16) = G_TRUNC %1140 %4:vcc(s1) = G_FCMP floatpred(ole), %2, %3141 S_ENDPGM 0, implicit %4142...143---144name: fcmp_one_s16_vv145legalized: true146regBankSelected: true147 148body: |149 bb.0:150 liveins: $vgpr0, $vgpr1151 ; GFX11-LABEL: name: fcmp_one_s16_vv152 ; GFX11: liveins: $vgpr0, $vgpr1153 ; GFX11-NEXT: {{ $}}154 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0155 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1156 ; GFX11-NEXT: [[V_CMP_LG_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_LG_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec157 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_LG_F16_fake16_e64_]]158 %0:vgpr(s32) = COPY $vgpr0159 %1:vgpr(s32) = COPY $vgpr1160 %2:vgpr(s16) = G_TRUNC %0161 %3:vgpr(s16) = G_TRUNC %1162 %4:vcc(s1) = G_FCMP floatpred(one), %2, %3163 S_ENDPGM 0, implicit %4164...165 166---167name: fcmp_ord_s16_vv168legalized: true169regBankSelected: true170 171body: |172 bb.0:173 liveins: $vgpr0, $vgpr1174 ; GFX11-LABEL: name: fcmp_ord_s16_vv175 ; GFX11: liveins: $vgpr0, $vgpr1176 ; GFX11-NEXT: {{ $}}177 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0178 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1179 ; GFX11-NEXT: [[V_CMP_LG_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_LG_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec180 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_LG_F16_fake16_e64_]]181 %0:vgpr(s32) = COPY $vgpr0182 %1:vgpr(s32) = COPY $vgpr1183 %2:vgpr(s16) = G_TRUNC %0184 %3:vgpr(s16) = G_TRUNC %1185 %4:vcc(s1) = G_FCMP floatpred(one), %2, %3186 S_ENDPGM 0, implicit %4187...188 189---190name: fcmp_uno_s16_vv191legalized: true192regBankSelected: true193 194body: |195 bb.0:196 liveins: $vgpr0, $vgpr1197 ; GFX11-LABEL: name: fcmp_uno_s16_vv198 ; GFX11: liveins: $vgpr0, $vgpr1199 ; GFX11-NEXT: {{ $}}200 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0201 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1202 ; GFX11-NEXT: [[V_CMP_U_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_U_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec203 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_U_F16_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_FCMP floatpred(uno), %2, %3209 S_ENDPGM 0, implicit %4210...211 212---213name: fcmp_ueq_s16_vv214legalized: true215regBankSelected: true216 217body: |218 bb.0:219 liveins: $vgpr0, $vgpr1220 ; GFX11-LABEL: name: fcmp_ueq_s16_vv221 ; GFX11: liveins: $vgpr0, $vgpr1222 ; GFX11-NEXT: {{ $}}223 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0224 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1225 ; GFX11-NEXT: [[V_CMP_NLG_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_NLG_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec226 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_NLG_F16_fake16_e64_]]227 %0:vgpr(s32) = COPY $vgpr0228 %1:vgpr(s32) = COPY $vgpr1229 %2:vgpr(s16) = G_TRUNC %0230 %3:vgpr(s16) = G_TRUNC %1231 %4:vcc(s1) = G_FCMP floatpred(ueq), %2, %3232 S_ENDPGM 0, implicit %4233...234 235---236name: fcmp_ugt_s16_vv237legalized: true238regBankSelected: true239 240body: |241 bb.0:242 liveins: $vgpr0, $vgpr1243 ; GFX11-LABEL: name: fcmp_ugt_s16_vv244 ; GFX11: liveins: $vgpr0, $vgpr1245 ; GFX11-NEXT: {{ $}}246 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0247 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1248 ; GFX11-NEXT: [[V_CMP_NLE_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_NLE_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec249 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_NLE_F16_fake16_e64_]]250 %0:vgpr(s32) = COPY $vgpr0251 %1:vgpr(s32) = COPY $vgpr1252 %2:vgpr(s16) = G_TRUNC %0253 %3:vgpr(s16) = G_TRUNC %1254 %4:vcc(s1) = G_FCMP floatpred(ugt), %2, %3255 S_ENDPGM 0, implicit %4256...257 258---259name: fcmp_uge_s16_vv260legalized: true261regBankSelected: true262 263body: |264 bb.0:265 liveins: $vgpr0, $vgpr1266 ; GFX11-LABEL: name: fcmp_uge_s16_vv267 ; GFX11: liveins: $vgpr0, $vgpr1268 ; GFX11-NEXT: {{ $}}269 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0270 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1271 ; GFX11-NEXT: [[V_CMP_NLT_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_NLT_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec272 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_NLT_F16_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_FCMP floatpred(uge), %2, %3278 S_ENDPGM 0, implicit %4279...280 281---282name: fcmp_ult_s16_vv283legalized: true284regBankSelected: true285 286body: |287 bb.0:288 liveins: $vgpr0, $vgpr1289 ; GFX11-LABEL: name: fcmp_ult_s16_vv290 ; GFX11: liveins: $vgpr0, $vgpr1291 ; GFX11-NEXT: {{ $}}292 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0293 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1294 ; GFX11-NEXT: [[V_CMP_NGE_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_NGE_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec295 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_NGE_F16_fake16_e64_]]296 %0:vgpr(s32) = COPY $vgpr0297 %1:vgpr(s32) = COPY $vgpr1298 %2:vgpr(s16) = G_TRUNC %0299 %3:vgpr(s16) = G_TRUNC %1300 %4:vcc(s1) = G_FCMP floatpred(ult), %2, %3301 S_ENDPGM 0, implicit %4302...303 304---305name: fcmp_ule_s16_vv306legalized: true307regBankSelected: true308 309body: |310 bb.0:311 liveins: $vgpr0, $vgpr1312 ; GFX11-LABEL: name: fcmp_ule_s16_vv313 ; GFX11: liveins: $vgpr0, $vgpr1314 ; GFX11-NEXT: {{ $}}315 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0316 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1317 ; GFX11-NEXT: [[V_CMP_NGT_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_NGT_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec318 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_NGT_F16_fake16_e64_]]319 %0:vgpr(s32) = COPY $vgpr0320 %1:vgpr(s32) = COPY $vgpr1321 %2:vgpr(s16) = G_TRUNC %0322 %3:vgpr(s16) = G_TRUNC %1323 %4:vcc(s1) = G_FCMP floatpred(ule), %2, %3324 S_ENDPGM 0, implicit %4325...326 327---328name: fcmp_une_s16_vv329legalized: true330regBankSelected: true331 332body: |333 bb.0:334 liveins: $vgpr0, $vgpr1335 ; GFX11-LABEL: name: fcmp_une_s16_vv336 ; GFX11: liveins: $vgpr0, $vgpr1337 ; GFX11-NEXT: {{ $}}338 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0339 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1340 ; GFX11-NEXT: [[V_CMP_NEQ_F16_fake16_e64_:%[0-9]+]]:sreg_32_xm0_xexec = nofpexcept V_CMP_NEQ_F16_fake16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec341 ; GFX11-NEXT: S_ENDPGM 0, implicit [[V_CMP_NEQ_F16_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_FCMP floatpred(une), %2, %3347 S_ENDPGM 0, implicit %4348...349 350---351name: fcmp_true_s16_vv352legalized: true353regBankSelected: true354 355body: |356 bb.0:357 liveins: $vgpr0, $vgpr1358 ; GFX11-LABEL: name: fcmp_true_s16_vv359 ; GFX11: liveins: $vgpr0, $vgpr1360 ; GFX11-NEXT: {{ $}}361 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0362 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1363 ; GFX11-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)364 ; GFX11-NEXT: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32)365 ; GFX11-NEXT: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(true), [[TRUNC]](s16), [[TRUNC1]]366 ; GFX11-NEXT: S_ENDPGM 0, implicit [[FCMP]](s1)367 %0:vgpr(s32) = COPY $vgpr0368 %1:vgpr(s32) = COPY $vgpr1369 %2:vgpr(s16) = G_TRUNC %0370 %3:vgpr(s16) = G_TRUNC %1371 %4:vcc(s1) = G_FCMP floatpred(true), %2, %3372 S_ENDPGM 0, implicit %4373...374 375