brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.0 KiB · 49a2eab Raw
253 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=GFX8 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -o - %s  | FileCheck -check-prefix=GFX9 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -o - %s  | FileCheck -check-prefix=GFX10 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -o - %s  | FileCheck -check-prefix=GFX10 %s6 7---8 9name:            xor_s32_sgpr_sgpr_sgpr10legalized:       true11regBankSelected: true12tracksRegLiveness: true13 14body: |15  bb.0:16    liveins: $sgpr0, $sgpr1, $sgpr217    ; GFX8-LABEL: name: xor_s32_sgpr_sgpr_sgpr18    ; GFX8: liveins: $sgpr0, $sgpr1, $sgpr219    ; GFX8-NEXT: {{  $}}20    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr021    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr122    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr223    ; GFX8-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY]], [[COPY1]], implicit-def dead $scc24    ; GFX8-NEXT: [[S_XOR_B32_1:%[0-9]+]]:sreg_32 = S_XOR_B32 [[S_XOR_B32_]], [[COPY2]], implicit-def dead $scc25    ; GFX8-NEXT: S_ENDPGM 0, implicit [[S_XOR_B32_1]]26    ;27    ; GFX9-LABEL: name: xor_s32_sgpr_sgpr_sgpr28    ; GFX9: liveins: $sgpr0, $sgpr1, $sgpr229    ; GFX9-NEXT: {{  $}}30    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr031    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr132    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr233    ; GFX9-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY]], [[COPY1]], implicit-def dead $scc34    ; GFX9-NEXT: [[S_XOR_B32_1:%[0-9]+]]:sreg_32 = S_XOR_B32 [[S_XOR_B32_]], [[COPY2]], implicit-def dead $scc35    ; GFX9-NEXT: S_ENDPGM 0, implicit [[S_XOR_B32_1]]36    ;37    ; GFX10-LABEL: name: xor_s32_sgpr_sgpr_sgpr38    ; GFX10: liveins: $sgpr0, $sgpr1, $sgpr239    ; GFX10-NEXT: {{  $}}40    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr041    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr142    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr243    ; GFX10-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY]], [[COPY1]], implicit-def dead $scc44    ; GFX10-NEXT: [[S_XOR_B32_1:%[0-9]+]]:sreg_32 = S_XOR_B32 [[S_XOR_B32_]], [[COPY2]], implicit-def dead $scc45    ; GFX10-NEXT: S_ENDPGM 0, implicit [[S_XOR_B32_1]]46    %0:sgpr(s32) = COPY $sgpr047    %1:sgpr(s32) = COPY $sgpr148    %2:sgpr(s32) = COPY $sgpr249    %3:sgpr(s32) = G_XOR %0, %150    %4:sgpr(s32) = G_XOR %3, %251    S_ENDPGM 0, implicit %452...53 54---55 56name:            xor_s32_vgpr_vgpr_vgpr57legalized:       true58regBankSelected: true59tracksRegLiveness: true60 61body: |62  bb.0:63    liveins: $vgpr0, $vgpr1, $vgpr264    ; GFX8-LABEL: name: xor_s32_vgpr_vgpr_vgpr65    ; GFX8: liveins: $vgpr0, $vgpr1, $vgpr266    ; GFX8-NEXT: {{  $}}67    ; GFX8-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr068    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr169    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr270    ; GFX8-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[COPY]], [[COPY1]], implicit $exec71    ; GFX8-NEXT: [[V_XOR_B32_e64_1:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[V_XOR_B32_e64_]], [[COPY2]], implicit $exec72    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_XOR_B32_e64_1]]73    ;74    ; GFX9-LABEL: name: xor_s32_vgpr_vgpr_vgpr75    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr276    ; GFX9-NEXT: {{  $}}77    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr078    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr179    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr280    ; GFX9-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[COPY]], [[COPY1]], implicit $exec81    ; GFX9-NEXT: [[V_XOR_B32_e64_1:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[V_XOR_B32_e64_]], [[COPY2]], implicit $exec82    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_XOR_B32_e64_1]]83    ;84    ; GFX10-LABEL: name: xor_s32_vgpr_vgpr_vgpr85    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr286    ; GFX10-NEXT: {{  $}}87    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr088    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr189    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr290    ; GFX10-NEXT: [[V_XOR3_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR3_B32_e64 [[COPY]], [[COPY1]], [[COPY2]], implicit $exec91    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_XOR3_B32_e64_]]92    %0:vgpr(s32) = COPY $vgpr093    %1:vgpr(s32) = COPY $vgpr194    %2:vgpr(s32) = COPY $vgpr295    %3:vgpr(s32) = G_XOR %0, %196    %4:vgpr(s32) = G_XOR %3, %297    S_ENDPGM 0, implicit %498...99 100# Mixed SGPR and VGPR, with full copy from scalar xor to VGPR, as101#should actually be produced by RegBankSelect102 103---104 105name:            xor_s32_sgpr_sgpr_vgpr_copy106legalized:       true107regBankSelected: true108tracksRegLiveness: true109 110body: |111  bb.0:112    liveins: $sgpr0, $sgpr1, $vgpr0113 114    ; GFX8-LABEL: name: xor_s32_sgpr_sgpr_vgpr_copy115    ; GFX8: liveins: $sgpr0, $sgpr1, $vgpr0116    ; GFX8-NEXT: {{  $}}117    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0118    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1119    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0120    ; GFX8-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY]], [[COPY1]], implicit-def dead $scc121    ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[S_XOR_B32_]]122    ; GFX8-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[COPY3]], [[COPY2]], implicit $exec123    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_XOR_B32_e64_]]124    ;125    ; GFX9-LABEL: name: xor_s32_sgpr_sgpr_vgpr_copy126    ; GFX9: liveins: $sgpr0, $sgpr1, $vgpr0127    ; GFX9-NEXT: {{  $}}128    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0129    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1130    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0131    ; GFX9-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY]], [[COPY1]], implicit-def dead $scc132    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[S_XOR_B32_]]133    ; GFX9-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[COPY3]], [[COPY2]], implicit $exec134    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_XOR_B32_e64_]]135    ;136    ; GFX10-LABEL: name: xor_s32_sgpr_sgpr_vgpr_copy137    ; GFX10: liveins: $sgpr0, $sgpr1, $vgpr0138    ; GFX10-NEXT: {{  $}}139    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0140    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1141    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0142    ; GFX10-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY]], [[COPY1]], implicit-def dead $scc143    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[S_XOR_B32_]]144    ; GFX10-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[COPY3]], [[COPY2]], implicit $exec145    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_XOR_B32_e64_]]146    %0:sgpr(s32) = COPY $sgpr0147    %1:sgpr(s32) = COPY $sgpr1148    %2:vgpr(s32) = COPY $vgpr0149    %3:sgpr(s32) = G_XOR %0, %1150    %4:vgpr(s32) = COPY %3151    %5:vgpr(s32) = G_XOR %4, %2152    S_ENDPGM 0, implicit %5153...154 155---156 157name:            xor_s32_sgpr_sgpr_vgpr_copy_commute158legalized:       true159regBankSelected: true160tracksRegLiveness: true161 162body: |163  bb.0:164    liveins: $sgpr0, $sgpr1, $vgpr0165 166    ; GFX8-LABEL: name: xor_s32_sgpr_sgpr_vgpr_copy_commute167    ; GFX8: liveins: $sgpr0, $sgpr1, $vgpr0168    ; GFX8-NEXT: {{  $}}169    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0170    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1171    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0172    ; GFX8-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY]], [[COPY1]], implicit-def dead $scc173    ; GFX8-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[S_XOR_B32_]]174    ; GFX8-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[COPY2]], [[COPY3]], implicit $exec175    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_XOR_B32_e64_]]176    ;177    ; GFX9-LABEL: name: xor_s32_sgpr_sgpr_vgpr_copy_commute178    ; GFX9: liveins: $sgpr0, $sgpr1, $vgpr0179    ; GFX9-NEXT: {{  $}}180    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0181    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1182    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0183    ; GFX9-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY]], [[COPY1]], implicit-def dead $scc184    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[S_XOR_B32_]]185    ; GFX9-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[COPY2]], [[COPY3]], implicit $exec186    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_XOR_B32_e64_]]187    ;188    ; GFX10-LABEL: name: xor_s32_sgpr_sgpr_vgpr_copy_commute189    ; GFX10: liveins: $sgpr0, $sgpr1, $vgpr0190    ; GFX10-NEXT: {{  $}}191    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0192    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1193    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0194    ; GFX10-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY]], [[COPY1]], implicit-def dead $scc195    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[S_XOR_B32_]]196    ; GFX10-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[COPY2]], [[COPY3]], implicit $exec197    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_XOR_B32_e64_]]198    %0:sgpr(s32) = COPY $sgpr0199    %1:sgpr(s32) = COPY $sgpr1200    %2:vgpr(s32) = COPY $vgpr0201    %3:sgpr(s32) = G_XOR %0, %1202    %4:vgpr(s32) = COPY %3203    %5:vgpr(s32) = G_XOR %2, %4204    S_ENDPGM 0, implicit %5205...206 207---208 209name:            xor_s32_sgpr_sgpr_vgpr210legalized:       true211regBankSelected: true212tracksRegLiveness: true213 214body: |215  bb.0:216    liveins: $sgpr0, $sgpr1, $vgpr0217 218    ; GFX8-LABEL: name: xor_s32_sgpr_sgpr_vgpr219    ; GFX8: liveins: $sgpr0, $sgpr1, $vgpr0220    ; GFX8-NEXT: {{  $}}221    ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0222    ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1223    ; GFX8-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0224    ; GFX8-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY]], [[COPY1]], implicit-def dead $scc225    ; GFX8-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_XOR_B32_]], [[COPY2]], implicit $exec226    ; GFX8-NEXT: S_ENDPGM 0, implicit [[V_XOR_B32_e64_]]227    ;228    ; GFX9-LABEL: name: xor_s32_sgpr_sgpr_vgpr229    ; GFX9: liveins: $sgpr0, $sgpr1, $vgpr0230    ; GFX9-NEXT: {{  $}}231    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0232    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1233    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0234    ; GFX9-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 [[COPY]], [[COPY1]], implicit-def dead $scc235    ; GFX9-NEXT: [[V_XOR_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e64 [[S_XOR_B32_]], [[COPY2]], implicit $exec236    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_XOR_B32_e64_]]237    ;238    ; GFX10-LABEL: name: xor_s32_sgpr_sgpr_vgpr239    ; GFX10: liveins: $sgpr0, $sgpr1, $vgpr0240    ; GFX10-NEXT: {{  $}}241    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0242    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1243    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0244    ; GFX10-NEXT: [[V_XOR3_B32_e64_:%[0-9]+]]:vgpr_32 = V_XOR3_B32_e64 [[COPY]], [[COPY1]], [[COPY2]], implicit $exec245    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_XOR3_B32_e64_]]246    %0:sgpr(s32) = COPY $sgpr0247    %1:sgpr(s32) = COPY $sgpr1248    %2:vgpr(s32) = COPY $vgpr0249    %3:sgpr(s32) = G_XOR %0, %1250    %4:vgpr(s32) = G_XOR %3, %2251    S_ENDPGM 0, implicit %4252...253