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