Add a triple to switch.ll test.
[oota-llvm.git] / test / CodeGen / X86 / stack-folding-3dnow.ll
1 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+3dnow | FileCheck %s
2
3 define x86_mmx @stack_fold_pavgusb(x86_mmx %a, x86_mmx %b) {
4   ;CHECK-LABEL: stack_fold_pavgusb
5   ;CHECK:       pavgusb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
6   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
7   %2 = call x86_mmx @llvm.x86.3dnow.pavgusb(x86_mmx %a, x86_mmx %b) nounwind readnone
8   ret x86_mmx %2
9 }
10 declare x86_mmx @llvm.x86.3dnow.pavgusb(x86_mmx, x86_mmx) nounwind readnone
11
12 define x86_mmx @stack_fold_pf2id(x86_mmx %a) {
13   ;CHECK-LABEL: stack_fold_pf2id
14   ;CHECK:       pf2id {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
15   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
16   %2 = call x86_mmx @llvm.x86.3dnow.pf2id(x86_mmx %a) nounwind readnone
17   ret x86_mmx %2
18 }
19 declare x86_mmx @llvm.x86.3dnow.pf2id(x86_mmx) nounwind readnone
20
21 define x86_mmx @stack_fold_pf2iw(x86_mmx %a) {
22   ;CHECK-LABEL: stack_fold_pf2iw
23   ;CHECK:       pf2iw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
24   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
25   %2 = call x86_mmx @llvm.x86.3dnowa.pf2iw(x86_mmx %a) nounwind readnone
26   ret x86_mmx %2
27 }
28 declare x86_mmx @llvm.x86.3dnowa.pf2iw(x86_mmx) nounwind readnone
29
30 define x86_mmx @stack_fold_pfacc(x86_mmx %a, x86_mmx %b) {
31   ;CHECK-LABEL: stack_fold_pfacc
32   ;CHECK:       pfacc {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
33   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
34   %2 = call x86_mmx @llvm.x86.3dnow.pfacc(x86_mmx %a, x86_mmx %b) nounwind readnone
35   ret x86_mmx %2
36 }
37 declare x86_mmx @llvm.x86.3dnow.pfacc(x86_mmx, x86_mmx) nounwind readnone
38
39 define x86_mmx @stack_fold_pfadd(x86_mmx %a, x86_mmx %b) {
40   ;CHECK-LABEL: stack_fold_pfadd
41   ;CHECK:       pfadd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
42   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
43   %2 = call x86_mmx @llvm.x86.3dnow.pfadd(x86_mmx %a, x86_mmx %b) nounwind readnone
44   ret x86_mmx %2
45 }
46 declare x86_mmx @llvm.x86.3dnow.pfadd(x86_mmx, x86_mmx) nounwind readnone
47
48 define x86_mmx @stack_fold_pfcmpeq(x86_mmx %a, x86_mmx %b) {
49   ;CHECK-LABEL: stack_fold_pfcmpeq
50   ;CHECK:       pfcmpeq {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
51   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
52   %2 = call x86_mmx @llvm.x86.3dnow.pfcmpeq(x86_mmx %a, x86_mmx %b) nounwind readnone
53   ret x86_mmx %2
54 }
55 declare x86_mmx @llvm.x86.3dnow.pfcmpeq(x86_mmx, x86_mmx) nounwind readnone
56
57 define x86_mmx @stack_fold_pfcmpge(x86_mmx %a, x86_mmx %b) {
58   ;CHECK-LABEL: stack_fold_pfcmpge
59   ;CHECK:       pfcmpge {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
60   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
61   %2 = call x86_mmx @llvm.x86.3dnow.pfcmpge(x86_mmx %a, x86_mmx %b) nounwind readnone
62   ret x86_mmx %2
63 }
64 declare x86_mmx @llvm.x86.3dnow.pfcmpge(x86_mmx, x86_mmx) nounwind readnone
65
66 define x86_mmx @stack_fold_pfcmpgt(x86_mmx %a, x86_mmx %b) {
67   ;CHECK-LABEL: stack_fold_pfcmpgt
68   ;CHECK:       pfcmpgt {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
69   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
70   %2 = call x86_mmx @llvm.x86.3dnow.pfcmpgt(x86_mmx %a, x86_mmx %b) nounwind readnone
71   ret x86_mmx %2
72 }
73 declare x86_mmx @llvm.x86.3dnow.pfcmpgt(x86_mmx, x86_mmx) nounwind readnone
74
75 define x86_mmx @stack_fold_pfmax(x86_mmx %a, x86_mmx %b) {
76   ;CHECK-LABEL: stack_fold_pfmax
77   ;CHECK:       pfmax {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
78   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
79   %2 = call x86_mmx @llvm.x86.3dnow.pfmax(x86_mmx %a, x86_mmx %b) nounwind readnone
80   ret x86_mmx %2
81 }
82 declare x86_mmx @llvm.x86.3dnow.pfmax(x86_mmx, x86_mmx) nounwind readnone
83
84 define x86_mmx @stack_fold_pfmin(x86_mmx %a, x86_mmx %b) {
85   ;CHECK-LABEL: stack_fold_pfmin
86   ;CHECK:       pfmin {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
87   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
88   %2 = call x86_mmx @llvm.x86.3dnow.pfmin(x86_mmx %a, x86_mmx %b) nounwind readnone
89   ret x86_mmx %2
90 }
91 declare x86_mmx @llvm.x86.3dnow.pfmin(x86_mmx, x86_mmx) nounwind readnone
92
93 define x86_mmx @stack_fold_pfmul(x86_mmx %a, x86_mmx %b) {
94   ;CHECK-LABEL: stack_fold_pfmul
95   ;CHECK:       pfmul {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
96   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
97   %2 = call x86_mmx @llvm.x86.3dnow.pfmul(x86_mmx %a, x86_mmx %b) nounwind readnone
98   ret x86_mmx %2
99 }
100 declare x86_mmx @llvm.x86.3dnow.pfmul(x86_mmx, x86_mmx) nounwind readnone
101
102 define x86_mmx @stack_fold_pfnacc(x86_mmx %a, x86_mmx %b) {
103   ;CHECK-LABEL: stack_fold_pfnacc
104   ;CHECK:       pfnacc {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
105   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
106   %2 = call x86_mmx @llvm.x86.3dnowa.pfnacc(x86_mmx %a, x86_mmx %b) nounwind readnone
107   ret x86_mmx %2
108 }
109 declare x86_mmx @llvm.x86.3dnowa.pfnacc(x86_mmx, x86_mmx) nounwind readnone
110
111 define x86_mmx @stack_fold_pfpnacc(x86_mmx %a, x86_mmx %b) {
112   ;CHECK-LABEL: stack_fold_pfpnacc
113   ;CHECK:       pfpnacc {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
114   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
115   %2 = call x86_mmx @llvm.x86.3dnowa.pfpnacc(x86_mmx %a, x86_mmx %b) nounwind readnone
116   ret x86_mmx %2
117 }
118 declare x86_mmx @llvm.x86.3dnowa.pfpnacc(x86_mmx, x86_mmx) nounwind readnone
119
120 define x86_mmx @stack_fold_pfrcp(x86_mmx %a) {
121   ;CHECK-LABEL: stack_fold_pfrcp
122   ;CHECK:       pfrcp {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
123   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
124   %2 = call x86_mmx @llvm.x86.3dnow.pfrcp(x86_mmx %a) nounwind readnone
125   ret x86_mmx %2
126 }
127 declare x86_mmx @llvm.x86.3dnow.pfrcp(x86_mmx) nounwind readnone
128
129 define x86_mmx @stack_fold_pfrcpit1(x86_mmx %a, x86_mmx %b) {
130   ;CHECK-LABEL: stack_fold_pfrcpit1
131   ;CHECK:       pfrcpit1 {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
132   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
133   %2 = call x86_mmx @llvm.x86.3dnow.pfrcpit1(x86_mmx %a, x86_mmx %b) nounwind readnone
134   ret x86_mmx %2
135 }
136 declare x86_mmx @llvm.x86.3dnow.pfrcpit1(x86_mmx, x86_mmx) nounwind readnone
137
138 define x86_mmx @stack_fold_pfrcpit2(x86_mmx %a, x86_mmx %b) {
139   ;CHECK-LABEL: stack_fold_pfrcpit2
140   ;CHECK:       pfrcpit2 {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
141   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
142   %2 = call x86_mmx @llvm.x86.3dnow.pfrcpit2(x86_mmx %a, x86_mmx %b) nounwind readnone
143   ret x86_mmx %2
144 }
145 declare x86_mmx @llvm.x86.3dnow.pfrcpit2(x86_mmx, x86_mmx) nounwind readnone
146
147 define x86_mmx @stack_fold_pfrsqit1(x86_mmx %a, x86_mmx %b) {
148   ;CHECK-LABEL: stack_fold_pfrsqit1
149   ;CHECK:       pfrsqit1 {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
150   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
151   %2 = call x86_mmx @llvm.x86.3dnow.pfrsqit1(x86_mmx %a, x86_mmx %b) nounwind readnone
152   ret x86_mmx %2
153 }
154 declare x86_mmx @llvm.x86.3dnow.pfrsqit1(x86_mmx, x86_mmx) nounwind readnone
155
156 define x86_mmx @stack_fold_pfrsqrt(x86_mmx %a) {
157   ;CHECK-LABEL: stack_fold_pfrsqrt
158   ;CHECK:       pfrsqrt {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
159   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
160   %2 = call x86_mmx @llvm.x86.3dnow.pfrsqrt(x86_mmx %a) nounwind readnone
161   ret x86_mmx %2
162 }
163 declare x86_mmx @llvm.x86.3dnow.pfrsqrt(x86_mmx) nounwind readnone
164
165 define x86_mmx @stack_fold_pfsub(x86_mmx %a, x86_mmx %b) {
166   ;CHECK-LABEL: stack_fold_pfsub
167   ;CHECK:       pfsub {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
168   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
169   %2 = call x86_mmx @llvm.x86.3dnow.pfsub(x86_mmx %a, x86_mmx %b) nounwind readnone
170   ret x86_mmx %2
171 }
172 declare x86_mmx @llvm.x86.3dnow.pfsub(x86_mmx, x86_mmx) nounwind readnone
173
174 define x86_mmx @stack_fold_pfsubr(x86_mmx %a, x86_mmx %b) {
175   ;CHECK-LABEL: stack_fold_pfsubr
176   ;CHECK:       pfsubr {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
177   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
178   %2 = call x86_mmx @llvm.x86.3dnow.pfsubr(x86_mmx %a, x86_mmx %b) nounwind readnone
179   ret x86_mmx %2
180 }
181 declare x86_mmx @llvm.x86.3dnow.pfsubr(x86_mmx, x86_mmx) nounwind readnone
182
183 define x86_mmx @stack_fold_pi2fd(x86_mmx %a) {
184   ;CHECK-LABEL: stack_fold_pi2fd
185   ;CHECK:       pi2fd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
186   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
187   %2 = call x86_mmx @llvm.x86.3dnow.pi2fd(x86_mmx %a) nounwind readnone
188   ret x86_mmx %2
189 }
190 declare x86_mmx @llvm.x86.3dnow.pi2fd(x86_mmx) nounwind readnone
191
192 define x86_mmx @stack_fold_pi2fw(x86_mmx %a) {
193   ;CHECK-LABEL: stack_fold_pi2fw
194   ;CHECK:       pi2fw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
195   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
196   %2 = call x86_mmx @llvm.x86.3dnowa.pi2fw(x86_mmx %a) nounwind readnone
197   ret x86_mmx %2
198 }
199 declare x86_mmx @llvm.x86.3dnowa.pi2fw(x86_mmx) nounwind readnone
200
201 define x86_mmx @stack_fold_pmulhrw(x86_mmx %a, x86_mmx %b) {
202   ;CHECK-LABEL: stack_fold_pmulhrw
203   ;CHECK:       pmulhrw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
204   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
205   %2 = call x86_mmx @llvm.x86.3dnow.pmulhrw(x86_mmx %a, x86_mmx %b) nounwind readnone
206   ret x86_mmx %2
207 }
208 declare x86_mmx @llvm.x86.3dnow.pmulhrw(x86_mmx, x86_mmx) nounwind readnone
209
210 define x86_mmx @stack_fold_pswapd(x86_mmx %a) {
211   ;CHECK-LABEL: stack_fold_pswapd
212   ;CHECK:       pswapd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
213   %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
214   %2 = call x86_mmx @llvm.x86.3dnowa.pswapd(x86_mmx %a) nounwind readnone
215   ret x86_mmx %2
216 }
217 declare x86_mmx @llvm.x86.3dnowa.pswapd(x86_mmx) nounwind readnone