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