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 | } |
181 | |