xref: /aosp_15_r20/external/clang/test/CodeGen/fma-builtins.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +fma -emit-llvm -o - | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li // Don't include mm_malloc.h, it's system specific.
4*67e74705SXin Li #define __MM_MALLOC_H
5*67e74705SXin Li 
6*67e74705SXin Li #include <immintrin.h>
7*67e74705SXin Li 
test_mm_fmadd_ps(__m128 a,__m128 b,__m128 c)8*67e74705SXin Li __m128 test_mm_fmadd_ps(__m128 a, __m128 b, __m128 c) {
9*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmadd.ps
10*67e74705SXin Li   return _mm_fmadd_ps(a, b, c);
11*67e74705SXin Li }
12*67e74705SXin Li 
test_mm_fmadd_pd(__m128d a,__m128d b,__m128d c)13*67e74705SXin Li __m128d test_mm_fmadd_pd(__m128d a, __m128d b, __m128d c) {
14*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmadd.pd
15*67e74705SXin Li   return _mm_fmadd_pd(a, b, c);
16*67e74705SXin Li }
17*67e74705SXin Li 
test_mm_fmadd_ss(__m128 a,__m128 b,__m128 c)18*67e74705SXin Li __m128 test_mm_fmadd_ss(__m128 a, __m128 b, __m128 c) {
19*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmadd.ss
20*67e74705SXin Li   return _mm_fmadd_ss(a, b, c);
21*67e74705SXin Li }
22*67e74705SXin Li 
test_mm_fmadd_sd(__m128d a,__m128d b,__m128d c)23*67e74705SXin Li __m128d test_mm_fmadd_sd(__m128d a, __m128d b, __m128d c) {
24*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmadd.sd
25*67e74705SXin Li   return _mm_fmadd_sd(a, b, c);
26*67e74705SXin Li }
27*67e74705SXin Li 
test_mm_fmsub_ps(__m128 a,__m128 b,__m128 c)28*67e74705SXin Li __m128 test_mm_fmsub_ps(__m128 a, __m128 b, __m128 c) {
29*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmsub.ps
30*67e74705SXin Li   return _mm_fmsub_ps(a, b, c);
31*67e74705SXin Li }
32*67e74705SXin Li 
test_mm_fmsub_pd(__m128d a,__m128d b,__m128d c)33*67e74705SXin Li __m128d test_mm_fmsub_pd(__m128d a, __m128d b, __m128d c) {
34*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmsub.pd
35*67e74705SXin Li   return _mm_fmsub_pd(a, b, c);
36*67e74705SXin Li }
37*67e74705SXin Li 
test_mm_fmsub_ss(__m128 a,__m128 b,__m128 c)38*67e74705SXin Li __m128 test_mm_fmsub_ss(__m128 a, __m128 b, __m128 c) {
39*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmsub.ss
40*67e74705SXin Li   return _mm_fmsub_ss(a, b, c);
41*67e74705SXin Li }
42*67e74705SXin Li 
test_mm_fmsub_sd(__m128d a,__m128d b,__m128d c)43*67e74705SXin Li __m128d test_mm_fmsub_sd(__m128d a, __m128d b, __m128d c) {
44*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmsub.sd
45*67e74705SXin Li   return _mm_fmsub_sd(a, b, c);
46*67e74705SXin Li }
47*67e74705SXin Li 
test_mm_fnmadd_ps(__m128 a,__m128 b,__m128 c)48*67e74705SXin Li __m128 test_mm_fnmadd_ps(__m128 a, __m128 b, __m128 c) {
49*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfnmadd.ps
50*67e74705SXin Li   return _mm_fnmadd_ps(a, b, c);
51*67e74705SXin Li }
52*67e74705SXin Li 
test_mm_fnmadd_pd(__m128d a,__m128d b,__m128d c)53*67e74705SXin Li __m128d test_mm_fnmadd_pd(__m128d a, __m128d b, __m128d c) {
54*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfnmadd.pd
55*67e74705SXin Li   return _mm_fnmadd_pd(a, b, c);
56*67e74705SXin Li }
57*67e74705SXin Li 
test_mm_fnmadd_ss(__m128 a,__m128 b,__m128 c)58*67e74705SXin Li __m128 test_mm_fnmadd_ss(__m128 a, __m128 b, __m128 c) {
59*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfnmadd.ss
60*67e74705SXin Li   return _mm_fnmadd_ss(a, b, c);
61*67e74705SXin Li }
62*67e74705SXin Li 
test_mm_fnmadd_sd(__m128d a,__m128d b,__m128d c)63*67e74705SXin Li __m128d test_mm_fnmadd_sd(__m128d a, __m128d b, __m128d c) {
64*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfnmadd.sd
65*67e74705SXin Li   return _mm_fnmadd_sd(a, b, c);
66*67e74705SXin Li }
67*67e74705SXin Li 
test_mm_fnmsub_ps(__m128 a,__m128 b,__m128 c)68*67e74705SXin Li __m128 test_mm_fnmsub_ps(__m128 a, __m128 b, __m128 c) {
69*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfnmsub.ps
70*67e74705SXin Li   return _mm_fnmsub_ps(a, b, c);
71*67e74705SXin Li }
72*67e74705SXin Li 
test_mm_fnmsub_pd(__m128d a,__m128d b,__m128d c)73*67e74705SXin Li __m128d test_mm_fnmsub_pd(__m128d a, __m128d b, __m128d c) {
74*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfnmsub.pd
75*67e74705SXin Li   return _mm_fnmsub_pd(a, b, c);
76*67e74705SXin Li }
77*67e74705SXin Li 
test_mm_fnmsub_ss(__m128 a,__m128 b,__m128 c)78*67e74705SXin Li __m128 test_mm_fnmsub_ss(__m128 a, __m128 b, __m128 c) {
79*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfnmsub.ss
80*67e74705SXin Li   return _mm_fnmsub_ss(a, b, c);
81*67e74705SXin Li }
82*67e74705SXin Li 
test_mm_fnmsub_sd(__m128d a,__m128d b,__m128d c)83*67e74705SXin Li __m128d test_mm_fnmsub_sd(__m128d a, __m128d b, __m128d c) {
84*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfnmsub.sd
85*67e74705SXin Li   return _mm_fnmsub_sd(a, b, c);
86*67e74705SXin Li }
87*67e74705SXin Li 
test_mm_fmaddsub_ps(__m128 a,__m128 b,__m128 c)88*67e74705SXin Li __m128 test_mm_fmaddsub_ps(__m128 a, __m128 b, __m128 c) {
89*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmaddsub.ps
90*67e74705SXin Li   return _mm_fmaddsub_ps(a, b, c);
91*67e74705SXin Li }
92*67e74705SXin Li 
test_mm_fmaddsub_pd(__m128d a,__m128d b,__m128d c)93*67e74705SXin Li __m128d test_mm_fmaddsub_pd(__m128d a, __m128d b, __m128d c) {
94*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmaddsub.pd
95*67e74705SXin Li   return _mm_fmaddsub_pd(a, b, c);
96*67e74705SXin Li }
97*67e74705SXin Li 
test_mm_fmsubadd_ps(__m128 a,__m128 b,__m128 c)98*67e74705SXin Li __m128 test_mm_fmsubadd_ps(__m128 a, __m128 b, __m128 c) {
99*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmsubadd.ps
100*67e74705SXin Li   return _mm_fmsubadd_ps(a, b, c);
101*67e74705SXin Li }
102*67e74705SXin Li 
test_mm_fmsubadd_pd(__m128d a,__m128d b,__m128d c)103*67e74705SXin Li __m128d test_mm_fmsubadd_pd(__m128d a, __m128d b, __m128d c) {
104*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmsubadd.pd
105*67e74705SXin Li   return _mm_fmsubadd_pd(a, b, c);
106*67e74705SXin Li }
107*67e74705SXin Li 
test_mm256_fmadd_ps(__m256 a,__m256 b,__m256 c)108*67e74705SXin Li __m256 test_mm256_fmadd_ps(__m256 a, __m256 b, __m256 c) {
109*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmadd.ps.256
110*67e74705SXin Li   return _mm256_fmadd_ps(a, b, c);
111*67e74705SXin Li }
112*67e74705SXin Li 
test_mm256_fmadd_pd(__m256d a,__m256d b,__m256d c)113*67e74705SXin Li __m256d test_mm256_fmadd_pd(__m256d a, __m256d b, __m256d c) {
114*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmadd.pd.256
115*67e74705SXin Li   return _mm256_fmadd_pd(a, b, c);
116*67e74705SXin Li }
117*67e74705SXin Li 
test_mm256_fmsub_ps(__m256 a,__m256 b,__m256 c)118*67e74705SXin Li __m256 test_mm256_fmsub_ps(__m256 a, __m256 b, __m256 c) {
119*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmsub.ps.256
120*67e74705SXin Li   return _mm256_fmsub_ps(a, b, c);
121*67e74705SXin Li }
122*67e74705SXin Li 
test_mm256_fmsub_pd(__m256d a,__m256d b,__m256d c)123*67e74705SXin Li __m256d test_mm256_fmsub_pd(__m256d a, __m256d b, __m256d c) {
124*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmsub.pd.256
125*67e74705SXin Li   return _mm256_fmsub_pd(a, b, c);
126*67e74705SXin Li }
127*67e74705SXin Li 
test_mm256_fnmadd_ps(__m256 a,__m256 b,__m256 c)128*67e74705SXin Li __m256 test_mm256_fnmadd_ps(__m256 a, __m256 b, __m256 c) {
129*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfnmadd.ps.256
130*67e74705SXin Li   return _mm256_fnmadd_ps(a, b, c);
131*67e74705SXin Li }
132*67e74705SXin Li 
test_mm256_fnmadd_pd(__m256d a,__m256d b,__m256d c)133*67e74705SXin Li __m256d test_mm256_fnmadd_pd(__m256d a, __m256d b, __m256d c) {
134*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfnmadd.pd.256
135*67e74705SXin Li   return _mm256_fnmadd_pd(a, b, c);
136*67e74705SXin Li }
137*67e74705SXin Li 
test_mm256_fnmsub_ps(__m256 a,__m256 b,__m256 c)138*67e74705SXin Li __m256 test_mm256_fnmsub_ps(__m256 a, __m256 b, __m256 c) {
139*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfnmsub.ps.256
140*67e74705SXin Li   return _mm256_fnmsub_ps(a, b, c);
141*67e74705SXin Li }
142*67e74705SXin Li 
test_mm256_fnmsub_pd(__m256d a,__m256d b,__m256d c)143*67e74705SXin Li __m256d test_mm256_fnmsub_pd(__m256d a, __m256d b, __m256d c) {
144*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfnmsub.pd.256
145*67e74705SXin Li   return _mm256_fnmsub_pd(a, b, c);
146*67e74705SXin Li }
147*67e74705SXin Li 
test_mm256_fmaddsub_ps(__m256 a,__m256 b,__m256 c)148*67e74705SXin Li __m256 test_mm256_fmaddsub_ps(__m256 a, __m256 b, __m256 c) {
149*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmaddsub.ps.256
150*67e74705SXin Li   return _mm256_fmaddsub_ps(a, b, c);
151*67e74705SXin Li }
152*67e74705SXin Li 
test_mm256_fmaddsub_pd(__m256d a,__m256d b,__m256d c)153*67e74705SXin Li __m256d test_mm256_fmaddsub_pd(__m256d a, __m256d b, __m256d c) {
154*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmaddsub.pd.256
155*67e74705SXin Li   return _mm256_fmaddsub_pd(a, b, c);
156*67e74705SXin Li }
157*67e74705SXin Li 
test_mm256_fmsubadd_ps(__m256 a,__m256 b,__m256 c)158*67e74705SXin Li __m256 test_mm256_fmsubadd_ps(__m256 a, __m256 b, __m256 c) {
159*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmsubadd.ps.256
160*67e74705SXin Li   return _mm256_fmsubadd_ps(a, b, c);
161*67e74705SXin Li }
162*67e74705SXin Li 
test_mm256_fmsubadd_pd(__m256d a,__m256d b,__m256d c)163*67e74705SXin Li __m256d test_mm256_fmsubadd_pd(__m256d a, __m256d b, __m256d c) {
164*67e74705SXin Li   // CHECK: @llvm.x86.fma.vfmsubadd.pd.256
165*67e74705SXin Li   return _mm256_fmsubadd_pd(a, b, c);
166*67e74705SXin Li }
167