brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.5 KiB · 5bb3479 Raw
394 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -verify-machineinstrs -run-pass=si-fold-operands  %s -o - | FileCheck -check-prefix=GCN %s3 4--- |5  define amdgpu_kernel void @redef_m0_same_copy() { ret void }6  define amdgpu_kernel void @multi_redef_m0_same_copy() { ret void }7  define amdgpu_kernel void @redef_m0_different_copy() { ret void }8  define amdgpu_kernel void @redef_m0_mixed_copy0() { ret void }9  define amdgpu_kernel void @redef_m0_mixed_copy1() { ret void }10  define amdgpu_kernel void @redef_m0_same_mov_imm() { ret void }11  define amdgpu_kernel void @redef_m0_different_inst0() { ret void }12  define amdgpu_kernel void @redef_m0_different_inst1() { ret void }13  define amdgpu_kernel void @redef_m0_mixed_read_m0() { ret void }14  define amdgpu_kernel void @redef_m0_same_copy_call() { ret void }15  define amdgpu_kernel void @redef_m0_same_copy_multi_block() { ret void }16  define amdgpu_kernel void @redef_m0_copy_self() { ret void }17  define amdgpu_kernel void @redef_m0_copy_physreg() { ret void }18 19  declare void @func()20...21 22---23name:            redef_m0_same_copy24tracksRegLiveness: true25machineFunctionInfo:26  isEntryFunction: true27body:             |28  bb.0:29    liveins: $vgpr0, $sgpr030 31    ; GCN-LABEL: name: redef_m0_same_copy32    ; GCN: liveins: $vgpr0, $sgpr033    ; GCN-NEXT: {{  $}}34    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr035    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr036    ; GCN-NEXT: $m0 = COPY [[COPY1]]37    ; GCN-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))38    ; GCN-NEXT: [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))39    %0:vgpr_32 = COPY $vgpr040    %1:sgpr_32 = COPY $sgpr041    $m0 = COPY %142    %2:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))43    $m0 = COPY %144    %3:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))45 46...47 48---49name:            multi_redef_m0_same_copy50tracksRegLiveness: true51machineFunctionInfo:52  isEntryFunction: true53body:             |54  bb.0:55    liveins: $vgpr0, $sgpr056 57    ; GCN-LABEL: name: multi_redef_m0_same_copy58    ; GCN: liveins: $vgpr0, $sgpr059    ; GCN-NEXT: {{  $}}60    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr061    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr062    ; GCN-NEXT: $m0 = COPY [[COPY1]]63    ; GCN-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))64    ; GCN-NEXT: [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))65    %0:vgpr_32 = COPY $vgpr066    %1:sgpr_32 = COPY $sgpr067    $m0 = COPY %168    %2:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))69    $m0 = COPY %170    $m0 = COPY %171    %3:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))72 73...74 75---76name:            redef_m0_different_copy77tracksRegLiveness: true78machineFunctionInfo:79  isEntryFunction: true80body:             |81  bb.0:82    liveins: $vgpr0, $sgpr0, $sgpr183 84    ; GCN-LABEL: name: redef_m0_different_copy85    ; GCN: liveins: $vgpr0, $sgpr0, $sgpr186    ; GCN-NEXT: {{  $}}87    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr088    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr089    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr190    ; GCN-NEXT: $m0 = COPY [[COPY1]]91    ; GCN-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))92    ; GCN-NEXT: $m0 = COPY [[COPY2]]93    ; GCN-NEXT: [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))94    %0:vgpr_32 = COPY $vgpr095    %1:sgpr_32 = COPY $sgpr096    %2:sgpr_32 = COPY $sgpr197    $m0 = COPY %198    %3:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))99    $m0 = COPY %2100    %4:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))101 102...103 104---105name:            redef_m0_mixed_copy0106tracksRegLiveness: true107machineFunctionInfo:108  isEntryFunction: true109body:             |110  bb.0:111    liveins: $vgpr0, $sgpr0, $sgpr1112 113    ; GCN-LABEL: name: redef_m0_mixed_copy0114    ; GCN: liveins: $vgpr0, $sgpr0, $sgpr1115    ; GCN-NEXT: {{  $}}116    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0117    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr0118    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr1119    ; GCN-NEXT: $m0 = COPY [[COPY1]]120    ; GCN-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))121    ; GCN-NEXT: $m0 = COPY [[COPY2]]122    ; GCN-NEXT: [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))123    %0:vgpr_32 = COPY $vgpr0124    %1:sgpr_32 = COPY $sgpr0125    %2:sgpr_32 = COPY $sgpr1126    $m0 = COPY %1127    %3:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))128    $m0 = COPY %1129    $m0 = COPY %2130    %4:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))131 132...133 134---135name:            redef_m0_mixed_copy1136tracksRegLiveness: true137 138machineFunctionInfo:139  isEntryFunction: true140body:             |141  bb.0:142    liveins: $vgpr0, $sgpr0, $sgpr1143 144    ; GCN-LABEL: name: redef_m0_mixed_copy1145    ; GCN: liveins: $vgpr0, $sgpr0, $sgpr1146    ; GCN-NEXT: {{  $}}147    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0148    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr0149    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr1150    ; GCN-NEXT: $m0 = COPY [[COPY1]]151    ; GCN-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))152    ; GCN-NEXT: $m0 = COPY [[COPY2]]153    ; GCN-NEXT: $m0 = COPY [[COPY1]]154    ; GCN-NEXT: [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))155    %0:vgpr_32 = COPY $vgpr0156    %1:sgpr_32 = COPY $sgpr0157    %2:sgpr_32 = COPY $sgpr1158    $m0 = COPY %1159    %3:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))160    $m0 = COPY %2161    $m0 = COPY %1162    %4:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))163 164...165 166---167name:            redef_m0_same_mov_imm168tracksRegLiveness: true169machineFunctionInfo:170  isEntryFunction: true171body:             |172  bb.0:173    liveins: $vgpr0, $sgpr0174 175    ; GCN-LABEL: name: redef_m0_same_mov_imm176    ; GCN: liveins: $vgpr0, $sgpr0177    ; GCN-NEXT: {{  $}}178    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0179    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr0180    ; GCN-NEXT: $m0 = S_MOV_B32 -1181    ; GCN-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))182    ; GCN-NEXT: [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))183    %0:vgpr_32 = COPY $vgpr0184    %1:sgpr_32 = COPY $sgpr0185    $m0 = S_MOV_B32 -1186    %2:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))187    $m0 = S_MOV_B32 -1188    %3:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))189 190...191 192---193name:            redef_m0_different_inst0194tracksRegLiveness: true195machineFunctionInfo:196  isEntryFunction: true197body:             |198  bb.0:199    liveins: $vgpr0, $sgpr0200 201    ; GCN-LABEL: name: redef_m0_different_inst0202    ; GCN: liveins: $vgpr0, $sgpr0203    ; GCN-NEXT: {{  $}}204    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0205    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr0206    ; GCN-NEXT: $m0 = COPY [[COPY1]]207    ; GCN-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))208    ; GCN-NEXT: $m0 = IMPLICIT_DEF209    ; GCN-NEXT: [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))210    %0:vgpr_32 = COPY $vgpr0211    %1:sgpr_32 = COPY $sgpr0212    $m0 = COPY %1213    %2:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))214    $m0 = IMPLICIT_DEF215    %3:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))216 217...218 219---220name:            redef_m0_different_inst1221tracksRegLiveness: true222machineFunctionInfo:223  isEntryFunction: true224body:             |225  bb.0:226    liveins: $vgpr0, $sgpr0227 228    ; GCN-LABEL: name: redef_m0_different_inst1229    ; GCN: liveins: $vgpr0, $sgpr0230    ; GCN-NEXT: {{  $}}231    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0232    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr0233    ; GCN-NEXT: $m0 = COPY [[COPY1]]234    ; GCN-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))235    ; GCN-NEXT: S_NOP 0, implicit-def $m0236    ; GCN-NEXT: [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))237    %0:vgpr_32 = COPY $vgpr0238    %1:sgpr_32 = COPY $sgpr0239    $m0 = COPY %1240    %2:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))241    S_NOP 0, implicit-def $m0242    %3:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))243 244...245 246---247name:            redef_m0_mixed_read_m0248tracksRegLiveness: true249machineFunctionInfo:250  isEntryFunction: true251body:             |252  bb.0:253    liveins: $vgpr0, $sgpr0, $sgpr1254 255    ; GCN-LABEL: name: redef_m0_mixed_read_m0256    ; GCN: liveins: $vgpr0, $sgpr0, $sgpr1257    ; GCN-NEXT: {{  $}}258    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0259    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr0260    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr1261    ; GCN-NEXT: $m0 = COPY [[COPY1]]262    ; GCN-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))263    ; GCN-NEXT: $m0 = COPY [[COPY2]]264    ; GCN-NEXT: [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))265    ; GCN-NEXT: [[DS_READ_B32_2:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 128, 0, implicit $m0, implicit $exec :: (load (s32))266    %0:vgpr_32 = COPY $vgpr0267    %1:sgpr_32 = COPY $sgpr0268    %2:sgpr_32 = COPY $sgpr1269    $m0 = COPY %1270    %3:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))271    $m0 = COPY %2272    %4:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))273    $m0 = COPY %2274    %5:vgpr_32 = DS_READ_B32 %0, 128, 0, implicit $m0, implicit $exec :: (load (s32))275...276 277---278name:            redef_m0_same_copy_call279tracksRegLiveness: true280machineFunctionInfo:281  isEntryFunction: true282body:             |283  bb.0:284    liveins: $vgpr0, $sgpr0285 286    ; GCN-LABEL: name: redef_m0_same_copy_call287    ; GCN: liveins: $vgpr0, $sgpr0288    ; GCN-NEXT: {{  $}}289    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0290    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr0291    ; GCN-NEXT: $m0 = COPY [[COPY1]]292    ; GCN-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))293    ; GCN-NEXT: dead $sgpr30_sgpr31 = SI_CALL undef $sgpr6_sgpr7, @func, csr_amdgpu294    ; GCN-NEXT: $m0 = COPY [[COPY1]]295    ; GCN-NEXT: [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))296    %0:vgpr_32 = COPY $vgpr0297    %1:sgpr_32 = COPY $sgpr0298    $m0 = COPY %1299    %2:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))300    dead $sgpr30_sgpr31 = SI_CALL undef $sgpr6_sgpr7, @func, csr_amdgpu301    $m0 = COPY %1302    %3:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))303 304...305 306---307name:            redef_m0_same_copy_multi_block308tracksRegLiveness: true309machineFunctionInfo:310  isEntryFunction: true311body:             |312  ; GCN-LABEL: name: redef_m0_same_copy_multi_block313  ; GCN: bb.0:314  ; GCN-NEXT:   successors: %bb.1(0x80000000)315  ; GCN-NEXT:   liveins: $vgpr0, $sgpr0316  ; GCN-NEXT: {{  $}}317  ; GCN-NEXT:   [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0318  ; GCN-NEXT:   [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr0319  ; GCN-NEXT:   $m0 = COPY [[COPY1]]320  ; GCN-NEXT:   [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))321  ; GCN-NEXT: {{  $}}322  ; GCN-NEXT: bb.1:323  ; GCN-NEXT:   $m0 = COPY [[COPY1]]324  ; GCN-NEXT:   [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))325  bb.0:326    liveins: $vgpr0, $sgpr0327 328    %0:vgpr_32 = COPY $vgpr0329    %1:sgpr_32 = COPY $sgpr0330    $m0 = COPY %1331    %2:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))332 333  bb.1:334    $m0 = COPY %1335    %3:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))336 337...338 339---340name:            redef_m0_copy_self341tracksRegLiveness: true342machineFunctionInfo:343  isEntryFunction: true344body:             |345  bb.0:346    liveins: $vgpr0, $sgpr0347 348    ; GCN-LABEL: name: redef_m0_copy_self349    ; GCN: liveins: $vgpr0, $sgpr0350    ; GCN-NEXT: {{  $}}351    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0352    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr0353    ; GCN-NEXT: $m0 = COPY [[COPY1]]354    ; GCN-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))355    ; GCN-NEXT: $m0 = COPY $m0356    ; GCN-NEXT: [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))357    %0:vgpr_32 = COPY $vgpr0358    %1:sgpr_32 = COPY $sgpr0359    $m0 = COPY %1360    %2:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))361    $m0 = COPY $m0362    %3:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))363 364...365 366---367name:            redef_m0_copy_physreg368tracksRegLiveness: true369machineFunctionInfo:370  isEntryFunction: true371body:             |372  bb.0:373    liveins: $vgpr0, $sgpr0374 375    ; GCN-LABEL: name: redef_m0_copy_physreg376    ; GCN: liveins: $vgpr0, $sgpr0377    ; GCN-NEXT: {{  $}}378    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0379    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr0380    ; GCN-NEXT: $m0 = COPY $sgpr0381    ; GCN-NEXT: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (s32))382    ; GCN-NEXT: $sgpr0 = S_MOV_B32 0383    ; GCN-NEXT: $m0 = COPY $sgpr0384    ; GCN-NEXT: [[DS_READ_B32_1:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 64, 0, implicit $m0, implicit $exec :: (load (s32))385    %0:vgpr_32 = COPY $vgpr0386    %1:sgpr_32 = COPY $sgpr0387    $m0 = COPY $sgpr0388    %2:vgpr_32 = DS_READ_B32 %0, 0, 0, implicit $m0, implicit $exec :: (load (s32))389    $sgpr0 = S_MOV_B32 0390    $m0 = COPY $sgpr0391    %3:vgpr_32 = DS_READ_B32 %0, 64, 0, implicit $m0, implicit $exec :: (load (s32))392 393...394