diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:01:22 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:01:22 +0000 |
commit | 71d5a2540a98c81f5bcaeb48805e0e2881f530ef (patch) | |
tree | 5343938942df402b49ec7300a1c25a2d4ccd5821 /test/CodeGen/AMDGPU/rcp-pattern.ll | |
parent | 31bbf64f3a4974a2d6c8b3b27ad2f519caf74057 (diff) |
Diffstat (limited to 'test/CodeGen/AMDGPU/rcp-pattern.ll')
-rw-r--r-- | test/CodeGen/AMDGPU/rcp-pattern.ll | 47 |
1 files changed, 38 insertions, 9 deletions
diff --git a/test/CodeGen/AMDGPU/rcp-pattern.ll b/test/CodeGen/AMDGPU/rcp-pattern.ll index b7cc6d47cd87..fbdaeb829297 100644 --- a/test/CodeGen/AMDGPU/rcp-pattern.ll +++ b/test/CodeGen/AMDGPU/rcp-pattern.ll @@ -9,7 +9,7 @@ ; GCN: buffer_store_dword [[RCP]] ; EG: RECIP_IEEE -define void @rcp_pat_f32(float addrspace(1)* %out, float %src) #0 { +define amdgpu_kernel void @rcp_pat_f32(float addrspace(1)* %out, float %src) #0 { %rcp = fdiv float 1.0, %src store float %rcp, float addrspace(1)* %out, align 4 ret void @@ -21,7 +21,7 @@ define void @rcp_pat_f32(float addrspace(1)* %out, float %src) #0 { ; GCN: buffer_store_dword [[RCP]] ; EG: RECIP_IEEE -define void @rcp_ulp25_pat_f32(float addrspace(1)* %out, float %src) #0 { +define amdgpu_kernel void @rcp_ulp25_pat_f32(float addrspace(1)* %out, float %src) #0 { %rcp = fdiv float 1.0, %src, !fpmath !0 store float %rcp, float addrspace(1)* %out, align 4 ret void @@ -33,7 +33,7 @@ define void @rcp_ulp25_pat_f32(float addrspace(1)* %out, float %src) #0 { ; GCN: buffer_store_dword [[RCP]] ; EG: RECIP_IEEE -define void @rcp_fast_ulp25_pat_f32(float addrspace(1)* %out, float %src) #0 { +define amdgpu_kernel void @rcp_fast_ulp25_pat_f32(float addrspace(1)* %out, float %src) #0 { %rcp = fdiv fast float 1.0, %src, !fpmath !0 store float %rcp, float addrspace(1)* %out, align 4 ret void @@ -45,7 +45,7 @@ define void @rcp_fast_ulp25_pat_f32(float addrspace(1)* %out, float %src) #0 { ; GCN: buffer_store_dword [[RCP]] ; EG: RECIP_IEEE -define void @rcp_arcp_ulp25_pat_f32(float addrspace(1)* %out, float %src) #0 { +define amdgpu_kernel void @rcp_arcp_ulp25_pat_f32(float addrspace(1)* %out, float %src) #0 { %rcp = fdiv arcp float 1.0, %src, !fpmath !0 store float %rcp, float addrspace(1)* %out, align 4 ret void @@ -57,7 +57,7 @@ define void @rcp_arcp_ulp25_pat_f32(float addrspace(1)* %out, float %src) #0 { ; GCN: buffer_store_dword [[RCP]] ; EG: RECIP_IEEE -define void @rcp_global_fast_ulp25_pat_f32(float addrspace(1)* %out, float %src) #2 { +define amdgpu_kernel void @rcp_global_fast_ulp25_pat_f32(float addrspace(1)* %out, float %src) #2 { %rcp = fdiv float 1.0, %src, !fpmath !0 store float %rcp, float addrspace(1)* %out, align 4 ret void @@ -69,7 +69,7 @@ define void @rcp_global_fast_ulp25_pat_f32(float addrspace(1)* %out, float %src) ; GCN: buffer_store_dword [[RCP]] ; EG: RECIP_IEEE -define void @rcp_fabs_pat_f32(float addrspace(1)* %out, float %src) #0 { +define amdgpu_kernel void @rcp_fabs_pat_f32(float addrspace(1)* %out, float %src) #0 { %src.fabs = call float @llvm.fabs.f32(float %src) %rcp = fdiv float 1.0, %src.fabs store float %rcp, float addrspace(1)* %out, align 4 @@ -82,7 +82,7 @@ define void @rcp_fabs_pat_f32(float addrspace(1)* %out, float %src) #0 { ; GCN: buffer_store_dword [[RCP]] ; EG: RECIP_IEEE -define void @neg_rcp_pat_f32(float addrspace(1)* %out, float %src) #0 { +define amdgpu_kernel void @neg_rcp_pat_f32(float addrspace(1)* %out, float %src) #0 { %rcp = fdiv float -1.0, %src store float %rcp, float addrspace(1)* %out, align 4 ret void @@ -92,7 +92,7 @@ define void @neg_rcp_pat_f32(float addrspace(1)* %out, float %src) #0 { ; GCN: s_load_dword [[SRC:s[0-9]+]] ; GCN: v_rcp_f32_e64 [[RCP:v[0-9]+]], -|[[SRC]]| ; GCN: buffer_store_dword [[RCP]] -define void @rcp_fabs_fneg_pat_f32(float addrspace(1)* %out, float %src) #0 { +define amdgpu_kernel void @rcp_fabs_fneg_pat_f32(float addrspace(1)* %out, float %src) #0 { %src.fabs = call float @llvm.fabs.f32(float %src) %src.fabs.fneg = fsub float -0.0, %src.fabs %rcp = fdiv float 1.0, %src.fabs.fneg @@ -106,7 +106,7 @@ define void @rcp_fabs_fneg_pat_f32(float addrspace(1)* %out, float %src) #0 { ; GCN: v_mul_f32_e64 [[MUL:v[0-9]+]], [[SRC]], -|[[SRC]]| ; GCN: buffer_store_dword [[RCP]] ; GCN: buffer_store_dword [[MUL]] -define void @rcp_fabs_fneg_pat_multi_use_f32(float addrspace(1)* %out, float %src) #0 { +define amdgpu_kernel void @rcp_fabs_fneg_pat_multi_use_f32(float addrspace(1)* %out, float %src) #0 { %src.fabs = call float @llvm.fabs.f32(float %src) %src.fabs.fneg = fsub float -0.0, %src.fabs %rcp = fdiv float 1.0, %src.fabs.fneg @@ -117,6 +117,35 @@ define void @rcp_fabs_fneg_pat_multi_use_f32(float addrspace(1)* %out, float %sr ret void } +; FUNC-LABEL: {{^}}div_arcp_2_x_pat_f32: +; GCN: v_mul_f32_e32 [[MUL:v[0-9]+]], 0.5, v{{[0-9]+}} +; GCN: buffer_store_dword [[MUL]] +define amdgpu_kernel void @div_arcp_2_x_pat_f32(float addrspace(1)* %out) #0 { + %x = load float, float addrspace(1)* undef + %rcp = fdiv arcp float %x, 2.0 + store float %rcp, float addrspace(1)* %out, align 4 + ret void +} + +; FUNC-LABEL: {{^}}div_arcp_k_x_pat_f32: +; GCN: v_mul_f32_e32 [[MUL:v[0-9]+]], 0x3dcccccd, v{{[0-9]+}} +; GCN: buffer_store_dword [[MUL]] +define amdgpu_kernel void @div_arcp_k_x_pat_f32(float addrspace(1)* %out) #0 { + %x = load float, float addrspace(1)* undef + %rcp = fdiv arcp float %x, 10.0 + store float %rcp, float addrspace(1)* %out, align 4 + ret void +} + +; FUNC-LABEL: {{^}}div_arcp_neg_k_x_pat_f32: +; GCN: v_mul_f32_e32 [[MUL:v[0-9]+]], 0xbdcccccd, v{{[0-9]+}} +; GCN: buffer_store_dword [[MUL]] +define amdgpu_kernel void @div_arcp_neg_k_x_pat_f32(float addrspace(1)* %out) #0 { + %x = load float, float addrspace(1)* undef + %rcp = fdiv arcp float %x, -10.0 + store float %rcp, float addrspace(1)* %out, align 4 + ret void +} declare float @llvm.fabs.f32(float) #1 declare float @llvm.sqrt.f32(float) #1 |