diff options
Diffstat (limited to 'llvm/test/CodeGen/AMDGPU/frame-index-elimination.ll')
| -rw-r--r-- | llvm/test/CodeGen/AMDGPU/frame-index-elimination.ll | 62 |
1 files changed, 31 insertions, 31 deletions
diff --git a/llvm/test/CodeGen/AMDGPU/frame-index-elimination.ll b/llvm/test/CodeGen/AMDGPU/frame-index-elimination.ll index 1e97aa42df3..bf49988f00c 100644 --- a/llvm/test/CodeGen/AMDGPU/frame-index-elimination.ll +++ b/llvm/test/CodeGen/AMDGPU/frame-index-elimination.ll @@ -7,10 +7,10 @@ ; Materialize into a mov. Make sure there isn't an unnecessary copy. ; GCN-LABEL: {{^}}func_mov_fi_i32: ; GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) -; GCN: s_sub_u32 s6, s32, s4 +; GCN: s_sub_u32 [[SUB:s[0-9]+]], s32, s33 -; CI-NEXT: v_lshr_b32_e64 v0, s6, 6 -; GFX9-NEXT: v_lshrrev_b32_e64 v0, 6, s6 +; CI-NEXT: v_lshr_b32_e64 v0, [[SUB]], 6 +; GFX9-NEXT: v_lshrrev_b32_e64 v0, 6, [[SUB]] ; GCN-NOT: v_mov ; GCN: ds_write_b32 v0, v0 @@ -24,22 +24,22 @@ define void @func_mov_fi_i32() #0 { ; GCN-LABEL: {{^}}func_mov_fi_i32_offset: ; GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) -; CI: s_sub_u32 s6, s32, s4 -; CI-NEXT: v_lshr_b32_e64 v0, s6, 6 +; CI: s_sub_u32 [[SUB:s[0-9]+]], s32, s33 +; CI-NEXT: v_lshr_b32_e64 v0, [[SUB]], 6 -; CI: s_sub_u32 s6, s32, s4 -; CI-NEXT: v_lshr_b32_e64 [[SCALED:v[0-9]+]], s6, 6 +; CI: s_sub_u32 [[SUB:s[0-9]+]], s32, s33 +; CI-NEXT: v_lshr_b32_e64 [[SCALED:v[0-9]+]], [[SUB]], 6 ; CI-NEXT: v_add_i32_e64 v1, s[6:7], 4, [[SCALED]] ; CI-NOT: v_mov ; CI: ds_write_b32 v0, v0 ; CI-NEXT: ds_write_b32 v0, v1 -; GFX9: s_sub_u32 s6, s32, s4 -; GFX9-NEXT: v_lshrrev_b32_e64 v0, 6, s6 +; GFX9: s_sub_u32 [[SUB:s[0-9]+]], s32, s33 +; GFX9-NEXT: v_lshrrev_b32_e64 v0, 6, [[SUB]] ; GFX9-DAG: ds_write_b32 v0, v0 -; GFX9-DAG: s_sub_u32 s6, s32, s4 -; GFX9-NEXT: v_lshrrev_b32_e64 [[SCALED:v[0-9]+]], 6, s6 +; GFX9-DAG: s_sub_u32 [[SUB:s[0-9]+]], s32, s33 +; GFX9-NEXT: v_lshrrev_b32_e64 [[SCALED:v[0-9]+]], 6, [[SUB]] ; GFX9-NEXT: v_add_u32_e32 v0, 4, [[SCALED]] ; GFX9-NEXT: ds_write_b32 v0, v0 define void @func_mov_fi_i32_offset() #0 { @@ -55,12 +55,12 @@ define void @func_mov_fi_i32_offset() #0 { ; GCN-LABEL: {{^}}func_add_constant_to_fi_i32: ; GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) -; GCN: s_sub_u32 s6, s32, s4 +; GCN: s_sub_u32 [[SUB:s[0-9]+]], s32, s33 -; CI-NEXT: v_lshr_b32_e64 [[SCALED:v[0-9]+]], s6, 6 +; CI-NEXT: v_lshr_b32_e64 [[SCALED:v[0-9]+]], [[SUB]], 6 ; CI-NEXT: v_add_i32_e32 v0, vcc, 4, [[SCALED]] -; GFX9-NEXT: v_lshrrev_b32_e64 [[SCALED:v[0-9]+]], 6, s6 +; GFX9-NEXT: v_lshrrev_b32_e64 [[SCALED:v[0-9]+]], 6, [[SUB]] ; GFX9-NEXT: v_add_u32_e32 v0, 4, [[SCALED]] @@ -77,11 +77,11 @@ define void @func_add_constant_to_fi_i32() #0 { ; into. ; GCN-LABEL: {{^}}func_other_fi_user_i32: -; GCN: s_sub_u32 s6, s32, s4 +; GCN: s_sub_u32 [[SUB:s[0-9]+]], s32, s33 -; CI-NEXT: v_lshr_b32_e64 v0, s6, 6 +; CI-NEXT: v_lshr_b32_e64 v0, [[SUB]], 6 -; GFX9-NEXT: v_lshrrev_b32_e64 v0, 6, s6 +; GFX9-NEXT: v_lshrrev_b32_e64 v0, 6, [[SUB]] ; GCN-NEXT: v_mul_u32_u24_e32 v0, 9, v0 ; GCN-NOT: v_mov @@ -96,7 +96,7 @@ define void @func_other_fi_user_i32() #0 { ; GCN-LABEL: {{^}}func_store_private_arg_i32_ptr: ; GCN: v_mov_b32_e32 v1, 15{{$}} -; GCN: buffer_store_dword v1, v0, s[0:3], s4 offen{{$}} +; GCN: buffer_store_dword v1, v0, s[0:3], s33 offen{{$}} define void @func_store_private_arg_i32_ptr(i32 addrspace(5)* %ptr) #0 { store volatile i32 15, i32 addrspace(5)* %ptr ret void @@ -104,7 +104,7 @@ define void @func_store_private_arg_i32_ptr(i32 addrspace(5)* %ptr) #0 { ; GCN-LABEL: {{^}}func_load_private_arg_i32_ptr: ; GCN: s_waitcnt -; GCN-NEXT: buffer_load_dword v0, v0, s[0:3], s4 offen{{$}} +; GCN-NEXT: buffer_load_dword v0, v0, s[0:3], s33 offen{{$}} define void @func_load_private_arg_i32_ptr(i32 addrspace(5)* %ptr) #0 { %val = load volatile i32, i32 addrspace(5)* %ptr ret void @@ -112,7 +112,7 @@ define void @func_load_private_arg_i32_ptr(i32 addrspace(5)* %ptr) #0 { ; GCN-LABEL: {{^}}void_func_byval_struct_i8_i32_ptr: ; GCN: s_waitcnt -; GCN-NEXT: s_sub_u32 [[SUB_OFFSET:s[0-9]+]], s32, s4 +; GCN-NEXT: s_sub_u32 [[SUB_OFFSET:s[0-9]+]], s32, s33 ; CI-NEXT: v_lshr_b32_e64 [[SHIFT:v[0-9]+]], [[SUB_OFFSET]], 6 ; CI-NEXT: v_or_b32_e32 v0, 4, [[SHIFT]] @@ -148,7 +148,7 @@ define void @void_func_byval_struct_i8_i32_ptr_value({ i8, i32 } addrspace(5)* b ; FrameIndex is hidden behind a CopyFromReg in the second block. ; GCN-LABEL: {{^}}void_func_byval_struct_i8_i32_ptr_nonentry_block: -; GCN: s_sub_u32 [[SUB_OFFSET:s[0-9]+]], s32, s4 +; GCN: s_sub_u32 [[SUB_OFFSET:s[0-9]+]], s32, s33 ; CI: v_lshr_b32_e64 [[SHIFT:v[0-9]+]], [[SUB_OFFSET]], 6 @@ -157,10 +157,10 @@ define void @void_func_byval_struct_i8_i32_ptr_value({ i8, i32 } addrspace(5)* b ; GCN: s_and_saveexec_b64 ; CI: v_add_i32_e32 v0, vcc, 4, [[SHIFT]] -; CI: buffer_load_dword v1, v1, s[0:3], s4 offen offset:4{{$}} +; CI: buffer_load_dword v1, v1, s[0:3], s33 offen offset:4{{$}} ; GFX9: v_add_u32_e32 v0, 4, [[SHIFT]] -; GFX9: buffer_load_dword v1, v{{[0-9]+}}, s[0:3], s4 offen offset:4{{$}} +; GFX9: buffer_load_dword v1, v{{[0-9]+}}, s[0:3], s33 offen offset:4{{$}} ; GCN: ds_write_b32 define void @void_func_byval_struct_i8_i32_ptr_nonentry_block({ i8, i32 } addrspace(5)* byval %arg0, i32 %arg2) #0 { @@ -180,14 +180,14 @@ ret: ; Added offset can't be used with VOP3 add ; GCN-LABEL: {{^}}func_other_fi_user_non_inline_imm_offset_i32: -; GCN: s_sub_u32 s6, s32, s4 -; GCN-DAG: s_movk_i32 s6, 0x200 +; GCN: s_sub_u32 [[SUB:s[0-9]+]], s32, s33 +; GCN-DAG: s_movk_i32 [[K:s[0-9]+]], 0x200 -; CI-DAG: v_lshr_b32_e64 [[SCALED:v[0-9]+]], s6, 6 -; CI: v_add_i32_e64 [[VZ:v[0-9]+]], s[6:7], s6, [[SCALED]] +; CI-DAG: v_lshr_b32_e64 [[SCALED:v[0-9]+]], [[SUB]], 6 +; CI: v_add_i32_e64 [[VZ:v[0-9]+]], s[6:7], [[K]], [[SCALED]] -; GFX9-DAG: v_lshrrev_b32_e64 [[SCALED:v[0-9]+]], 6, s6 -; GFX9: v_add_u32_e32 [[VZ:v[0-9]+]], s6, [[SCALED]] +; GFX9-DAG: v_lshrrev_b32_e64 [[SCALED:v[0-9]+]], 6, [[SUB]] +; GFX9: v_add_u32_e32 [[VZ:v[0-9]+]], [[K]], [[SCALED]] ; GCN: v_mul_u32_u24_e32 [[VZ]], 9, [[VZ]] ; GCN: ds_write_b32 v0, [[VZ]] @@ -204,7 +204,7 @@ define void @func_other_fi_user_non_inline_imm_offset_i32() #0 { } ; GCN-LABEL: {{^}}func_other_fi_user_non_inline_imm_offset_i32_vcc_live: -; GCN: s_sub_u32 [[DIFF:s[0-9]+]], s32, s4 +; GCN: s_sub_u32 [[DIFF:s[0-9]+]], s32, s33 ; GCN-DAG: s_movk_i32 [[OFFSET:s[0-9]+]], 0x200 ; CI-DAG: v_lshr_b32_e64 [[SCALED:v[0-9]+]], [[DIFF]], 6 @@ -261,7 +261,7 @@ bb5: ; GCN-LABEL: {{^}}alloca_ptr_nonentry_block: ; GCN: s_and_saveexec_b64 ; GCN: buffer_load_dword v{{[0-9]+}}, off, s[0:3], s32 offset:4 -; GCN: s_sub_u32 [[SUB_OFFSET:s[0-9]+]], s32, s4 +; GCN: s_sub_u32 [[SUB_OFFSET:s[0-9]+]], s32, s33 ; CI: v_lshr_b32_e64 [[SHIFT:v[0-9]+]], [[SUB_OFFSET]], 6 ; CI-NEXT: v_or_b32_e32 [[PTR:v[0-9]+]], 4, [[SHIFT]] |

