1# REQUIRES: amdgpu-registered-target 2# 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 3# RUN: FileCheck --check-prefix=RESULT %s < %t 4 5# CHECK-INTERESTINGNESS-COUNT-6: S_NOP 6 7# RESULT: name: func 8 9--- | 10 define void @func() { 11 ret void 12 } 13 14... 15 16# RESULT: machineFunctionInfo: 17# RESULT-NEXT: explicitKernArgSize: 108 18# RESULT-NEXT: maxKernArgAlign: 32 19# RESULT-NEXT: ldsSize: 256 20# RESULT-NEXT: gdsSize: 128 21# RESULT-NEXT: dynLDSAlign: 16 22# RESULT-NEXT: isEntryFunction: true 23# RESULT-NEXT: noSignedZerosFPMath: true 24# RESULT-NEXT: memoryBound: true 25# RESULT-NEXT: waveLimiter: true 26# RESULT-NEXT: hasSpilledSGPRs: true 27# RESULT-NEXT: hasSpilledVGPRs: true 28# RESULT-NEXT: scratchRSrcReg: '$sgpr48_sgpr49_sgpr50_sgpr51' 29# RESULT-NEXT: frameOffsetReg: '$sgpr44' 30# RESULT-NEXT: stackPtrOffsetReg: '$sgpr45' 31# RESULT-NEXT: bytesInStackArgArea: 112 32# RESULT-NEXT: returnsVoid: false 33# RESULT-NEXT: argumentInfo: 34# RESULT-NEXT: privateSegmentBuffer: { reg: '$sgpr60_sgpr61_sgpr62_sgpr63' } 35# RESULT-NEXT: dispatchPtr: { reg: '$sgpr6_sgpr7' } 36# RESULT-NEXT: queuePtr: { reg: '$sgpr4_sgpr5' } 37# RESULT-NEXT: dispatchID: { reg: '$sgpr12_sgpr13' } 38# RESULT-NEXT: workGroupIDX: { reg: '$sgpr20' } 39# RESULT-NEXT: workGroupIDY: { reg: '$sgpr19' } 40# RESULT-NEXT: workGroupIDZ: { reg: '$sgpr18' } 41# RESULT-NEXT: LDSKernelId: { reg: '$sgpr15' } 42# RESULT-NEXT: implicitArgPtr: { reg: '$sgpr10_sgpr11' } 43# RESULT-NEXT: workItemIDX: { reg: '$vgpr34', mask: 1023 } 44# RESULT-NEXT: workItemIDY: { reg: '$vgpr34', mask: 1047552 } 45# RESULT-NEXT: workItemIDZ: { reg: '$vgpr34', mask: 1072693248 } 46# RESULT-NEXT: mode: 47# RESULT-NEXT: ieee: false 48# RESULT-NEXT: dx10-clamp: false 49# RESULT-NEXT: fp32-input-denormals: false 50# RESULT-NEXT: fp32-output-denormals: false 51# RESULT-NEXT: fp64-fp16-input-denormals: false 52# RESULT-NEXT: fp64-fp16-output-denormals: false 53# RESULT-NEXT: highBitsOf32BitAddress: 4276993775 54# RESULT-NEXT: occupancy: 8 55# RESULT-NEXT: wwmReservedRegs: 56# RESULT-NEXT: - '$vgpr2' 57# RESULT-NEXT: - '$vgpr3' 58# RESULT-NEXT: vgprForAGPRCopy: '$vgpr33' 59 60# RESULT: S_NOP 0, implicit $sgpr48_sgpr49_sgpr50_sgpr51 61# RESULT: S_NOP 0, implicit $vgpr33 62# RESULT: S_NOP 0, implicit $sgpr44 63# RESULT: S_NOP 0, implicit $sgpr45 64# RESULT: S_NOP 0, implicit $vgpr2 65# RESULT: S_NOP 0, implicit $vgpr3 66 67--- 68name: func 69tracksRegLiveness: true 70machineFunctionInfo: 71 explicitKernArgSize: 108 72 maxKernArgAlign: 32 73 ldsSize: 256 74 gdsSize: 128 75 dynLDSAlign: 16 76 isEntryFunction: true 77 noSignedZerosFPMath: true 78 memoryBound: true 79 waveLimiter: true 80 hasSpilledSGPRs: true 81 hasSpilledVGPRs: true 82 scratchRSrcReg: '$sgpr48_sgpr49_sgpr50_sgpr51' 83 frameOffsetReg: '$sgpr44' 84 stackPtrOffsetReg: '$sgpr45' 85 bytesInStackArgArea: 112 86 returnsVoid: false 87 argumentInfo: 88 privateSegmentBuffer: { reg: '$sgpr60_sgpr61_sgpr62_sgpr63' } 89 dispatchPtr: { reg: '$sgpr6_sgpr7' } 90 queuePtr: { reg: '$sgpr4_sgpr5' } 91 dispatchID: { reg: '$sgpr12_sgpr13' } 92 workGroupIDX: { reg: '$sgpr20' } 93 workGroupIDY: { reg: '$sgpr19' } 94 workGroupIDZ: { reg: '$sgpr18' } 95 implicitArgPtr: { reg: '$sgpr10_sgpr11' } 96 workItemIDX: { reg: '$vgpr34', mask: 1023 } 97 workItemIDY: { reg: '$vgpr34', mask: 1047552 } 98 workItemIDZ: { reg: '$vgpr34', mask: 1072693248 } 99 mode: 100 ieee: false 101 dx10-clamp: false 102 fp32-input-denormals: false 103 fp32-output-denormals: false 104 fp64-fp16-input-denormals: false 105 fp64-fp16-output-denormals: false 106 highBitsOf32BitAddress: 0xfeedbeef 107 occupancy: 8 108 wwmReservedRegs: 109 - '$vgpr2' 110 - '$vgpr3' 111 vgprForAGPRCopy: '$vgpr33' 112body: | 113 bb.0: 114 S_WAITCNT 0 115 %0:vgpr_32 = V_MOV_B32_e32 0, implicit $exec 116 117 ; Test some register uses that are undef unless the reserved 118 ; registers are respected. 119 S_NOP 0, implicit $sgpr48_sgpr49_sgpr50_sgpr51 120 S_NOP 0, implicit $vgpr33 121 S_NOP 0, implicit $sgpr44 122 S_NOP 0, implicit $sgpr45 123 S_NOP 0, implicit $vgpr2 124 S_NOP 0, implicit $vgpr3 125 S_ENDPGM 0, implicit %0 126... 127