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
test_m_pavgusb(__m64 m1,__m64 m2)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
test_m_pf2id(__m64 m)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
test_m_pfacc(__m64 m1,__m64 m2)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
test_m_pfadd(__m64 m1,__m64 m2)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
test_m_pfcmpeq(__m64 m1,__m64 m2)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
test_m_pfcmpge(__m64 m1,__m64 m2)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
test_m_pfcmpgt(__m64 m1,__m64 m2)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
test_m_pfmax(__m64 m1,__m64 m2)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
test_m_pfmin(__m64 m1,__m64 m2)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
test_m_pfmul(__m64 m1,__m64 m2)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
test_m_pfrcp(__m64 m)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
test_m_pfrcpit1(__m64 m1,__m64 m2)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
test_m_pfrcpit2(__m64 m1,__m64 m2)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
test_m_pfrsqrt(__m64 m)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
test_m_pfrsqrtit1(__m64 m1,__m64 m2)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
test_m_pfsub(__m64 m1,__m64 m2)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
test_m_pfsubr(__m64 m1,__m64 m2)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
test_m_pi2fd(__m64 m)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
test_m_pmulhrw(__m64 m1,__m64 m2)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
test_m_pf2iw(__m64 m)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
test_m_pfnacc(__m64 m1,__m64 m2)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
test_m_pfpnacc(__m64 m1,__m64 m2)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
test_m_pi2fw(__m64 m)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
test_m_pswapdsf(__m64 m)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
test_m_pswapdsi(__m64 m)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 }
181