brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.3 KiB · 02a313c Raw
601 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s -check-prefixes=GCN3 4---5name:            select_s32_scc6legalized:       true7regBankSelected: true8 9body: |10  bb.0:11    liveins:  $sgpr0, $sgpr1, $sgpr2, $sgpr312 13    ; GCN-LABEL: name: select_s32_scc14    ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr315    ; GCN-NEXT: {{  $}}16    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr017    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr118    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr219    ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr320    ; GCN-NEXT: S_CMP_EQ_U32 [[COPY]], [[COPY1]], implicit-def $scc21    ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $scc22    ; GCN-NEXT: $scc = COPY [[COPY4]]23    ; GCN-NEXT: [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[COPY2]], [[COPY3]], implicit $scc24    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_CSELECT_B32_]]25    %0:sgpr(s32) = COPY $sgpr026    %1:sgpr(s32) = COPY $sgpr127    %2:sgpr(s32) = COPY $sgpr228    %3:sgpr(s32) = COPY $sgpr329    %4:sgpr(s32) = G_ICMP intpred(eq), %0, %130    %5:sgpr(s32) = G_SELECT %4, %2, %331    S_ENDPGM 0, implicit %532 33...34 35---36name:            select_s64_scc37legalized:       true38regBankSelected: true39 40body: |41  bb.0:42    liveins:  $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr543 44    ; GCN-LABEL: name: select_s64_scc45    ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr546    ; GCN-NEXT: {{  $}}47    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr048    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr149    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr350    ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr551    ; GCN-NEXT: S_CMP_EQ_U32 [[COPY]], [[COPY1]], implicit-def $scc52    ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $scc53    ; GCN-NEXT: $scc = COPY [[COPY4]]54    ; GCN-NEXT: [[S_CSELECT_B64_:%[0-9]+]]:sreg_64 = S_CSELECT_B64 [[COPY2]], [[COPY3]], implicit $scc55    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_CSELECT_B64_]]56    %0:sgpr(s32) = COPY $sgpr057    %1:sgpr(s32) = COPY $sgpr158    %2:sgpr(s64) = COPY $sgpr2_sgpr359    %3:sgpr(s64) = COPY $sgpr4_sgpr560    %4:sgpr(s32) = G_ICMP intpred(eq), %0, %161    %5:sgpr(s64) = G_SELECT %4, %2, %362    S_ENDPGM 0, implicit %563 64...65 66---67name:            select_p0_scc68legalized:       true69regBankSelected: true70 71body: |72  bb.0:73    liveins:  $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr574 75    ; GCN-LABEL: name: select_p0_scc76    ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr577    ; GCN-NEXT: {{  $}}78    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr079    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr180    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr381    ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr582    ; GCN-NEXT: S_CMP_EQ_U32 [[COPY]], [[COPY1]], implicit-def $scc83    ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $scc84    ; GCN-NEXT: $scc = COPY [[COPY4]]85    ; GCN-NEXT: [[S_CSELECT_B64_:%[0-9]+]]:sreg_64 = S_CSELECT_B64 [[COPY2]], [[COPY3]], implicit $scc86    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_CSELECT_B64_]]87    %0:sgpr(s32) = COPY $sgpr088    %1:sgpr(s32) = COPY $sgpr189    %2:sgpr(p0) = COPY $sgpr2_sgpr390    %3:sgpr(p0) = COPY $sgpr4_sgpr591    %4:sgpr(s32) = G_ICMP intpred(eq), %0, %192    %5:sgpr(p0) = G_SELECT %4, %2, %393    S_ENDPGM 0, implicit %594 95...96 97---98name:            select_p1_scc99legalized:       true100regBankSelected: true101 102body: |103  bb.0:104    liveins:  $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5105 106    ; GCN-LABEL: name: select_p1_scc107    ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5108    ; GCN-NEXT: {{  $}}109    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0110    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1111    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3112    ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5113    ; GCN-NEXT: S_CMP_EQ_U32 [[COPY]], [[COPY1]], implicit-def $scc114    ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $scc115    ; GCN-NEXT: $scc = COPY [[COPY4]]116    ; GCN-NEXT: [[S_CSELECT_B64_:%[0-9]+]]:sreg_64 = S_CSELECT_B64 [[COPY2]], [[COPY3]], implicit $scc117    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_CSELECT_B64_]]118    %0:sgpr(s32) = COPY $sgpr0119    %1:sgpr(s32) = COPY $sgpr1120    %2:sgpr(p1) = COPY $sgpr2_sgpr3121    %3:sgpr(p1) = COPY $sgpr4_sgpr5122    %4:sgpr(s32) = G_ICMP intpred(eq), %0, %1123    %5:sgpr(p1) = G_SELECT %4, %2, %3124    S_ENDPGM 0, implicit %5125 126...127 128---129name:            select_p999_scc130legalized:       true131regBankSelected: true132 133body: |134  bb.0:135    liveins:  $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5136 137    ; GCN-LABEL: name: select_p999_scc138    ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5139    ; GCN-NEXT: {{  $}}140    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0141    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1142    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3143    ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5144    ; GCN-NEXT: S_CMP_EQ_U32 [[COPY]], [[COPY1]], implicit-def $scc145    ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $scc146    ; GCN-NEXT: $scc = COPY [[COPY4]]147    ; GCN-NEXT: [[S_CSELECT_B64_:%[0-9]+]]:sreg_64 = S_CSELECT_B64 [[COPY2]], [[COPY3]], implicit $scc148    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_CSELECT_B64_]]149    %0:sgpr(s32) = COPY $sgpr0150    %1:sgpr(s32) = COPY $sgpr1151    %2:sgpr(p999) = COPY $sgpr2_sgpr3152    %3:sgpr(p999) = COPY $sgpr4_sgpr5153    %4:sgpr(s32) = G_ICMP intpred(eq), %0, %1154    %5:sgpr(p999) = G_SELECT %4, %2, %3155    S_ENDPGM 0, implicit %5156 157...158 159---160name:            select_v4s16_scc161legalized:       true162regBankSelected: true163 164body: |165  bb.0:166    liveins:  $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5167 168    ; GCN-LABEL: name: select_v4s16_scc169    ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5170    ; GCN-NEXT: {{  $}}171    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0172    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1173    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3174    ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5175    ; GCN-NEXT: S_CMP_EQ_U32 [[COPY]], [[COPY1]], implicit-def $scc176    ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $scc177    ; GCN-NEXT: $scc = COPY [[COPY4]]178    ; GCN-NEXT: [[S_CSELECT_B64_:%[0-9]+]]:sreg_64 = S_CSELECT_B64 [[COPY2]], [[COPY3]], implicit $scc179    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_CSELECT_B64_]]180    %0:sgpr(s32) = COPY $sgpr0181    %1:sgpr(s32) = COPY $sgpr1182    %2:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3183    %3:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5184    %4:sgpr(s32) = G_ICMP intpred(eq), %0, %1185    %5:sgpr(<4 x s16>) = G_SELECT %4, %2, %3186    S_ENDPGM 0, implicit %5187 188...189 190---191name:            select_s16_scc192legalized:       true193regBankSelected: true194 195body: |196  bb.0:197    liveins:  $sgpr0, $sgpr1, $sgpr2, $sgpr3198 199    ; GCN-LABEL: name: select_s16_scc200    ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3201    ; GCN-NEXT: {{  $}}202    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0203    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1204    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2205    ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3206    ; GCN-NEXT: S_CMP_EQ_U32 [[COPY2]], [[COPY3]], implicit-def $scc207    ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $scc208    ; GCN-NEXT: $scc = COPY [[COPY4]]209    ; GCN-NEXT: [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[COPY]], [[COPY1]], implicit $scc210    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_CSELECT_B32_]]211    %0:sgpr(s32) = COPY $sgpr0212    %1:sgpr(s32) = COPY $sgpr1213    %2:sgpr(s32) = COPY $sgpr2214    %3:sgpr(s32) = COPY $sgpr3215    %4:sgpr(s16) = G_TRUNC %0216    %5:sgpr(s16) = G_TRUNC %1217    %6:sgpr(s32) = G_ICMP intpred(eq), %2, %3218    %7:sgpr(s16) = G_SELECT %6, %4, %5219    S_ENDPGM 0, implicit %7220 221...222 223---224name:            select_v2s16_scc225legalized:       true226regBankSelected: true227 228body: |229  bb.0:230    liveins:  $sgpr0, $sgpr1, $sgpr2, $sgpr3231 232    ; GCN-LABEL: name: select_v2s16_scc233    ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3234    ; GCN-NEXT: {{  $}}235    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0236    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1237    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2238    ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3239    ; GCN-NEXT: S_CMP_EQ_U32 [[COPY]], [[COPY1]], implicit-def $scc240    ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $scc241    ; GCN-NEXT: $scc = COPY [[COPY4]]242    ; GCN-NEXT: [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[COPY2]], [[COPY3]], implicit $scc243    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_CSELECT_B32_]]244    %0:sgpr(s32) = COPY $sgpr0245    %1:sgpr(s32) = COPY $sgpr1246    %2:sgpr(<2 x s16>) = COPY $sgpr2247    %3:sgpr(<2 x s16>) = COPY $sgpr3248    %4:sgpr(s32) = G_ICMP intpred(eq), %0, %1249    %5:sgpr(<2 x s16>) = G_SELECT %4, %2, %3250    S_ENDPGM 0, implicit %5251 252...253 254---255name:            select_s32_vcc256legalized:       true257regBankSelected: true258 259body: |260  bb.0:261    liveins:  $vgpr0, $vgpr1, $vgpr2, $vgpr3262 263    ; GCN-LABEL: name: select_s32_vcc264    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3265    ; GCN-NEXT: {{  $}}266    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0267    ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1268    ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2269    ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3270    ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec271    ; GCN-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY3]], 0, [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit $exec272    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]273    %0:vgpr(s32) = COPY $vgpr0274    %1:vgpr(s32) = COPY $vgpr1275    %2:vgpr(s32) = COPY $vgpr2276    %3:vgpr(s32) = COPY $vgpr3277    %4:vcc(s1) = G_ICMP intpred(eq), %0, %1278    %5:vgpr(s32) = G_SELECT %4, %2, %3279    S_ENDPGM 0, implicit %5280 281...282 283---284name:            select_s16_vcc285legalized:       true286regBankSelected: true287 288body: |289  bb.0:290    liveins:  $vgpr0, $vgpr1, $vgpr2, $vgpr3291 292    ; GCN-LABEL: name: select_s16_vcc293    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3294    ; GCN-NEXT: {{  $}}295    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0296    ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1297    ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2298    ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3299    ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY2]], [[COPY3]], implicit $exec300    ; GCN-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY1]], 0, [[COPY]], [[V_CMP_EQ_U32_e64_]], implicit $exec301    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]302    %0:vgpr(s32) = COPY $vgpr0303    %1:vgpr(s32) = COPY $vgpr1304    %2:vgpr(s32) = COPY $vgpr2305    %3:vgpr(s32) = COPY $vgpr3306    %4:vgpr(s16) = G_TRUNC %0307    %5:vgpr(s16) = G_TRUNC %1308    %6:vcc(s1) = G_ICMP intpred(eq), %2, %3309    %7:vgpr(s16) = G_SELECT %6, %4, %5310    S_ENDPGM 0, implicit %7311 312...313 314---315name:            select_v2s16_vcc316legalized:       true317regBankSelected: true318 319body: |320  bb.0:321    liveins:  $vgpr0, $vgpr1, $vgpr2, $vgpr3322 323    ; GCN-LABEL: name: select_v2s16_vcc324    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3325    ; GCN-NEXT: {{  $}}326    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0327    ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1328    ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2329    ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3330    ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec331    ; GCN-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY3]], 0, [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit $exec332    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]333    %0:vgpr(s32) = COPY $vgpr0334    %1:vgpr(s32) = COPY $vgpr1335    %2:vgpr(<2 x s16>) = COPY $vgpr2336    %3:vgpr(<2 x s16>) = COPY $vgpr3337    %4:vcc(s1) = G_ICMP intpred(eq), %0, %1338    %5:vgpr(<2 x s16>) = G_SELECT %4, %2, %3339    S_ENDPGM 0, implicit %5340 341...342 343---344name:            select_p3_vcc345legalized:       true346regBankSelected: true347 348body: |349  bb.0:350    liveins:  $vgpr0, $vgpr1, $vgpr2, $vgpr3351 352    ; GCN-LABEL: name: select_p3_vcc353    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3354    ; GCN-NEXT: {{  $}}355    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0356    ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1357    ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2358    ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3359    ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec360    ; GCN-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY3]], 0, [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit $exec361    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]362    %0:vgpr(s32) = COPY $vgpr0363    %1:vgpr(s32) = COPY $vgpr1364    %2:vgpr(p3) = COPY $vgpr2365    %3:vgpr(p3) = COPY $vgpr3366    %4:vcc(s1) = G_ICMP intpred(eq), %0, %1367    %5:vgpr(p3) = G_SELECT %4, %2, %3368    S_ENDPGM 0, implicit %5369 370...371 372# Fold source modifiers into VOP select373---374name:            select_s32_vcc_fneg_lhs375legalized:       true376regBankSelected: true377 378body: |379  bb.0:380    liveins:  $vgpr0, $vgpr1, $vgpr2, $vgpr3381 382    ; GCN-LABEL: name: select_s32_vcc_fneg_lhs383    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3384    ; GCN-NEXT: {{  $}}385    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0386    ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1387    ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2388    ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3389    ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec390    ; GCN-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY3]], 1, [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit $exec391    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]392    %0:vgpr(s32) = COPY $vgpr0393    %1:vgpr(s32) = COPY $vgpr1394    %2:vgpr(s32) = COPY $vgpr2395    %3:vgpr(s32) = COPY $vgpr3396    %4:vgpr(s32) = G_FNEG %2397    %5:vcc(s1) = G_ICMP intpred(eq), %0, %1398    %6:vgpr(s32) = G_SELECT %5, %4, %3399    S_ENDPGM 0, implicit %6400 401...402 403---404name:            select_s32_vcc_fneg_rhs405legalized:       true406regBankSelected: true407 408body: |409  bb.0:410    liveins:  $vgpr0, $vgpr1, $vgpr2, $vgpr3411 412    ; GCN-LABEL: name: select_s32_vcc_fneg_rhs413    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3414    ; GCN-NEXT: {{  $}}415    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0416    ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1417    ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2418    ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3419    ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec420    ; GCN-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 1, [[COPY3]], 0, [[COPY2]], [[V_CMP_EQ_U32_e64_]], implicit $exec421    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]422    %0:vgpr(s32) = COPY $vgpr0423    %1:vgpr(s32) = COPY $vgpr1424    %2:vgpr(s32) = COPY $vgpr2425    %3:vgpr(s32) = COPY $vgpr3426    %4:vgpr(s32) = G_FNEG %3427    %5:vcc(s1) = G_ICMP intpred(eq), %0, %1428    %6:vgpr(s32) = G_SELECT %5, %2, %4429    S_ENDPGM 0, implicit %6430 431...432 433---434name:            select_s32_vcc_fneg_fabs_lhs435legalized:       true436regBankSelected: true437 438body: |439  bb.0:440    liveins:  $vgpr0, $vgpr1, $vgpr2, $vgpr3441 442    ; GCN-LABEL: name: select_s32_vcc_fneg_fabs_lhs443    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3444    ; GCN-NEXT: {{  $}}445    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0446    ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1447    ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2448    ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3449    ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec450    ; GCN-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 3, [[COPY3]], [[V_CMP_EQ_U32_e64_]], implicit $exec451    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]452    %0:vgpr(s32) = COPY $vgpr0453    %1:vgpr(s32) = COPY $vgpr1454    %2:vgpr(s32) = COPY $vgpr2455    %3:vgpr(s32) = COPY $vgpr3456    %4:vgpr(s32) = G_FABS %3457    %5:vgpr(s32) = G_FNEG %4458    %6:vcc(s1) = G_ICMP intpred(eq), %0, %1459    %7:vgpr(s32) = G_SELECT %6, %5, %2460    S_ENDPGM 0, implicit %7461 462...463 464# Make sure we don't try to fold source modifiers into non-32 bit value.465---466name:            select_s16_vcc_fneg_lhs467legalized:       true468regBankSelected: true469 470body: |471  bb.0:472    liveins:  $vgpr0, $vgpr1, $vgpr2, $vgpr3473 474    ; GCN-LABEL: name: select_s16_vcc_fneg_lhs475    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3476    ; GCN-NEXT: {{  $}}477    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0478    ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1479    ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2480    ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3481    ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 32768482    ; GCN-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY]], implicit $exec483    ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY2]], [[COPY3]], implicit $exec484    ; GCN-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY1]], 0, [[V_XOR_B32_e64_]], [[V_CMP_EQ_U32_e64_]], implicit $exec485    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]486    %0:vgpr(s32) = COPY $vgpr0487    %1:vgpr(s32) = COPY $vgpr1488    %2:vgpr(s32) = COPY $vgpr2489    %3:vgpr(s32) = COPY $vgpr3490    %4:vgpr(s16) = G_TRUNC %0491    %5:vgpr(s16) = G_TRUNC %1492    %6:vgpr(s16) = G_FNEG %4493    %7:vcc(s1) = G_ICMP intpred(eq), %2, %3494    %8:vgpr(s16) = G_SELECT %7, %6, %5495    S_ENDPGM 0, implicit %8496 497...498 499 500# Make sure we don't try to fold source modifiers into a vector501---502name:            select_v2s16_vcc_fneg_lhs503legalized:       true504regBankSelected: true505 506body: |507  bb.0:508    liveins:  $vgpr0, $vgpr1, $vgpr2, $vgpr3509 510    ; GCN-LABEL: name: select_v2s16_vcc_fneg_lhs511    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3512    ; GCN-NEXT: {{  $}}513    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0514    ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1515    ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3516    ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2147516416517    ; GCN-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_MOV_B32_]], [[COPY2]], implicit $exec518    ; GCN-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[COPY]], [[COPY1]], implicit $exec519    ; GCN-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[V_XOR_B32_e64_]], [[V_CMP_EQ_U32_e64_]], implicit $exec520    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]521    %0:vgpr(s32) = COPY $vgpr0522    %1:vgpr(s32) = COPY $vgpr1523    %2:vgpr(<2 x s16>) = COPY $vgpr2524    %3:vgpr(<2 x s16>) = COPY $vgpr3525    %4:vgpr(<2 x s16>) = G_FNEG %3526    %5:vcc(s1) = G_ICMP intpred(eq), %0, %1527    %6:vgpr(<2 x s16>) = G_SELECT %5, %4, %3528    S_ENDPGM 0, implicit %6529 530...531 532# Make sure we don't try to fold source modifiers into a scalar select533 534---535name:            select_s32_scc_fneg_lhs536legalized:       true537regBankSelected: true538 539body: |540  bb.0:541    liveins:  $sgpr0, $sgpr1, $sgpr2, $sgpr3542 543    ; GCN-LABEL: name: select_s32_scc_fneg_lhs544    ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3545    ; GCN-NEXT: {{  $}}546    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0547    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1548    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2549    ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3550    ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2147483648551    ; GCN-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY2]], [[S_MOV_B32_]], implicit-def dead $scc552    ; GCN-NEXT: S_CMP_EQ_U32 [[COPY]], [[COPY1]], implicit-def $scc553    ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $scc554    ; GCN-NEXT: $scc = COPY [[COPY4]]555    ; GCN-NEXT: [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[S_XOR_B32_]], [[COPY3]], implicit $scc556    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_CSELECT_B32_]]557    %0:sgpr(s32) = COPY $sgpr0558    %1:sgpr(s32) = COPY $sgpr1559    %2:sgpr(s32) = COPY $sgpr2560    %3:sgpr(s32) = COPY $sgpr3561    %4:sgpr(s32) = G_FNEG %2562    %5:sgpr(s32) = G_ICMP intpred(eq), %0, %1563    %6:sgpr(s32) = G_SELECT %5, %4, %3564    S_ENDPGM 0, implicit %6565 566...567 568---569name:            select_s32_scc_fneg_rhs570legalized:       true571regBankSelected: true572 573body: |574  bb.0:575    liveins:  $sgpr0, $sgpr1, $sgpr2, $sgpr3576 577    ; GCN-LABEL: name: select_s32_scc_fneg_rhs578    ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3579    ; GCN-NEXT: {{  $}}580    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0581    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1582    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2583    ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3584    ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 2147483648585    ; GCN-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY3]], [[S_MOV_B32_]], implicit-def dead $scc586    ; GCN-NEXT: S_CMP_EQ_U32 [[COPY]], [[COPY1]], implicit-def $scc587    ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $scc588    ; GCN-NEXT: $scc = COPY [[COPY4]]589    ; GCN-NEXT: [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 [[COPY2]], [[S_XOR_B32_]], implicit $scc590    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_CSELECT_B32_]]591    %0:sgpr(s32) = COPY $sgpr0592    %1:sgpr(s32) = COPY $sgpr1593    %2:sgpr(s32) = COPY $sgpr2594    %3:sgpr(s32) = COPY $sgpr3595    %4:sgpr(s32) = G_FNEG %3596    %5:sgpr(s32) = G_ICMP intpred(eq), %0, %1597    %6:sgpr(s32) = G_SELECT %5, %2, %4598    S_ENDPGM 0, implicit %6599 600...601