75 lines · plain
1; RUN: llc -mtriple=amdgcn < %s | FileCheck -check-prefix=GCN %s2; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global < %s | FileCheck -check-prefix=GCN %s3 4declare float @llvm.fabs.f32(float) #05declare float @llvm.copysign.f32(float, float) #06declare double @llvm.fabs.f64(double) #07declare i32 @llvm.amdgcn.frexp.exp.i32.f32(float) #08declare i32 @llvm.amdgcn.frexp.exp.i32.f64(double) #09 10; GCN-LABEL: {{^}}s_test_frexp_exp_f32:11; GCN: v_frexp_exp_i32_f32_e32 {{v[0-9]+}}, {{s[0-9]+}}12define amdgpu_kernel void @s_test_frexp_exp_f32(ptr addrspace(1) %out, float %src) #1 {13 %frexp.exp = call i32 @llvm.amdgcn.frexp.exp.i32.f32(float %src)14 store i32 %frexp.exp, ptr addrspace(1) %out15 ret void16}17 18; GCN-LABEL: {{^}}s_test_fabs_frexp_exp_f32:19; GCN: v_frexp_exp_i32_f32_e32 {{v[0-9]+}}, {{s[0-9]+}}20define amdgpu_kernel void @s_test_fabs_frexp_exp_f32(ptr addrspace(1) %out, float %src) #1 {21 %fabs.src = call float @llvm.fabs.f32(float %src)22 %frexp.exp = call i32 @llvm.amdgcn.frexp.exp.i32.f32(float %fabs.src)23 store i32 %frexp.exp, ptr addrspace(1) %out24 ret void25}26 27; GCN-LABEL: {{^}}s_test_fneg_fabs_frexp_exp_f32:28; GCN: v_frexp_exp_i32_f32_e32 {{v[0-9]+}}, {{s[0-9]+}}29define amdgpu_kernel void @s_test_fneg_fabs_frexp_exp_f32(ptr addrspace(1) %out, float %src) #1 {30 %fabs.src = call float @llvm.fabs.f32(float %src)31 %fneg.fabs.src = fneg float %fabs.src32 %frexp.exp = call i32 @llvm.amdgcn.frexp.exp.i32.f32(float %fneg.fabs.src)33 store i32 %frexp.exp, ptr addrspace(1) %out34 ret void35}36 37; GCN-LABEL: {{^}}s_test_copysign_frexp_exp_f32:38; GCN: v_frexp_exp_i32_f32_e32 {{v[0-9]+}}, {{s[0-9]+}}39define amdgpu_kernel void @s_test_copysign_frexp_exp_f32(ptr addrspace(1) %out, float %src, float %sign) #1 {40 %copysign = call float @llvm.copysign.f32(float %src, float %sign)41 %frexp.exp = call i32 @llvm.amdgcn.frexp.exp.i32.f32(float %copysign)42 store i32 %frexp.exp, ptr addrspace(1) %out43 ret void44}45 46; GCN-LABEL: {{^}}s_test_frexp_exp_f64:47; GCN: v_frexp_exp_i32_f64_e32 {{v[0-9]+}}, {{s\[[0-9]+:[0-9]+\]}}48define amdgpu_kernel void @s_test_frexp_exp_f64(ptr addrspace(1) %out, double %src) #1 {49 %frexp.exp = call i32 @llvm.amdgcn.frexp.exp.i32.f64(double %src)50 store i32 %frexp.exp, ptr addrspace(1) %out51 ret void52}53 54; GCN-LABEL: {{^}}s_test_fabs_frexp_exp_f64:55; GCN: v_frexp_exp_i32_f64_e32 {{v[0-9]+}}, {{s\[[0-9]+:[0-9]+\]}}56define amdgpu_kernel void @s_test_fabs_frexp_exp_f64(ptr addrspace(1) %out, double %src) #1 {57 %fabs.src = call double @llvm.fabs.f64(double %src)58 %frexp.exp = call i32 @llvm.amdgcn.frexp.exp.i32.f64(double %fabs.src)59 store i32 %frexp.exp, ptr addrspace(1) %out60 ret void61}62 63; GCN-LABEL: {{^}}s_test_fneg_fabs_frexp_exp_f64:64; GCN: v_frexp_exp_i32_f64_e32 {{v[0-9]+}}, {{s\[[0-9]+:[0-9]+\]}}65define amdgpu_kernel void @s_test_fneg_fabs_frexp_exp_f64(ptr addrspace(1) %out, double %src) #1 {66 %fabs.src = call double @llvm.fabs.f64(double %src)67 %fneg.fabs.src = fneg double %fabs.src68 %frexp.exp = call i32 @llvm.amdgcn.frexp.exp.i32.f64(double %fneg.fabs.src)69 store i32 %frexp.exp, ptr addrspace(1) %out70 ret void71}72 73attributes #0 = { nounwind readnone }74attributes #1 = { nounwind }75