| # REQUIRES: amdgpu-registered-target |
| # RUN: llvm-reduce -abort-on-invalid-reduction -simplify-mir -mtriple=amdgcn-amd-amdhsa -mcpu=gfx908 --test FileCheck --test-arg --check-prefix=CHECK-INTERESTINGNESS --test-arg %s --test-arg --input-file %s -o %t 2> %t.log |
| # RUN: FileCheck --check-prefix=RESULT %s < %t |
| |
| # CHECK-INTERESTINGNESS-COUNT-6: S_NOP |
| |
| # RESULT: name: func |
| |
| --- | |
| define void @func() { |
| ret void |
| } |
| |
| ... |
| |
| # RESULT: machineFunctionInfo: |
| # RESULT-NEXT: explicitKernArgSize: 108 |
| # RESULT-NEXT: maxKernArgAlign: 32 |
| # RESULT-NEXT: ldsSize: 256 |
| # RESULT-NEXT: gdsSize: 128 |
| # RESULT-NEXT: dynLDSAlign: 16 |
| # RESULT-NEXT: isEntryFunction: true |
| # RESULT-NEXT: noSignedZerosFPMath: true |
| # RESULT-NEXT: memoryBound: true |
| # RESULT-NEXT: waveLimiter: true |
| # RESULT-NEXT: hasSpilledSGPRs: true |
| # RESULT-NEXT: hasSpilledVGPRs: true |
| # RESULT-NEXT: scratchRSrcReg: '$sgpr48_sgpr49_sgpr50_sgpr51' |
| # RESULT-NEXT: frameOffsetReg: '$sgpr44' |
| # RESULT-NEXT: stackPtrOffsetReg: '$sgpr45' |
| # RESULT-NEXT: bytesInStackArgArea: 112 |
| # RESULT-NEXT: returnsVoid: false |
| # RESULT-NEXT: argumentInfo: |
| # RESULT-NEXT: privateSegmentBuffer: { reg: '$sgpr60_sgpr61_sgpr62_sgpr63' } |
| # RESULT-NEXT: dispatchPtr: { reg: '$sgpr6_sgpr7' } |
| # RESULT-NEXT: queuePtr: { reg: '$sgpr4_sgpr5' } |
| # RESULT-NEXT: dispatchID: { reg: '$sgpr12_sgpr13' } |
| # RESULT-NEXT: workGroupIDX: { reg: '$sgpr20' } |
| # RESULT-NEXT: workGroupIDY: { reg: '$sgpr19' } |
| # RESULT-NEXT: workGroupIDZ: { reg: '$sgpr18' } |
| # RESULT-NEXT: LDSKernelId: { reg: '$sgpr15' } |
| # RESULT-NEXT: implicitArgPtr: { reg: '$sgpr10_sgpr11' } |
| # RESULT-NEXT: workItemIDX: { reg: '$vgpr34', mask: 1023 } |
| # RESULT-NEXT: workItemIDY: { reg: '$vgpr34', mask: 1047552 } |
| # RESULT-NEXT: workItemIDZ: { reg: '$vgpr34', mask: 1072693248 } |
| # RESULT-NEXT: mode: |
| # RESULT-NEXT: ieee: false |
| # RESULT-NEXT: dx10-clamp: false |
| # RESULT-NEXT: fp32-input-denormals: false |
| # RESULT-NEXT: fp32-output-denormals: false |
| # RESULT-NEXT: fp64-fp16-input-denormals: false |
| # RESULT-NEXT: fp64-fp16-output-denormals: false |
| # RESULT-NEXT: highBitsOf32BitAddress: 4276993775 |
| # RESULT-NEXT: occupancy: 8 |
| # RESULT-NEXT: wwmReservedRegs: |
| # RESULT-NEXT: - '$vgpr2' |
| # RESULT-NEXT: - '$vgpr3' |
| # RESULT-NEXT: vgprForAGPRCopy: '$vgpr33' |
| |
| # RESULT: S_NOP 0, implicit $sgpr48_sgpr49_sgpr50_sgpr51 |
| # RESULT: S_NOP 0, implicit $vgpr33 |
| # RESULT: S_NOP 0, implicit $sgpr44 |
| # RESULT: S_NOP 0, implicit $sgpr45 |
| # RESULT: S_NOP 0, implicit $vgpr2 |
| # RESULT: S_NOP 0, implicit $vgpr3 |
| |
| --- |
| name: func |
| tracksRegLiveness: true |
| machineFunctionInfo: |
| explicitKernArgSize: 108 |
| maxKernArgAlign: 32 |
| ldsSize: 256 |
| gdsSize: 128 |
| dynLDSAlign: 16 |
| isEntryFunction: true |
| noSignedZerosFPMath: true |
| memoryBound: true |
| waveLimiter: true |
| hasSpilledSGPRs: true |
| hasSpilledVGPRs: true |
| scratchRSrcReg: '$sgpr48_sgpr49_sgpr50_sgpr51' |
| frameOffsetReg: '$sgpr44' |
| stackPtrOffsetReg: '$sgpr45' |
| bytesInStackArgArea: 112 |
| returnsVoid: false |
| argumentInfo: |
| privateSegmentBuffer: { reg: '$sgpr60_sgpr61_sgpr62_sgpr63' } |
| dispatchPtr: { reg: '$sgpr6_sgpr7' } |
| queuePtr: { reg: '$sgpr4_sgpr5' } |
| dispatchID: { reg: '$sgpr12_sgpr13' } |
| workGroupIDX: { reg: '$sgpr20' } |
| workGroupIDY: { reg: '$sgpr19' } |
| workGroupIDZ: { reg: '$sgpr18' } |
| implicitArgPtr: { reg: '$sgpr10_sgpr11' } |
| workItemIDX: { reg: '$vgpr34', mask: 1023 } |
| workItemIDY: { reg: '$vgpr34', mask: 1047552 } |
| workItemIDZ: { reg: '$vgpr34', mask: 1072693248 } |
| mode: |
| ieee: false |
| dx10-clamp: false |
| fp32-input-denormals: false |
| fp32-output-denormals: false |
| fp64-fp16-input-denormals: false |
| fp64-fp16-output-denormals: false |
| highBitsOf32BitAddress: 0xfeedbeef |
| occupancy: 8 |
| wwmReservedRegs: |
| - '$vgpr2' |
| - '$vgpr3' |
| vgprForAGPRCopy: '$vgpr33' |
| body: | |
| bb.0: |
| S_WAITCNT 0 |
| %0:vgpr_32 = V_MOV_B32_e32 0, implicit $exec |
| |
| ; Test some register uses that are undef unless the reserved |
| ; registers are respected. |
| S_NOP 0, implicit $sgpr48_sgpr49_sgpr50_sgpr51 |
| S_NOP 0, implicit $vgpr33 |
| S_NOP 0, implicit $sgpr44 |
| S_NOP 0, implicit $sgpr45 |
| S_NOP 0, implicit $vgpr2 |
| S_NOP 0, implicit $vgpr3 |
| S_ENDPGM 0, implicit %0 |
| ... |