xref: /aosp_15_r20/external/clang/test/CodeGen/3dnow-builtins.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -triple=x86_64-unknown-unknown -target-feature +3dnowa -emit-llvm -o - -Werror | FileCheck %s -check-prefix=GCC -check-prefix=CHECK
2*67e74705SXin Li // RUN: %clang_cc1 %s -triple=x86_64-scei-ps4 -target-feature +3dnowa -emit-llvm -o - -Werror | FileCheck %s -check-prefix=PS4 -check-prefix=CHECK
3*67e74705SXin Li 
4*67e74705SXin Li // Don't include mm_malloc.h, it's system specific.
5*67e74705SXin Li #define __MM_MALLOC_H
6*67e74705SXin Li 
7*67e74705SXin Li #include <x86intrin.h>
8*67e74705SXin Li 
test_m_pavgusb(__m64 m1,__m64 m2)9*67e74705SXin Li __m64 test_m_pavgusb(__m64 m1, __m64 m2) {
10*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pavgusb
11*67e74705SXin Li   // GCC-LABEL: define double @test_m_pavgusb
12*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pavgusb
13*67e74705SXin Li   return _m_pavgusb(m1, m2);
14*67e74705SXin Li }
15*67e74705SXin Li 
test_m_pf2id(__m64 m)16*67e74705SXin Li __m64 test_m_pf2id(__m64 m) {
17*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pf2id
18*67e74705SXin Li   // GCC-LABEL: define double @test_m_pf2id
19*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pf2id
20*67e74705SXin Li   return _m_pf2id(m);
21*67e74705SXin Li }
22*67e74705SXin Li 
test_m_pfacc(__m64 m1,__m64 m2)23*67e74705SXin Li __m64 test_m_pfacc(__m64 m1, __m64 m2) {
24*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfacc
25*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfacc
26*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfacc
27*67e74705SXin Li   return _m_pfacc(m1, m2);
28*67e74705SXin Li }
29*67e74705SXin Li 
test_m_pfadd(__m64 m1,__m64 m2)30*67e74705SXin Li __m64 test_m_pfadd(__m64 m1, __m64 m2) {
31*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfadd
32*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfadd
33*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfadd
34*67e74705SXin Li   return _m_pfadd(m1, m2);
35*67e74705SXin Li }
36*67e74705SXin Li 
test_m_pfcmpeq(__m64 m1,__m64 m2)37*67e74705SXin Li __m64 test_m_pfcmpeq(__m64 m1, __m64 m2) {
38*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfcmpeq
39*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfcmpeq
40*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfcmpeq
41*67e74705SXin Li   return _m_pfcmpeq(m1, m2);
42*67e74705SXin Li }
43*67e74705SXin Li 
test_m_pfcmpge(__m64 m1,__m64 m2)44*67e74705SXin Li __m64 test_m_pfcmpge(__m64 m1, __m64 m2) {
45*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfcmpge
46*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfcmpge
47*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfcmpge
48*67e74705SXin Li   return _m_pfcmpge(m1, m2);
49*67e74705SXin Li }
50*67e74705SXin Li 
test_m_pfcmpgt(__m64 m1,__m64 m2)51*67e74705SXin Li __m64 test_m_pfcmpgt(__m64 m1, __m64 m2) {
52*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfcmpgt
53*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfcmpgt
54*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfcmpgt
55*67e74705SXin Li   return _m_pfcmpgt(m1, m2);
56*67e74705SXin Li }
57*67e74705SXin Li 
test_m_pfmax(__m64 m1,__m64 m2)58*67e74705SXin Li __m64 test_m_pfmax(__m64 m1, __m64 m2) {
59*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfmax
60*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfmax
61*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfmax
62*67e74705SXin Li   return _m_pfmax(m1, m2);
63*67e74705SXin Li }
64*67e74705SXin Li 
test_m_pfmin(__m64 m1,__m64 m2)65*67e74705SXin Li __m64 test_m_pfmin(__m64 m1, __m64 m2) {
66*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfmin
67*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfmin
68*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfmin
69*67e74705SXin Li   return _m_pfmin(m1, m2);
70*67e74705SXin Li }
71*67e74705SXin Li 
test_m_pfmul(__m64 m1,__m64 m2)72*67e74705SXin Li __m64 test_m_pfmul(__m64 m1, __m64 m2) {
73*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfmul
74*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfmul
75*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfmul
76*67e74705SXin Li   return _m_pfmul(m1, m2);
77*67e74705SXin Li }
78*67e74705SXin Li 
test_m_pfrcp(__m64 m)79*67e74705SXin Li __m64 test_m_pfrcp(__m64 m) {
80*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfrcp
81*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfrcp
82*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfrcp
83*67e74705SXin Li   return _m_pfrcp(m);
84*67e74705SXin Li }
85*67e74705SXin Li 
test_m_pfrcpit1(__m64 m1,__m64 m2)86*67e74705SXin Li __m64 test_m_pfrcpit1(__m64 m1, __m64 m2) {
87*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfrcpit1
88*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfrcpit1
89*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfrcpit1
90*67e74705SXin Li   return _m_pfrcpit1(m1, m2);
91*67e74705SXin Li }
92*67e74705SXin Li 
test_m_pfrcpit2(__m64 m1,__m64 m2)93*67e74705SXin Li __m64 test_m_pfrcpit2(__m64 m1, __m64 m2) {
94*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfrcpit2
95*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfrcpit2
96*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfrcpit2
97*67e74705SXin Li   return _m_pfrcpit2(m1, m2);
98*67e74705SXin Li }
99*67e74705SXin Li 
test_m_pfrsqrt(__m64 m)100*67e74705SXin Li __m64 test_m_pfrsqrt(__m64 m) {
101*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfrsqrt
102*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfrsqrt
103*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfrsqrt
104*67e74705SXin Li   return _m_pfrsqrt(m);
105*67e74705SXin Li }
106*67e74705SXin Li 
test_m_pfrsqrtit1(__m64 m1,__m64 m2)107*67e74705SXin Li __m64 test_m_pfrsqrtit1(__m64 m1, __m64 m2) {
108*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfrsqrtit1
109*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfrsqrtit1
110*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfrsqit1
111*67e74705SXin Li   return _m_pfrsqrtit1(m1, m2);
112*67e74705SXin Li }
113*67e74705SXin Li 
test_m_pfsub(__m64 m1,__m64 m2)114*67e74705SXin Li __m64 test_m_pfsub(__m64 m1, __m64 m2) {
115*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfsub
116*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfsub
117*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfsub
118*67e74705SXin Li   return _m_pfsub(m1, m2);
119*67e74705SXin Li }
120*67e74705SXin Li 
test_m_pfsubr(__m64 m1,__m64 m2)121*67e74705SXin Li __m64 test_m_pfsubr(__m64 m1, __m64 m2) {
122*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfsubr
123*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfsubr
124*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pfsubr
125*67e74705SXin Li   return _m_pfsubr(m1, m2);
126*67e74705SXin Li }
127*67e74705SXin Li 
test_m_pi2fd(__m64 m)128*67e74705SXin Li __m64 test_m_pi2fd(__m64 m) {
129*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pi2fd
130*67e74705SXin Li   // GCC-LABEL: define double @test_m_pi2fd
131*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pi2fd
132*67e74705SXin Li   return _m_pi2fd(m);
133*67e74705SXin Li }
134*67e74705SXin Li 
test_m_pmulhrw(__m64 m1,__m64 m2)135*67e74705SXin Li __m64 test_m_pmulhrw(__m64 m1, __m64 m2) {
136*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pmulhrw
137*67e74705SXin Li   // GCC-LABEL: define double @test_m_pmulhrw
138*67e74705SXin Li   // CHECK: @llvm.x86.3dnow.pmulhrw
139*67e74705SXin Li   return _m_pmulhrw(m1, m2);
140*67e74705SXin Li }
141*67e74705SXin Li 
test_m_pf2iw(__m64 m)142*67e74705SXin Li __m64 test_m_pf2iw(__m64 m) {
143*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pf2iw
144*67e74705SXin Li   // GCC-LABEL: define double @test_m_pf2iw
145*67e74705SXin Li   // CHECK: @llvm.x86.3dnowa.pf2iw
146*67e74705SXin Li   return _m_pf2iw(m);
147*67e74705SXin Li }
148*67e74705SXin Li 
test_m_pfnacc(__m64 m1,__m64 m2)149*67e74705SXin Li __m64 test_m_pfnacc(__m64 m1, __m64 m2) {
150*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfnacc
151*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfnacc
152*67e74705SXin Li   // CHECK: @llvm.x86.3dnowa.pfnacc
153*67e74705SXin Li   return _m_pfnacc(m1, m2);
154*67e74705SXin Li }
155*67e74705SXin Li 
test_m_pfpnacc(__m64 m1,__m64 m2)156*67e74705SXin Li __m64 test_m_pfpnacc(__m64 m1, __m64 m2) {
157*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pfpnacc
158*67e74705SXin Li   // GCC-LABEL: define double @test_m_pfpnacc
159*67e74705SXin Li   // CHECK: @llvm.x86.3dnowa.pfpnacc
160*67e74705SXin Li   return _m_pfpnacc(m1, m2);
161*67e74705SXin Li }
162*67e74705SXin Li 
test_m_pi2fw(__m64 m)163*67e74705SXin Li __m64 test_m_pi2fw(__m64 m) {
164*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pi2fw
165*67e74705SXin Li   // GCC-LABEL: define double @test_m_pi2fw
166*67e74705SXin Li   // CHECK: @llvm.x86.3dnowa.pi2fw
167*67e74705SXin Li   return _m_pi2fw(m);
168*67e74705SXin Li }
169*67e74705SXin Li 
test_m_pswapdsf(__m64 m)170*67e74705SXin Li __m64 test_m_pswapdsf(__m64 m) {
171*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pswapdsf
172*67e74705SXin Li   // GCC-LABEL: define double @test_m_pswapdsf
173*67e74705SXin Li   // CHECK: @llvm.x86.3dnowa.pswapd
174*67e74705SXin Li   return _m_pswapdsf(m);
175*67e74705SXin Li }
176*67e74705SXin Li 
test_m_pswapdsi(__m64 m)177*67e74705SXin Li __m64 test_m_pswapdsi(__m64 m) {
178*67e74705SXin Li   // PS4-LABEL: define i64 @test_m_pswapdsi
179*67e74705SXin Li   // GCC-LABEL: define double @test_m_pswapdsi
180*67e74705SXin Li   // CHECK: @llvm.x86.3dnowa.pswapd
181*67e74705SXin Li   return _m_pswapdsi(m);
182*67e74705SXin Li }
183