1*9880d681SAndroid Build Coastguard Worker; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; CHECK: 'fabs_f32' 4*9880d681SAndroid Build Coastguard Worker; CHECK: estimated cost of 0 for {{.*}} call float @llvm.fabs.f32 5*9880d681SAndroid Build Coastguard Workerdefine void @fabs_f32(float addrspace(1)* %out, float addrspace(1)* %vaddr) #0 { 6*9880d681SAndroid Build Coastguard Worker %vec = load float, float addrspace(1)* %vaddr 7*9880d681SAndroid Build Coastguard Worker %fabs = call float @llvm.fabs.f32(float %vec) #1 8*9880d681SAndroid Build Coastguard Worker store float %fabs, float addrspace(1)* %out 9*9880d681SAndroid Build Coastguard Worker ret void 10*9880d681SAndroid Build Coastguard Worker} 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker; CHECK: 'fabs_v2f32' 13*9880d681SAndroid Build Coastguard Worker; CHECK: estimated cost of 0 for {{.*}} call <2 x float> @llvm.fabs.v2f32 14*9880d681SAndroid Build Coastguard Workerdefine void @fabs_v2f32(<2 x float> addrspace(1)* %out, <2 x float> addrspace(1)* %vaddr) #0 { 15*9880d681SAndroid Build Coastguard Worker %vec = load <2 x float>, <2 x float> addrspace(1)* %vaddr 16*9880d681SAndroid Build Coastguard Worker %fabs = call <2 x float> @llvm.fabs.v2f32(<2 x float> %vec) #1 17*9880d681SAndroid Build Coastguard Worker store <2 x float> %fabs, <2 x float> addrspace(1)* %out 18*9880d681SAndroid Build Coastguard Worker ret void 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker; CHECK: 'fabs_v3f32' 22*9880d681SAndroid Build Coastguard Worker; CHECK: estimated cost of 0 for {{.*}} call <3 x float> @llvm.fabs.v3f32 23*9880d681SAndroid Build Coastguard Workerdefine void @fabs_v3f32(<3 x float> addrspace(1)* %out, <3 x float> addrspace(1)* %vaddr) #0 { 24*9880d681SAndroid Build Coastguard Worker %vec = load <3 x float>, <3 x float> addrspace(1)* %vaddr 25*9880d681SAndroid Build Coastguard Worker %fabs = call <3 x float> @llvm.fabs.v3f32(<3 x float> %vec) #1 26*9880d681SAndroid Build Coastguard Worker store <3 x float> %fabs, <3 x float> addrspace(1)* %out 27*9880d681SAndroid Build Coastguard Worker ret void 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker; CHECK: 'fabs_f64' 31*9880d681SAndroid Build Coastguard Worker; CHECK: estimated cost of 0 for {{.*}} call double @llvm.fabs.f64 32*9880d681SAndroid Build Coastguard Workerdefine void @fabs_f64(double addrspace(1)* %out, double addrspace(1)* %vaddr) #0 { 33*9880d681SAndroid Build Coastguard Worker %vec = load double, double addrspace(1)* %vaddr 34*9880d681SAndroid Build Coastguard Worker %fabs = call double @llvm.fabs.f64(double %vec) #1 35*9880d681SAndroid Build Coastguard Worker store double %fabs, double addrspace(1)* %out 36*9880d681SAndroid Build Coastguard Worker ret void 37*9880d681SAndroid Build Coastguard Worker} 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker; CHECK: 'fabs_v2f64' 40*9880d681SAndroid Build Coastguard Worker; CHECK: estimated cost of 0 for {{.*}} call <2 x double> @llvm.fabs.v2f64 41*9880d681SAndroid Build Coastguard Workerdefine void @fabs_v2f64(<2 x double> addrspace(1)* %out, <2 x double> addrspace(1)* %vaddr) #0 { 42*9880d681SAndroid Build Coastguard Worker %vec = load <2 x double>, <2 x double> addrspace(1)* %vaddr 43*9880d681SAndroid Build Coastguard Worker %fabs = call <2 x double> @llvm.fabs.v2f64(<2 x double> %vec) #1 44*9880d681SAndroid Build Coastguard Worker store <2 x double> %fabs, <2 x double> addrspace(1)* %out 45*9880d681SAndroid Build Coastguard Worker ret void 46*9880d681SAndroid Build Coastguard Worker} 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Worker; CHECK: 'fabs_v3f64' 49*9880d681SAndroid Build Coastguard Worker; CHECK: estimated cost of 0 for {{.*}} call <3 x double> @llvm.fabs.v3f64 50*9880d681SAndroid Build Coastguard Workerdefine void @fabs_v3f64(<3 x double> addrspace(1)* %out, <3 x double> addrspace(1)* %vaddr) #0 { 51*9880d681SAndroid Build Coastguard Worker %vec = load <3 x double>, <3 x double> addrspace(1)* %vaddr 52*9880d681SAndroid Build Coastguard Worker %fabs = call <3 x double> @llvm.fabs.v3f64(<3 x double> %vec) #1 53*9880d681SAndroid Build Coastguard Worker store <3 x double> %fabs, <3 x double> addrspace(1)* %out 54*9880d681SAndroid Build Coastguard Worker ret void 55*9880d681SAndroid Build Coastguard Worker} 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker; CHECK: 'fabs_f16' 58*9880d681SAndroid Build Coastguard Worker; CHECK: estimated cost of 0 for {{.*}} call half @llvm.fabs.f16 59*9880d681SAndroid Build Coastguard Workerdefine void @fabs_f16(half addrspace(1)* %out, half addrspace(1)* %vaddr) #0 { 60*9880d681SAndroid Build Coastguard Worker %vec = load half, half addrspace(1)* %vaddr 61*9880d681SAndroid Build Coastguard Worker %fabs = call half @llvm.fabs.f16(half %vec) #1 62*9880d681SAndroid Build Coastguard Worker store half %fabs, half addrspace(1)* %out 63*9880d681SAndroid Build Coastguard Worker ret void 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Worker; CHECK: 'fabs_v2f16' 67*9880d681SAndroid Build Coastguard Worker; CHECK: estimated cost of 0 for {{.*}} call <2 x half> @llvm.fabs.v2f16 68*9880d681SAndroid Build Coastguard Workerdefine void @fabs_v2f16(<2 x half> addrspace(1)* %out, <2 x half> addrspace(1)* %vaddr) #0 { 69*9880d681SAndroid Build Coastguard Worker %vec = load <2 x half>, <2 x half> addrspace(1)* %vaddr 70*9880d681SAndroid Build Coastguard Worker %fabs = call <2 x half> @llvm.fabs.v2f16(<2 x half> %vec) #1 71*9880d681SAndroid Build Coastguard Worker store <2 x half> %fabs, <2 x half> addrspace(1)* %out 72*9880d681SAndroid Build Coastguard Worker ret void 73*9880d681SAndroid Build Coastguard Worker} 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker; CHECK: 'fabs_v3f16' 76*9880d681SAndroid Build Coastguard Worker; CHECK: estimated cost of 0 for {{.*}} call <3 x half> @llvm.fabs.v3f16 77*9880d681SAndroid Build Coastguard Workerdefine void @fabs_v3f16(<3 x half> addrspace(1)* %out, <3 x half> addrspace(1)* %vaddr) #0 { 78*9880d681SAndroid Build Coastguard Worker %vec = load <3 x half>, <3 x half> addrspace(1)* %vaddr 79*9880d681SAndroid Build Coastguard Worker %fabs = call <3 x half> @llvm.fabs.v3f16(<3 x half> %vec) #1 80*9880d681SAndroid Build Coastguard Worker store <3 x half> %fabs, <3 x half> addrspace(1)* %out 81*9880d681SAndroid Build Coastguard Worker ret void 82*9880d681SAndroid Build Coastguard Worker} 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.fabs.f32(float) #1 85*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @llvm.fabs.v2f32(<2 x float>) #1 86*9880d681SAndroid Build Coastguard Workerdeclare <3 x float> @llvm.fabs.v3f32(<3 x float>) #1 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Workerdeclare double @llvm.fabs.f64(double) #1 89*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.fabs.v2f64(<2 x double>) #1 90*9880d681SAndroid Build Coastguard Workerdeclare <3 x double> @llvm.fabs.v3f64(<3 x double>) #1 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Workerdeclare half @llvm.fabs.f16(half) #1 93*9880d681SAndroid Build Coastguard Workerdeclare <2 x half> @llvm.fabs.v2f16(<2 x half>) #1 94*9880d681SAndroid Build Coastguard Workerdeclare <3 x half> @llvm.fabs.v3f16(<3 x half>) #1 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 97*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind readnone } 98