1 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=GCN,WAVE64 %s
2 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefixes=GCN,WAVE32 %s
4 ; GCN-LABEL: {{^}}scratch_buffer_known_high_masklo14:
5 ; GCN: v_mov_b32_e32 [[FI:v[0-9]+]], 4
6 ; GCN: v_and_b32_e32 [[MASKED:v[0-9]+]], 0x3ffc, [[FI]]
7 ; GCN: {{flat|global}}_store_dword v{{\[[0-9]+:[0-9]+\]}}, [[MASKED]]
8 define amdgpu_kernel void @scratch_buffer_known_high_masklo14() #0 {
9 %alloca = alloca i32, align 4, addrspace(5)
10 store volatile i32 0, i32 addrspace(5)* %alloca
11 %toint = ptrtoint i32 addrspace(5)* %alloca to i32
12 %masked = and i32 %toint, 16383
13 store volatile i32 %masked, i32 addrspace(1)* undef
17 ; GCN-LABEL: {{^}}scratch_buffer_known_high_masklo16:
18 ; GCN: v_mov_b32_e32 [[FI:v[0-9]+]], 4
19 ; GCN: v_and_b32_e32 [[MASKED:v[0-9]+]], 0xfffc, [[FI]]
20 ; GCN: {{flat|global}}_store_dword v{{\[[0-9]+:[0-9]+\]}}, [[MASKED]]
21 define amdgpu_kernel void @scratch_buffer_known_high_masklo16() #0 {
22 %alloca = alloca i32, align 4, addrspace(5)
23 store volatile i32 0, i32 addrspace(5)* %alloca
24 %toint = ptrtoint i32 addrspace(5)* %alloca to i32
25 %masked = and i32 %toint, 65535
26 store volatile i32 %masked, i32 addrspace(1)* undef
30 ; GCN-LABEL: {{^}}scratch_buffer_known_high_masklo17:
31 ; GCN: v_mov_b32_e32 [[FI:v[0-9]+]], 4
33 ; WAVE64: {{flat|global}}_store_dword v{{\[[0-9]+:[0-9]+\]}}, [[FI]]
35 ; WAVE32: v_and_b32_e32 [[MASKED:v[0-9]+]], 0x1fffc, [[FI]]
36 ; WAVE32: {{flat|global}}_store_dword v{{\[[0-9]+:[0-9]+\]}}, [[MASKED]]
37 define amdgpu_kernel void @scratch_buffer_known_high_masklo17() #0 {
38 %alloca = alloca i32, align 4, addrspace(5)
39 store volatile i32 0, i32 addrspace(5)* %alloca
40 %toint = ptrtoint i32 addrspace(5)* %alloca to i32
41 %masked = and i32 %toint, 131071
42 store volatile i32 %masked, i32 addrspace(1)* undef
46 ; GCN-LABEL: {{^}}scratch_buffer_known_high_mask18:
47 ; GCN: v_mov_b32_e32 [[FI:v[0-9]+]], 4
49 ; GCN: {{flat|global}}_store_dword v{{\[[0-9]+:[0-9]+\]}}, [[FI]]
50 define amdgpu_kernel void @scratch_buffer_known_high_mask18() #0 {
51 %alloca = alloca i32, align 4, addrspace(5)
52 store volatile i32 0, i32 addrspace(5)* %alloca
53 %toint = ptrtoint i32 addrspace(5)* %alloca to i32
54 %masked = and i32 %toint, 262143
55 store volatile i32 %masked, i32 addrspace(1)* undef
59 attributes #0 = { nounwind }