brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · dc9b9d6 Raw
126 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=amdgcn -mcpu=gfx942 -run-pass=si-fix-sgpr-copies -o - %s | FileCheck --check-prefix=GCN %s3---4name:            test_should_convert_to_v_readfirstlane_b325alignment:       16exposesReturnsTwice: false7legalized:       false8regBankSelected: false9selected:        false10failedISel:      false11tracksRegLiveness: true12hasWinCFI:       false13noPhis:          false14isSSA:           true15noVRegs:         false16hasFakeUses:     false17callsEHReturn:   false18callsUnwindInit: false19hasEHContTarget: false20hasEHScopes:     false21hasEHFunclets:   false22isOutlined:      false23debugInstrRef:   false24failsVerification: false25tracksDebugUserValues: false26registers:27  - { id: 0, class: vgpr_32, preferred-register: '', flags: [  ] }28  - { id: 1, class: sgpr_64, preferred-register: '', flags: [  ] }29  - { id: 2, class: sgpr_64, preferred-register: '', flags: [  ] }30  - { id: 3, class: sgpr_64, preferred-register: '', flags: [  ] }31  - { id: 4, class: sgpr_64, preferred-register: '', flags: [  ] }32  - { id: 5, class: sgpr_32, preferred-register: '', flags: [  ] }33  - { id: 6, class: sgpr_32, preferred-register: '', flags: [  ] }34  - { id: 7, class: sgpr_32, preferred-register: '', flags: [  ] }35  - { id: 8, class: sgpr_128, preferred-register: '', flags: [  ] }36  - { id: 9, class: sreg_32, preferred-register: '', flags: [  ] }37  - { id: 10, class: sreg_32, preferred-register: '', flags: [  ] }38  - { id: 11, class: sreg_32, preferred-register: '', flags: [  ] }39  - { id: 12, class: vgpr_32, preferred-register: '', flags: [  ] }40  - { id: 13, class: sreg_32, preferred-register: '', flags: [  ] }41  - { id: 14, class: sreg_32, preferred-register: '', flags: [  ] }42  - { id: 15, class: sreg_32, preferred-register: '', flags: [  ] }43  - { id: 16, class: sreg_32, preferred-register: '', flags: [  ] }44  - { id: 17, class: sreg_32, preferred-register: '', flags: [  ] }45  - { id: 18, class: sreg_32, preferred-register: '', flags: [  ] }46  - { id: 19, class: sreg_32, preferred-register: '', flags: [  ] }47  - { id: 20, class: sgpr_128, preferred-register: '', flags: [  ] }48  - { id: 21, class: sreg_32, preferred-register: '', flags: [  ] }49  - { id: 22, class: vgpr_32, preferred-register: '', flags: [  ] }50liveins:51  - { reg: '$sgpr4_sgpr5', virtual-reg: '%3' }52frameInfo:53  isFrameAddressTaken: false54  isReturnAddressTaken: false55  hasStackMap:     false56  hasPatchPoint:   false57  stackSize:       058  offsetAdjustment: 059  maxAlignment:    160  adjustsStack:    false61  hasCalls:        false62  stackProtector:  ''63  functionContext: ''64  maxCallFrameSize: 429496729565  cvBytesOfCalleeSavedRegisters: 066  hasOpaqueSPAdjustment: false67  hasVAStart:      false68  hasMustTailInVarArgFunc: false69  hasTailCall:     false70  isCalleeSavedInfoValid: false71  localFrameSize:  072  savePoint:       []73  restorePoint:    []74fixedStack:      []75stack:           []76entry_values:    []77callSites:       []78debugValueSubstitutions: []79constants:       []80machineFunctionInfo:81  isEntryFunction: true82body:             |83  bb.0:84    liveins: $sgpr4_sgpr585 86    ; GCN-LABEL: name: test_should_convert_to_v_readfirstlane_b3287    ; GCN: liveins: $sgpr4_sgpr588    ; GCN-NEXT: {{  $}}89    ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr590    ; GCN-NEXT: early-clobber %8:sgpr_128 = S_LOAD_DWORDX4_IMM_ec [[COPY]], 36, 0 :: (dereferenceable invariant load (s128), align 4, addrspace 4)91    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY %8.sub292    ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY %8.sub193    ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY %8.sub094    ; GCN-NEXT: [[V_CVT_U32_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_CVT_U32_F32_e64 0, killed [[COPY3]], 0, 0, implicit $mode, implicit $exec95    ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1696    ; GCN-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[V_CVT_U32_F32_e64_]], implicit $exec97    ; GCN-NEXT: [[S_LSHL_B32_:%[0-9]+]]:sreg_32 = S_LSHL_B32 killed [[V_READFIRSTLANE_B32_]], killed [[S_MOV_B32_]], implicit-def dead $scc98    ; GCN-NEXT: [[S_OR_B32_:%[0-9]+]]:sreg_32 = S_OR_B32 killed [[S_LSHL_B32_]], [[COPY2]], implicit-def dead $scc99    ; GCN-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 [[S_OR_B32_]], killed [[COPY1]], implicit-def dead $scc100    ; GCN-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 2101    ; GCN-NEXT: [[S_LSHR_B32_:%[0-9]+]]:sreg_32 = S_LSHR_B32 [[S_AND_B32_]], killed [[S_MOV_B32_1]], implicit-def dead $scc102    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[S_LSHR_B32_]], %subreg.sub0, [[S_OR_B32_]], %subreg.sub1, [[S_AND_B32_]], %subreg.sub2, [[S_LSHR_B32_]], %subreg.sub3103    ; GCN-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sreg_32 = S_MOV_B32 0104    ; GCN-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY2]]105    ; GCN-NEXT: BUFFER_STORE_DWORD_OFFSET_exact [[COPY4]], killed [[REG_SEQUENCE]], killed [[S_MOV_B32_2]], 0, 2, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 8)106    ; GCN-NEXT: S_ENDPGM 0107    %3:sgpr_64 = COPY $sgpr4_sgpr5108    early-clobber %8:sgpr_128 = S_LOAD_DWORDX4_IMM_ec %3, 36, 0 :: (dereferenceable invariant load (s128), align 4, addrspace 4)109    %9:sreg_32 = COPY %8.sub2110    %10:sreg_32 = COPY %8.sub1111    %11:sreg_32 = COPY %8.sub0112    %12:vgpr_32 = nofpexcept V_CVT_U32_F32_e64 0, killed %11, 0, 0, implicit $mode, implicit $exec113    %13:sreg_32 = S_MOV_B32 16114    %15:sreg_32 = COPY %12115    %14:sreg_32 = S_LSHL_B32 killed %15, killed %13, implicit-def dead $scc116    %16:sreg_32 = S_OR_B32 killed %14, %10, implicit-def dead $scc117    %17:sreg_32 = S_AND_B32 %16, killed %9, implicit-def dead $scc118    %18:sreg_32 = S_MOV_B32 2119    %19:sreg_32 = S_LSHR_B32 %17, killed %18, implicit-def dead $scc120    %20:sgpr_128 = REG_SEQUENCE %19, %subreg.sub0, %16, %subreg.sub1, %17, %subreg.sub2, %19, %subreg.sub3121    %21:sreg_32 = S_MOV_B32 0122    %22:vgpr_32 = COPY %10123    BUFFER_STORE_DWORD_OFFSET_exact %22, killed %20, killed %21, 0, 2, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 8)124    S_ENDPGM 0125...126