diff options
| author | Michael Liao <michael.hliao@gmail.com> | 2019-07-03 02:00:21 +0000 |
|---|---|---|
| committer | Michael Liao <michael.hliao@gmail.com> | 2019-07-03 02:00:21 +0000 |
| commit | 80177ca5a9b0731b62943e30c7d8f39e7664bb82 (patch) | |
| tree | 6a25550f313815ad117b0209b7e21728dc85e1dc /llvm/test | |
| parent | cac1151845e6b55d38ecac014438e64f8feae687 (diff) | |
| download | bcm5719-llvm-80177ca5a9b0731b62943e30c7d8f39e7664bb82.tar.gz bcm5719-llvm-80177ca5a9b0731b62943e30c7d8f39e7664bb82.zip | |
[AMDGPU] Enable serializing of argument info.
Summary:
- Support serialization of all arguments in machine function info. This
enables fabricating MIR tests depending on argument info.
Reviewers: arsenm, rampitec
Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D64096
llvm-svn: 364995
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/AMDGPU/hazard-hidden-bundle.mir | 1 | ||||
| -rw-r--r-- | llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-no-ir.mir | 65 | ||||
| -rw-r--r-- | llvm/test/CodeGen/MIR/AMDGPU/machine-function-info.ll | 15 |
3 files changed, 81 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AMDGPU/hazard-hidden-bundle.mir b/llvm/test/CodeGen/AMDGPU/hazard-hidden-bundle.mir index 89ce72343f5..9ef2431df6e 100644 --- a/llvm/test/CodeGen/AMDGPU/hazard-hidden-bundle.mir +++ b/llvm/test/CodeGen/AMDGPU/hazard-hidden-bundle.mir @@ -3,6 +3,7 @@ # RUN: llc -march=amdgcn -mcpu=gfx1010 -mattr=-WavefrontSize32,+WavefrontSize64 -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefixes=GCN,NOXNACK,GFX10 %s # GCN-LABEL: name: break_smem_clause_simple_load_smrd8_ptr_hidden_bundle +# GCN: bb.0: # GCN: } # XNACK-NEXT: S_NOP # NOXNACK-NOT: S_NOP diff --git a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-no-ir.mir b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-no-ir.mir index 81c4f8f12be..73d0855f612 100644 --- a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-no-ir.mir +++ b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-no-ir.mir @@ -16,6 +16,12 @@ # FULL-NEXT: scratchWaveOffsetReg: '$sgpr12' # FULL-NEXT: frameOffsetReg: '$sgpr12' # FULL-NEXT: stackPtrOffsetReg: '$sgpr13' +# FULL-NEXT: argumentInfo: +# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +# FULL-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } +# FULL-NEXT: workGroupIDX: { reg: '$sgpr6' } +# FULL-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr7' } +# FULL-NEXT: workItemIDX: { reg: '$vgpr0' } # FULL-NEXT: body: # SIMPLE: machineFunctionInfo: @@ -29,6 +35,12 @@ # SIMPLE-NEXT: scratchWaveOffsetReg: '$sgpr12' # SIMPLE-NEXT: frameOffsetReg: '$sgpr12' # SIMPLE-NEXT: stackPtrOffsetReg: '$sgpr13' +# SIMPLE-NEXT: argumentInfo: +# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +# SIMPLE-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } +# SIMPLE-NEXT: workGroupIDX: { reg: '$sgpr6' } +# SIMPLE-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr7' } +# SIMPLE-NEXT: workItemIDX: { reg: '$vgpr0' } # SIMPLE-NEXT: body: name: kernel0 machineFunctionInfo: @@ -43,6 +55,12 @@ machineFunctionInfo: scratchWaveOffsetReg: '$sgpr12' frameOffsetReg: '$sgpr12' stackPtrOffsetReg: '$sgpr13' + argumentInfo: + privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } + kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } + workGroupIDX: { reg: '$sgpr6' } + privateSegmentWaveByteOffset: { reg: '$sgpr7' } + workItemIDX: { reg: '$vgpr0' } body: | bb.0: S_ENDPGM 0 @@ -64,8 +82,15 @@ body: | # FULL-NEXT: scratchWaveOffsetReg: '$scratch_wave_offset_reg' # FULL-NEXT: frameOffsetReg: '$fp_reg' # FULL-NEXT: stackPtrOffsetReg: '$sp_reg' +# FULL-NEXT: argumentInfo: +# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +# FULL-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' } +# FULL-NEXT: body: # SIMPLE: machineFunctionInfo: +# SIMPLE-NEXT: argumentInfo: +# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +# SIMPLE-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' } # SIMPLE-NEXT: body: name: no_mfi @@ -89,8 +114,15 @@ body: | # FULL-NEXT: scratchWaveOffsetReg: '$scratch_wave_offset_reg' # FULL-NEXT: frameOffsetReg: '$fp_reg' # FULL-NEXT: stackPtrOffsetReg: '$sp_reg' +# FULL-NEXT: argumentInfo: +# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +# FULL-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' } +# FULL-NEXT: body: # SIMPLE: machineFunctionInfo: +# SIMPLE-NEXT: argumentInfo: +# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +# SIMPLE-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' } # SIMPLE-NEXT: body: name: empty_mfi @@ -115,9 +147,16 @@ body: | # FULL-NEXT: scratchWaveOffsetReg: '$scratch_wave_offset_reg' # FULL-NEXT: frameOffsetReg: '$fp_reg' # FULL-NEXT: stackPtrOffsetReg: '$sp_reg' +# FULL-NEXT: argumentInfo: +# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +# FULL-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' } +# FULL-NEXT: body: # SIMPLE: machineFunctionInfo: # SIMPLE-NEXT: isEntryFunction: true +# SIMPLE-NEXT: argumentInfo: +# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +# SIMPLE-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' } # SIMPLE-NEXT: body: name: empty_mfi_entry_func @@ -149,3 +188,29 @@ body: | S_ENDPGM 0 ... + +--- +# ALL-LABEL: name: fake_stack_arginfo + +# FULL: argumentInfo: +# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +# FULL-NEXT: flatScratchInit: { offset: 4 } +# FULL-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' } +# FULL-NEXT: workItemIDY: { reg: '$vgpr0', mask: 65280 } + +# SIMPLE: argumentInfo: +# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +# SIMPLE-NEXT: flatScratchInit: { offset: 4 } +# SIMPLE-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' } +# SIMPLE-NEXT: workItemIDY: { reg: '$vgpr0', mask: 65280 } +name: fake_stack_arginfo +machineFunctionInfo: + argumentInfo: + flatScratchInit: { offset: 4 } + workItemIDY: { reg: '$vgpr0' , mask: 0xff00 } + +body: | + bb.0: + S_ENDPGM 0 + +... diff --git a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info.ll b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info.ll index 4e233495f5f..9fbf484b2c0 100644 --- a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info.ll +++ b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info.ll @@ -19,6 +19,12 @@ ; CHECK-NEXT: scratchWaveOffsetReg: '$sgpr101' ; CHECK-NEXT: frameOffsetReg: '$sgpr101' ; CHECK-NEXT: stackPtrOffsetReg: '$sgpr101' +; CHECK-NEXT: argumentInfo: +; CHECK-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +; CHECK-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } +; CHECK-NEXT: workGroupIDX: { reg: '$sgpr6' } +; CHECK-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr7' } +; CHECK-NEXT: workItemIDX: { reg: '$vgpr0' } ; CHECK-NEXT: body: define amdgpu_kernel void @kernel(i32 %arg0, i64 %arg1, <16 x i32> %arg2) { %gep = getelementptr inbounds [512 x float], [512 x float] addrspace(3)* @lds, i32 0, i32 %arg0 @@ -39,6 +45,9 @@ define amdgpu_kernel void @kernel(i32 %arg0, i64 %arg1, <16 x i32> %arg2) { ; CHECK-NEXT: scratchWaveOffsetReg: '$sgpr101' ; CHECK-NEXT: frameOffsetReg: '$sgpr101' ; CHECK-NEXT: stackPtrOffsetReg: '$sgpr101' +; CHECK-NEXT: argumentInfo: +; CHECK-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr3' } +; CHECK-NEXT: implicitBufferPtr: { reg: '$sgpr0_sgpr1' } ; CHECK-NEXT: body: define amdgpu_ps void @ps_shader(i32 %arg0, i32 inreg %arg1) { ret void @@ -57,6 +66,9 @@ define amdgpu_ps void @ps_shader(i32 %arg0, i32 inreg %arg1) { ; CHECK-NEXT: scratchWaveOffsetReg: '$sgpr33' ; CHECK-NEXT: frameOffsetReg: '$sgpr5' ; CHECK-NEXT: stackPtrOffsetReg: '$sgpr32' +; CHECK-NEXT: argumentInfo: +; CHECK-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +; CHECK-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' } ; CHECK-NEXT: body: define void @function() { ret void @@ -75,6 +87,9 @@ define void @function() { ; CHECK-NEXT: scratchWaveOffsetReg: '$sgpr33' ; CHECK-NEXT: frameOffsetReg: '$sgpr5' ; CHECK-NEXT: stackPtrOffsetReg: '$sgpr32' +; CHECK-NEXT: argumentInfo: +; CHECK-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } +; CHECK-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' } ; CHECK-NEXT: body: define void @function_nsz() #0 { ret void |

