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