xref: /llvm-project/clang/test/Headers/amdgcn_openmp_device_math.c (revision 2da4960f20f7e5d88a68ce25636a895284dc66d8)
153d28b2aSMatt Arsenault // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
2713a5d12SPushpinder Singh // RUN: %clang_cc1 -internal-isystem %S/Inputs/include -x c -fopenmp -triple x86_64-unknown-unknown -fopenmp-targets=amdgcn-amd-amdhsa -emit-llvm-bc %s -o %t-host.bc
363ca93c7SSergio Afonso // RUN: %clang_cc1 -internal-isystem %S/../../lib/Headers/openmp_wrappers -include __clang_openmp_device_functions.h -internal-isystem %S/../../lib/Headers/openmp_wrappers -internal-isystem %S/Inputs/include -x c -fopenmp -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-unknown -fopenmp-targets=amdgcn-amd-amdhsa -emit-llvm %s -fopenmp-is-target-device -fopenmp-host-ir-file-path %t-host.bc -o - | FileCheck %s --check-prefixes=CHECK,CHECK-C
4713a5d12SPushpinder Singh // RUN: %clang_cc1 -internal-isystem %S/Inputs/include -x c++ -fopenmp -triple x86_64-unknown-unknown -fopenmp-targets=amdgcn-amd-amdhsa -emit-llvm-bc %s -o %t-host.bc
563ca93c7SSergio Afonso // RUN: %clang_cc1 -internal-isystem %S/../../lib/Headers/openmp_wrappers -include __clang_openmp_device_functions.h -internal-isystem %S/../../lib/Headers/openmp_wrappers -internal-isystem %S/Inputs/include -x c++ -fopenmp -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-unknown -fopenmp-targets=amdgcn-amd-amdhsa -emit-llvm %s -fopenmp-is-target-device -fopenmp-host-ir-file-path %t-host.bc -o - | FileCheck %s --check-prefixes=CHECK,CHECK-CPP
6713a5d12SPushpinder Singh 
7713a5d12SPushpinder Singh #ifdef __cplusplus
8713a5d12SPushpinder Singh #include <cmath>
9713a5d12SPushpinder Singh #else
10713a5d12SPushpinder Singh #include <math.h>
11713a5d12SPushpinder Singh #endif
12713a5d12SPushpinder Singh 
1353d28b2aSMatt Arsenault #pragma omp begin declare target
1453d28b2aSMatt Arsenault 
1553d28b2aSMatt Arsenault // CHECK-C-LABEL: @test_math_f64(
1653d28b2aSMatt Arsenault // CHECK-C-NEXT:  entry:
17afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_I13:%.*]] = alloca double, align 8, addrspace(5)
18afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_I14:%.*]] = alloca double, align 8, addrspace(5)
19afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__Y_ADDR_I:%.*]] = alloca double, align 8, addrspace(5)
20afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__Z_ADDR_I:%.*]] = alloca double, align 8, addrspace(5)
21afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_I9:%.*]] = alloca double, align 8, addrspace(5)
22afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_I10:%.*]] = alloca double, align 8, addrspace(5)
23afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_I4:%.*]] = alloca double, align 8, addrspace(5)
24afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_I5:%.*]] = alloca double, align 8, addrspace(5)
2553d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_I:%.*]] = alloca double, align 8, addrspace(5)
2653d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_I:%.*]] = alloca double, align 8, addrspace(5)
2753d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[X_ADDR:%.*]] = alloca double, align 8, addrspace(5)
28afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[Y_ADDR:%.*]] = alloca double, align 8, addrspace(5)
29afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[Z_ADDR:%.*]] = alloca double, align 8, addrspace(5)
3053d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L1:%.*]] = alloca double, align 8, addrspace(5)
3153d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L2:%.*]] = alloca double, align 8, addrspace(5)
3253d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L3:%.*]] = alloca double, align 8, addrspace(5)
33afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[L4:%.*]] = alloca double, align 8, addrspace(5)
3453d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[X_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X_ADDR]] to ptr
35afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[Y_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Y_ADDR]] to ptr
36afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[Z_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Z_ADDR]] to ptr
3753d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L1_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L1]] to ptr
3853d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L2_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L2]] to ptr
3953d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L3_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L3]] to ptr
40afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[L4_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L4]] to ptr
4153d28b2aSMatt Arsenault // CHECK-C-NEXT:    store double [[X:%.*]], ptr [[X_ADDR_ASCAST]], align 8
42afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[Y:%.*]], ptr [[Y_ADDR_ASCAST]], align 8
43afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[Z:%.*]], ptr [[Z_ADDR_ASCAST]], align 8
4453d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP0:%.*]] = load double, ptr [[X_ADDR_ASCAST]], align 8
4553d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I]] to ptr
4653d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I]] to ptr
4753d28b2aSMatt Arsenault // CHECK-C-NEXT:    store double [[TMP0]], ptr [[__X_ADDR_ASCAST_I]], align 8
4853d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP1:%.*]] = load double, ptr [[__X_ADDR_ASCAST_I]], align 8
4953d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[CALL_I:%.*]] = call double @__ocml_sin_f64(double noundef [[TMP1]]) #[[ATTR3:[0-9]+]]
5053d28b2aSMatt Arsenault // CHECK-C-NEXT:    store double [[CALL_I]], ptr [[L1_ASCAST]], align 8
5153d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP2:%.*]] = load double, ptr [[X_ADDR_ASCAST]], align 8
52afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_ASCAST_I6:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I4]] to ptr
53afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_ASCAST_I7:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I5]] to ptr
54afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[TMP2]], ptr [[__X_ADDR_ASCAST_I7]], align 8
55afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP3:%.*]] = load double, ptr [[__X_ADDR_ASCAST_I7]], align 8
56afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[CALL_I8:%.*]] = call double @__ocml_cos_f64(double noundef [[TMP3]]) #[[ATTR3]]
57afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[CALL_I8]], ptr [[L2_ASCAST]], align 8
5853d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP4:%.*]] = load double, ptr [[X_ADDR_ASCAST]], align 8
59afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_ASCAST_I11:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I9]] to ptr
60afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_ASCAST_I12:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I10]] to ptr
61afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[TMP4]], ptr [[__X_ADDR_ASCAST_I12]], align 8
62afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP5:%.*]] = load double, ptr [[__X_ADDR_ASCAST_I12]], align 8
6353d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP6:%.*]] = call double @llvm.fabs.f64(double [[TMP5]])
6453d28b2aSMatt Arsenault // CHECK-C-NEXT:    store double [[TMP6]], ptr [[L3_ASCAST]], align 8
65afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP7:%.*]] = load double, ptr [[X_ADDR_ASCAST]], align 8
66afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP8:%.*]] = load double, ptr [[Y_ADDR_ASCAST]], align 8
67afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP9:%.*]] = load double, ptr [[Z_ADDR_ASCAST]], align 8
68afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_ASCAST_I15:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I13]] to ptr
69afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_ASCAST_I16:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I14]] to ptr
70afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__Y_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__Y_ADDR_I]] to ptr
71afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__Z_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__Z_ADDR_I]] to ptr
72afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[TMP7]], ptr [[__X_ADDR_ASCAST_I16]], align 8
73afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[TMP8]], ptr [[__Y_ADDR_ASCAST_I]], align 8
74afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[TMP9]], ptr [[__Z_ADDR_ASCAST_I]], align 8
75afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP10:%.*]] = load double, ptr [[__X_ADDR_ASCAST_I16]], align 8
76afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP11:%.*]] = load double, ptr [[__Y_ADDR_ASCAST_I]], align 8
77afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP12:%.*]] = load double, ptr [[__Z_ADDR_ASCAST_I]], align 8
78afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP13:%.*]] = call double @llvm.fma.f64(double [[TMP10]], double [[TMP11]], double [[TMP12]])
79afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[TMP13]], ptr [[L4_ASCAST]], align 8
8053d28b2aSMatt Arsenault // CHECK-C-NEXT:    ret void
8153d28b2aSMatt Arsenault //
82afa1fc47SMatt Arsenault // CHECK-CPP-LABEL: @_Z13test_math_f64ddd(
8353d28b2aSMatt Arsenault // CHECK-CPP-NEXT:  entry:
84afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I13:%.*]] = alloca double, align 8, addrspace(5)
85afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I14:%.*]] = alloca double, align 8, addrspace(5)
86afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Y_ADDR_I:%.*]] = alloca double, align 8, addrspace(5)
87afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Z_ADDR_I:%.*]] = alloca double, align 8, addrspace(5)
88afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I9:%.*]] = alloca double, align 8, addrspace(5)
89afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I10:%.*]] = alloca double, align 8, addrspace(5)
90afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I4:%.*]] = alloca double, align 8, addrspace(5)
91afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I5:%.*]] = alloca double, align 8, addrspace(5)
9253d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I:%.*]] = alloca double, align 8, addrspace(5)
9353d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I:%.*]] = alloca double, align 8, addrspace(5)
9453d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[X_ADDR:%.*]] = alloca double, align 8, addrspace(5)
95afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[Y_ADDR:%.*]] = alloca double, align 8, addrspace(5)
96afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[Z_ADDR:%.*]] = alloca double, align 8, addrspace(5)
9753d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L1:%.*]] = alloca double, align 8, addrspace(5)
9853d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L2:%.*]] = alloca double, align 8, addrspace(5)
9953d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L3:%.*]] = alloca double, align 8, addrspace(5)
100afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[L4:%.*]] = alloca double, align 8, addrspace(5)
10153d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[X_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X_ADDR]] to ptr
102afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[Y_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Y_ADDR]] to ptr
103afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[Z_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Z_ADDR]] to ptr
10453d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L1_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L1]] to ptr
10553d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L2_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L2]] to ptr
10653d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L3_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L3]] to ptr
107afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[L4_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L4]] to ptr
10853d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    store double [[X:%.*]], ptr [[X_ADDR_ASCAST]], align 8
109afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store double [[Y:%.*]], ptr [[Y_ADDR_ASCAST]], align 8
110afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store double [[Z:%.*]], ptr [[Z_ADDR_ASCAST]], align 8
11153d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[TMP0:%.*]] = load double, ptr [[X_ADDR_ASCAST]], align 8
11253d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I]] to ptr
11353d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I]] to ptr
11453d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    store double [[TMP0]], ptr [[__X_ADDR_ASCAST_I]], align 8
11553d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[TMP1:%.*]] = load double, ptr [[__X_ADDR_ASCAST_I]], align 8
116*2da4960fSNoah Goldstein // CHECK-CPP-NEXT:    [[CALL_I:%.*]] = call noundef double @__ocml_sin_f64(double noundef [[TMP1]]) #[[ATTR3:[0-9]+]]
11753d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    store double [[CALL_I]], ptr [[L1_ASCAST]], align 8
11853d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[TMP2:%.*]] = load double, ptr [[X_ADDR_ASCAST]], align 8
119afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I6:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I4]] to ptr
120afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I7:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I5]] to ptr
121afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store double [[TMP2]], ptr [[__X_ADDR_ASCAST_I7]], align 8
122afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP3:%.*]] = load double, ptr [[__X_ADDR_ASCAST_I7]], align 8
123*2da4960fSNoah Goldstein // CHECK-CPP-NEXT:    [[CALL_I8:%.*]] = call noundef double @__ocml_cos_f64(double noundef [[TMP3]]) #[[ATTR3]]
124afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store double [[CALL_I8]], ptr [[L2_ASCAST]], align 8
12553d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[TMP4:%.*]] = load double, ptr [[X_ADDR_ASCAST]], align 8
126afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I11:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I9]] to ptr
127afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I12:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I10]] to ptr
128afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store double [[TMP4]], ptr [[__X_ADDR_ASCAST_I12]], align 8
129afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP5:%.*]] = load double, ptr [[__X_ADDR_ASCAST_I12]], align 8
130*2da4960fSNoah Goldstein // CHECK-CPP-NEXT:    [[TMP6:%.*]] = call noundef double @llvm.fabs.f64(double [[TMP5]])
13153d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    store double [[TMP6]], ptr [[L3_ASCAST]], align 8
132afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP7:%.*]] = load double, ptr [[X_ADDR_ASCAST]], align 8
133afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP8:%.*]] = load double, ptr [[Y_ADDR_ASCAST]], align 8
134afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP9:%.*]] = load double, ptr [[Z_ADDR_ASCAST]], align 8
135afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I15:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I13]] to ptr
136afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I16:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I14]] to ptr
137afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Y_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__Y_ADDR_I]] to ptr
138afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Z_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__Z_ADDR_I]] to ptr
139afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store double [[TMP7]], ptr [[__X_ADDR_ASCAST_I16]], align 8
140afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store double [[TMP8]], ptr [[__Y_ADDR_ASCAST_I]], align 8
141afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store double [[TMP9]], ptr [[__Z_ADDR_ASCAST_I]], align 8
142afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP10:%.*]] = load double, ptr [[__X_ADDR_ASCAST_I16]], align 8
143afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP11:%.*]] = load double, ptr [[__Y_ADDR_ASCAST_I]], align 8
144afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP12:%.*]] = load double, ptr [[__Z_ADDR_ASCAST_I]], align 8
145*2da4960fSNoah Goldstein // CHECK-CPP-NEXT:    [[TMP13:%.*]] = call noundef double @llvm.fma.f64(double [[TMP10]], double [[TMP11]], double [[TMP12]])
146afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store double [[TMP13]], ptr [[L4_ASCAST]], align 8
14753d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    ret void
14853d28b2aSMatt Arsenault //
test_math_f64(double x,double y,double z)149afa1fc47SMatt Arsenault void test_math_f64(double x, double y, double z) {
150713a5d12SPushpinder Singh   double l1 = sin(x);
151713a5d12SPushpinder Singh   double l2 = cos(x);
152713a5d12SPushpinder Singh   double l3 = fabs(x);
153afa1fc47SMatt Arsenault   double l4 = fma(x, y, z);
154713a5d12SPushpinder Singh }
155713a5d12SPushpinder Singh 
15653d28b2aSMatt Arsenault // CHECK-C-LABEL: @test_math_f32(
15753d28b2aSMatt Arsenault // CHECK-C-NEXT:  entry:
158afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_I22:%.*]] = alloca double, align 8, addrspace(5)
159afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_I23:%.*]] = alloca double, align 8, addrspace(5)
160afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__Y_ADDR_I:%.*]] = alloca double, align 8, addrspace(5)
161afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__Z_ADDR_I:%.*]] = alloca double, align 8, addrspace(5)
162afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_I18:%.*]] = alloca double, align 8, addrspace(5)
163afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_I19:%.*]] = alloca double, align 8, addrspace(5)
16453d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_I13:%.*]] = alloca double, align 8, addrspace(5)
16553d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_I14:%.*]] = alloca double, align 8, addrspace(5)
16653d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_I:%.*]] = alloca double, align 8, addrspace(5)
16753d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_I:%.*]] = alloca double, align 8, addrspace(5)
16853d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[X_ADDR:%.*]] = alloca float, align 4, addrspace(5)
169afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[Y_ADDR:%.*]] = alloca float, align 4, addrspace(5)
170afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[Z_ADDR:%.*]] = alloca float, align 4, addrspace(5)
17153d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L1:%.*]] = alloca float, align 4, addrspace(5)
17253d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L2:%.*]] = alloca float, align 4, addrspace(5)
17353d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L3:%.*]] = alloca float, align 4, addrspace(5)
174afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[L4:%.*]] = alloca float, align 4, addrspace(5)
17553d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[X_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X_ADDR]] to ptr
176afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[Y_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Y_ADDR]] to ptr
177afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[Z_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Z_ADDR]] to ptr
17853d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L1_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L1]] to ptr
17953d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L2_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L2]] to ptr
18053d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L3_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L3]] to ptr
181afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[L4_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L4]] to ptr
18253d28b2aSMatt Arsenault // CHECK-C-NEXT:    store float [[X:%.*]], ptr [[X_ADDR_ASCAST]], align 4
183afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store float [[Y:%.*]], ptr [[Y_ADDR_ASCAST]], align 4
184afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store float [[Z:%.*]], ptr [[Z_ADDR_ASCAST]], align 4
18553d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP0:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
18653d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[CONV:%.*]] = fpext float [[TMP0]] to double
18753d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I]] to ptr
18853d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I]] to ptr
18953d28b2aSMatt Arsenault // CHECK-C-NEXT:    store double [[CONV]], ptr [[__X_ADDR_ASCAST_I]], align 8
19053d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP1:%.*]] = load double, ptr [[__X_ADDR_ASCAST_I]], align 8
19153d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[CALL_I:%.*]] = call double @__ocml_sin_f64(double noundef [[TMP1]]) #[[ATTR3]]
19253d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[CONV1:%.*]] = fptrunc double [[CALL_I]] to float
19353d28b2aSMatt Arsenault // CHECK-C-NEXT:    store float [[CONV1]], ptr [[L1_ASCAST]], align 4
19453d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP2:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
19553d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[CONV2:%.*]] = fpext float [[TMP2]] to double
196afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_ASCAST_I15:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I13]] to ptr
197afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_ASCAST_I16:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I14]] to ptr
198afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[CONV2]], ptr [[__X_ADDR_ASCAST_I16]], align 8
199afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP3:%.*]] = load double, ptr [[__X_ADDR_ASCAST_I16]], align 8
200afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[CALL_I17:%.*]] = call double @__ocml_cos_f64(double noundef [[TMP3]]) #[[ATTR3]]
201afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[CONV4:%.*]] = fptrunc double [[CALL_I17]] to float
20253d28b2aSMatt Arsenault // CHECK-C-NEXT:    store float [[CONV4]], ptr [[L2_ASCAST]], align 4
20353d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP4:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
20453d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[CONV5:%.*]] = fpext float [[TMP4]] to double
205afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_ASCAST_I20:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I18]] to ptr
206afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_ASCAST_I21:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I19]] to ptr
207afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[CONV5]], ptr [[__X_ADDR_ASCAST_I21]], align 8
208afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP5:%.*]] = load double, ptr [[__X_ADDR_ASCAST_I21]], align 8
20953d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP6:%.*]] = call double @llvm.fabs.f64(double [[TMP5]])
21053d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[CONV7:%.*]] = fptrunc double [[TMP6]] to float
21153d28b2aSMatt Arsenault // CHECK-C-NEXT:    store float [[CONV7]], ptr [[L3_ASCAST]], align 4
212afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP7:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
213afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[CONV8:%.*]] = fpext float [[TMP7]] to double
214afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP8:%.*]] = load float, ptr [[Y_ADDR_ASCAST]], align 4
215afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[CONV9:%.*]] = fpext float [[TMP8]] to double
216afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP9:%.*]] = load float, ptr [[Z_ADDR_ASCAST]], align 4
217afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[CONV10:%.*]] = fpext float [[TMP9]] to double
218afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_ASCAST_I24:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I22]] to ptr
219afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_ASCAST_I25:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I23]] to ptr
220afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__Y_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__Y_ADDR_I]] to ptr
221afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__Z_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__Z_ADDR_I]] to ptr
222afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[CONV8]], ptr [[__X_ADDR_ASCAST_I25]], align 8
223afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[CONV9]], ptr [[__Y_ADDR_ASCAST_I]], align 8
224afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store double [[CONV10]], ptr [[__Z_ADDR_ASCAST_I]], align 8
225afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP10:%.*]] = load double, ptr [[__X_ADDR_ASCAST_I25]], align 8
226afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP11:%.*]] = load double, ptr [[__Y_ADDR_ASCAST_I]], align 8
227afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP12:%.*]] = load double, ptr [[__Z_ADDR_ASCAST_I]], align 8
228afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP13:%.*]] = call double @llvm.fma.f64(double [[TMP10]], double [[TMP11]], double [[TMP12]])
229afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[CONV12:%.*]] = fptrunc double [[TMP13]] to float
230afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store float [[CONV12]], ptr [[L4_ASCAST]], align 4
23153d28b2aSMatt Arsenault // CHECK-C-NEXT:    ret void
23253d28b2aSMatt Arsenault //
233afa1fc47SMatt Arsenault // CHECK-CPP-LABEL: @_Z13test_math_f32fff(
23453d28b2aSMatt Arsenault // CHECK-CPP-NEXT:  entry:
235afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I32:%.*]] = alloca float, align 4, addrspace(5)
236afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I33:%.*]] = alloca float, align 4, addrspace(5)
237afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Y_ADDR_I34:%.*]] = alloca float, align 4, addrspace(5)
238afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Z_ADDR_I35:%.*]] = alloca float, align 4, addrspace(5)
239afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I28:%.*]] = alloca float, align 4, addrspace(5)
240afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I29:%.*]] = alloca float, align 4, addrspace(5)
241afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I24:%.*]] = alloca float, align 4, addrspace(5)
242afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I25:%.*]] = alloca float, align 4, addrspace(5)
243afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I19:%.*]] = alloca float, align 4, addrspace(5)
244afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I20:%.*]] = alloca float, align 4, addrspace(5)
245afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I14:%.*]] = alloca float, align 4, addrspace(5)
246afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I15:%.*]] = alloca float, align 4, addrspace(5)
247afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Y_ADDR_I:%.*]] = alloca float, align 4, addrspace(5)
248afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Z_ADDR_I:%.*]] = alloca float, align 4, addrspace(5)
249afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I9:%.*]] = alloca float, align 4, addrspace(5)
250afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I10:%.*]] = alloca float, align 4, addrspace(5)
251afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I4:%.*]] = alloca float, align 4, addrspace(5)
252afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I5:%.*]] = alloca float, align 4, addrspace(5)
25353d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I:%.*]] = alloca float, align 4, addrspace(5)
25453d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I:%.*]] = alloca float, align 4, addrspace(5)
25553d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[X_ADDR:%.*]] = alloca float, align 4, addrspace(5)
256afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[Y_ADDR:%.*]] = alloca float, align 4, addrspace(5)
257afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[Z_ADDR:%.*]] = alloca float, align 4, addrspace(5)
25853d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L1:%.*]] = alloca float, align 4, addrspace(5)
25953d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L2:%.*]] = alloca float, align 4, addrspace(5)
26053d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L3:%.*]] = alloca float, align 4, addrspace(5)
261afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[L4:%.*]] = alloca float, align 4, addrspace(5)
26253d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[X_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X_ADDR]] to ptr
263afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[Y_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Y_ADDR]] to ptr
264afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[Z_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Z_ADDR]] to ptr
26553d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L1_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L1]] to ptr
26653d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L2_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L2]] to ptr
26753d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L3_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L3]] to ptr
268afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[L4_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L4]] to ptr
26953d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    store float [[X:%.*]], ptr [[X_ADDR_ASCAST]], align 4
270afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[Y:%.*]], ptr [[Y_ADDR_ASCAST]], align 4
271afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[Z:%.*]], ptr [[Z_ADDR_ASCAST]], align 4
27253d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[TMP0:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
27353d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I]] to ptr
27453d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I]] to ptr
27553d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP0]], ptr [[__X_ADDR_ASCAST_I]], align 4
27653d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[TMP1:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I]], align 4
277afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I21:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I19]] to ptr
278afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I22:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I20]] to ptr
279afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP1]], ptr [[__X_ADDR_ASCAST_I22]], align 4
280afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP2:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I22]], align 4
281*2da4960fSNoah Goldstein // CHECK-CPP-NEXT:    [[CALL_I23:%.*]] = call noundef float @__ocml_sin_f32(float noundef [[TMP2]]) #[[ATTR3]]
282afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[CALL_I23]], ptr [[L1_ASCAST]], align 4
28353d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[TMP3:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
284afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I6:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I4]] to ptr
285afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I7:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I5]] to ptr
286afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP3]], ptr [[__X_ADDR_ASCAST_I7]], align 4
287afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP4:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I7]], align 4
288afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I26:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I24]] to ptr
289afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I27:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I25]] to ptr
290afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP4]], ptr [[__X_ADDR_ASCAST_I27]], align 4
291afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP5:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I27]], align 4
292*2da4960fSNoah Goldstein // CHECK-CPP-NEXT:    [[CALL_I:%.*]] = call noundef float @__ocml_cos_f32(float noundef [[TMP5]]) #[[ATTR3]]
29353d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    store float [[CALL_I]], ptr [[L2_ASCAST]], align 4
29453d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[TMP6:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
295afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I11:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I9]] to ptr
296afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I12:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I10]] to ptr
297afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP6]], ptr [[__X_ADDR_ASCAST_I12]], align 4
298afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP7:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I12]], align 4
299afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I30:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I28]] to ptr
300afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I31:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I29]] to ptr
301afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP7]], ptr [[__X_ADDR_ASCAST_I31]], align 4
302afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP8:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I31]], align 4
303*2da4960fSNoah Goldstein // CHECK-CPP-NEXT:    [[TMP9:%.*]] = call noundef float @llvm.fabs.f32(float [[TMP8]])
30453d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP9]], ptr [[L3_ASCAST]], align 4
305afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP10:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
306afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP11:%.*]] = load float, ptr [[Y_ADDR_ASCAST]], align 4
307afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP12:%.*]] = load float, ptr [[Z_ADDR_ASCAST]], align 4
308afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I16:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I14]] to ptr
309afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I17:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I15]] to ptr
310afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Y_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__Y_ADDR_I]] to ptr
311afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Z_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__Z_ADDR_I]] to ptr
312afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP10]], ptr [[__X_ADDR_ASCAST_I17]], align 4
313afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP11]], ptr [[__Y_ADDR_ASCAST_I]], align 4
314afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP12]], ptr [[__Z_ADDR_ASCAST_I]], align 4
315afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP13:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I17]], align 4
316afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP14:%.*]] = load float, ptr [[__Y_ADDR_ASCAST_I]], align 4
317afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP15:%.*]] = load float, ptr [[__Z_ADDR_ASCAST_I]], align 4
318afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I36:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I32]] to ptr
319afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I37:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I33]] to ptr
320afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Y_ADDR_ASCAST_I38:%.*]] = addrspacecast ptr addrspace(5) [[__Y_ADDR_I34]] to ptr
321afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Z_ADDR_ASCAST_I39:%.*]] = addrspacecast ptr addrspace(5) [[__Z_ADDR_I35]] to ptr
322afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP13]], ptr [[__X_ADDR_ASCAST_I37]], align 4
323afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP14]], ptr [[__Y_ADDR_ASCAST_I38]], align 4
324afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP15]], ptr [[__Z_ADDR_ASCAST_I39]], align 4
325afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP16:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I37]], align 4
326afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP17:%.*]] = load float, ptr [[__Y_ADDR_ASCAST_I38]], align 4
327afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP18:%.*]] = load float, ptr [[__Z_ADDR_ASCAST_I39]], align 4
328*2da4960fSNoah Goldstein // CHECK-CPP-NEXT:    [[TMP19:%.*]] = call noundef float @llvm.fma.f32(float [[TMP16]], float [[TMP17]], float [[TMP18]])
329afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP19]], ptr [[L4_ASCAST]], align 4
33053d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    ret void
33153d28b2aSMatt Arsenault //
test_math_f32(float x,float y,float z)332afa1fc47SMatt Arsenault void test_math_f32(float x, float y, float z) {
333713a5d12SPushpinder Singh   float l1 = sin(x);
334713a5d12SPushpinder Singh   float l2 = cos(x);
335713a5d12SPushpinder Singh   float l3 = fabs(x);
336afa1fc47SMatt Arsenault   float l4 = fma(x, y, z);
337713a5d12SPushpinder Singh }
33853d28b2aSMatt Arsenault 
33953d28b2aSMatt Arsenault // CHECK-C-LABEL: @test_math_f32_suffix(
34053d28b2aSMatt Arsenault // CHECK-C-NEXT:  entry:
341afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_I13:%.*]] = alloca float, align 4, addrspace(5)
342afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_I14:%.*]] = alloca float, align 4, addrspace(5)
343afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__Y_ADDR_I:%.*]] = alloca float, align 4, addrspace(5)
344afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__Z_ADDR_I:%.*]] = alloca float, align 4, addrspace(5)
345afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_I9:%.*]] = alloca float, align 4, addrspace(5)
346afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_I10:%.*]] = alloca float, align 4, addrspace(5)
347afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_I4:%.*]] = alloca float, align 4, addrspace(5)
348afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_I5:%.*]] = alloca float, align 4, addrspace(5)
34953d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_I:%.*]] = alloca float, align 4, addrspace(5)
35053d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_I:%.*]] = alloca float, align 4, addrspace(5)
35153d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[X_ADDR:%.*]] = alloca float, align 4, addrspace(5)
352afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[Y_ADDR:%.*]] = alloca float, align 4, addrspace(5)
353afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[Z_ADDR:%.*]] = alloca float, align 4, addrspace(5)
35453d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L1:%.*]] = alloca float, align 4, addrspace(5)
35553d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L2:%.*]] = alloca float, align 4, addrspace(5)
35653d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L3:%.*]] = alloca float, align 4, addrspace(5)
357afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[L4:%.*]] = alloca float, align 4, addrspace(5)
35853d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[X_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X_ADDR]] to ptr
359afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[Y_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Y_ADDR]] to ptr
360afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[Z_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Z_ADDR]] to ptr
36153d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L1_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L1]] to ptr
36253d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L2_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L2]] to ptr
36353d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[L3_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L3]] to ptr
364afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[L4_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L4]] to ptr
36553d28b2aSMatt Arsenault // CHECK-C-NEXT:    store float [[X:%.*]], ptr [[X_ADDR_ASCAST]], align 4
366afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store float [[Y:%.*]], ptr [[Y_ADDR_ASCAST]], align 4
367afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store float [[Z:%.*]], ptr [[Z_ADDR_ASCAST]], align 4
36853d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP0:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
36953d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I]] to ptr
37053d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I]] to ptr
37153d28b2aSMatt Arsenault // CHECK-C-NEXT:    store float [[TMP0]], ptr [[__X_ADDR_ASCAST_I]], align 4
37253d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP1:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I]], align 4
37353d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[CALL_I:%.*]] = call float @__ocml_sin_f32(float noundef [[TMP1]]) #[[ATTR3]]
37453d28b2aSMatt Arsenault // CHECK-C-NEXT:    store float [[CALL_I]], ptr [[L1_ASCAST]], align 4
37553d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP2:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
376afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_ASCAST_I6:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I4]] to ptr
377afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_ASCAST_I7:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I5]] to ptr
378afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store float [[TMP2]], ptr [[__X_ADDR_ASCAST_I7]], align 4
379afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP3:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I7]], align 4
380afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[CALL_I8:%.*]] = call float @__ocml_cos_f32(float noundef [[TMP3]]) #[[ATTR3]]
381afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store float [[CALL_I8]], ptr [[L2_ASCAST]], align 4
38253d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP4:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
383afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_ASCAST_I11:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I9]] to ptr
384afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_ASCAST_I12:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I10]] to ptr
385afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store float [[TMP4]], ptr [[__X_ADDR_ASCAST_I12]], align 4
386afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP5:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I12]], align 4
38753d28b2aSMatt Arsenault // CHECK-C-NEXT:    [[TMP6:%.*]] = call float @llvm.fabs.f32(float [[TMP5]])
38853d28b2aSMatt Arsenault // CHECK-C-NEXT:    store float [[TMP6]], ptr [[L3_ASCAST]], align 4
389afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP7:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
390afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP8:%.*]] = load float, ptr [[Y_ADDR_ASCAST]], align 4
391afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP9:%.*]] = load float, ptr [[Z_ADDR_ASCAST]], align 4
392afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[RETVAL_ASCAST_I15:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I13]] to ptr
393afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__X_ADDR_ASCAST_I16:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I14]] to ptr
394afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__Y_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__Y_ADDR_I]] to ptr
395afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[__Z_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__Z_ADDR_I]] to ptr
396afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store float [[TMP7]], ptr [[__X_ADDR_ASCAST_I16]], align 4
397afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store float [[TMP8]], ptr [[__Y_ADDR_ASCAST_I]], align 4
398afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store float [[TMP9]], ptr [[__Z_ADDR_ASCAST_I]], align 4
399afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP10:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I16]], align 4
400afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP11:%.*]] = load float, ptr [[__Y_ADDR_ASCAST_I]], align 4
401afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP12:%.*]] = load float, ptr [[__Z_ADDR_ASCAST_I]], align 4
402afa1fc47SMatt Arsenault // CHECK-C-NEXT:    [[TMP13:%.*]] = call float @llvm.fma.f32(float [[TMP10]], float [[TMP11]], float [[TMP12]])
403afa1fc47SMatt Arsenault // CHECK-C-NEXT:    store float [[TMP13]], ptr [[L4_ASCAST]], align 4
40453d28b2aSMatt Arsenault // CHECK-C-NEXT:    ret void
40553d28b2aSMatt Arsenault //
406afa1fc47SMatt Arsenault // CHECK-CPP-LABEL: @_Z20test_math_f32_suffixfff(
40753d28b2aSMatt Arsenault // CHECK-CPP-NEXT:  entry:
408afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I13:%.*]] = alloca float, align 4, addrspace(5)
409afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I14:%.*]] = alloca float, align 4, addrspace(5)
410afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Y_ADDR_I:%.*]] = alloca float, align 4, addrspace(5)
411afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Z_ADDR_I:%.*]] = alloca float, align 4, addrspace(5)
412afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I9:%.*]] = alloca float, align 4, addrspace(5)
413afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I10:%.*]] = alloca float, align 4, addrspace(5)
414afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I4:%.*]] = alloca float, align 4, addrspace(5)
415afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I5:%.*]] = alloca float, align 4, addrspace(5)
41653d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_I:%.*]] = alloca float, align 4, addrspace(5)
41753d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_I:%.*]] = alloca float, align 4, addrspace(5)
41853d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[X_ADDR:%.*]] = alloca float, align 4, addrspace(5)
419afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[Y_ADDR:%.*]] = alloca float, align 4, addrspace(5)
420afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[Z_ADDR:%.*]] = alloca float, align 4, addrspace(5)
42153d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L1:%.*]] = alloca float, align 4, addrspace(5)
42253d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L2:%.*]] = alloca float, align 4, addrspace(5)
42353d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L3:%.*]] = alloca float, align 4, addrspace(5)
424afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[L4:%.*]] = alloca float, align 4, addrspace(5)
42553d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[X_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X_ADDR]] to ptr
426afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[Y_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Y_ADDR]] to ptr
427afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[Z_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Z_ADDR]] to ptr
42853d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L1_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L1]] to ptr
42953d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L2_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L2]] to ptr
43053d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[L3_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L3]] to ptr
431afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[L4_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[L4]] to ptr
43253d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    store float [[X:%.*]], ptr [[X_ADDR_ASCAST]], align 4
433afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[Y:%.*]], ptr [[Y_ADDR_ASCAST]], align 4
434afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[Z:%.*]], ptr [[Z_ADDR_ASCAST]], align 4
43553d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[TMP0:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
43653d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I]] to ptr
43753d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I]] to ptr
43853d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP0]], ptr [[__X_ADDR_ASCAST_I]], align 4
43953d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[TMP1:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I]], align 4
440*2da4960fSNoah Goldstein // CHECK-CPP-NEXT:    [[CALL_I:%.*]] = call noundef float @__ocml_sin_f32(float noundef [[TMP1]]) #[[ATTR3]]
44153d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    store float [[CALL_I]], ptr [[L1_ASCAST]], align 4
44253d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[TMP2:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
443afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I6:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I4]] to ptr
444afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I7:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I5]] to ptr
445afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP2]], ptr [[__X_ADDR_ASCAST_I7]], align 4
446afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP3:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I7]], align 4
447*2da4960fSNoah Goldstein // CHECK-CPP-NEXT:    [[CALL_I8:%.*]] = call noundef float @__ocml_cos_f32(float noundef [[TMP3]]) #[[ATTR3]]
448afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[CALL_I8]], ptr [[L2_ASCAST]], align 4
44953d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    [[TMP4:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
450afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I11:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I9]] to ptr
451afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I12:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I10]] to ptr
452afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP4]], ptr [[__X_ADDR_ASCAST_I12]], align 4
453afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP5:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I12]], align 4
454*2da4960fSNoah Goldstein // CHECK-CPP-NEXT:    [[TMP6:%.*]] = call noundef float @llvm.fabs.f32(float [[TMP5]])
45553d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP6]], ptr [[L3_ASCAST]], align 4
456afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP7:%.*]] = load float, ptr [[X_ADDR_ASCAST]], align 4
457afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP8:%.*]] = load float, ptr [[Y_ADDR_ASCAST]], align 4
458afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP9:%.*]] = load float, ptr [[Z_ADDR_ASCAST]], align 4
459afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[RETVAL_ASCAST_I15:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL_I13]] to ptr
460afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__X_ADDR_ASCAST_I16:%.*]] = addrspacecast ptr addrspace(5) [[__X_ADDR_I14]] to ptr
461afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Y_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__Y_ADDR_I]] to ptr
462afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[__Z_ADDR_ASCAST_I:%.*]] = addrspacecast ptr addrspace(5) [[__Z_ADDR_I]] to ptr
463afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP7]], ptr [[__X_ADDR_ASCAST_I16]], align 4
464afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP8]], ptr [[__Y_ADDR_ASCAST_I]], align 4
465afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP9]], ptr [[__Z_ADDR_ASCAST_I]], align 4
466afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP10:%.*]] = load float, ptr [[__X_ADDR_ASCAST_I16]], align 4
467afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP11:%.*]] = load float, ptr [[__Y_ADDR_ASCAST_I]], align 4
468afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    [[TMP12:%.*]] = load float, ptr [[__Z_ADDR_ASCAST_I]], align 4
469*2da4960fSNoah Goldstein // CHECK-CPP-NEXT:    [[TMP13:%.*]] = call noundef float @llvm.fma.f32(float [[TMP10]], float [[TMP11]], float [[TMP12]])
470afa1fc47SMatt Arsenault // CHECK-CPP-NEXT:    store float [[TMP13]], ptr [[L4_ASCAST]], align 4
47153d28b2aSMatt Arsenault // CHECK-CPP-NEXT:    ret void
47253d28b2aSMatt Arsenault //
test_math_f32_suffix(float x,float y,float z)473afa1fc47SMatt Arsenault void test_math_f32_suffix(float x, float y, float z) {
474713a5d12SPushpinder Singh   float l1 = sinf(x);
475713a5d12SPushpinder Singh   float l2 = cosf(x);
476713a5d12SPushpinder Singh   float l3 = fabsf(x);
477afa1fc47SMatt Arsenault   float l4 = fmaf(x, y, z);
478713a5d12SPushpinder Singh }
47953d28b2aSMatt Arsenault 
48053d28b2aSMatt Arsenault #pragma omp end declare target
48153d28b2aSMatt Arsenault //// NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
48253d28b2aSMatt Arsenault // CHECK: {{.*}}
483