xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/stack-folding-mmx.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+mmx,+ssse3 | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_cvtpd2pi(<2 x double> %a0) {
4*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtpd2pi
5*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtpd2pi {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 16-byte Folded Reload
6*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
7*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.sse.cvtpd2pi(<2 x double> %a0) nounwind readnone
8*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
9*9880d681SAndroid Build Coastguard Worker}
10*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.sse.cvtpd2pi(<2 x double>) nounwind readnone
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtpi2pd(x86_mmx %a0) {
13*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtpi2pd
14*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtpi2pd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
15*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
16*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse.cvtpi2pd(x86_mmx %a0) nounwind readnone
17*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
18*9880d681SAndroid Build Coastguard Worker}
19*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse.cvtpi2pd(x86_mmx) nounwind readnone
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cvtpi2ps(<4 x float> %a0, x86_mmx %a1) {
22*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtpi2ps
23*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtpi2ps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
24*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
25*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.cvtpi2ps(<4 x float> %a0, x86_mmx %a1) nounwind readnone
26*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
27*9880d681SAndroid Build Coastguard Worker}
28*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cvtpi2ps(<4 x float>, x86_mmx) nounwind readnone
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_cvtps2pi(<4 x float> %a0) {
31*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtps2pi
32*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtps2pi {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 16-byte Folded Reload
33*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
34*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.sse.cvtps2pi(<4 x float> %a0) nounwind readnone
35*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
36*9880d681SAndroid Build Coastguard Worker}
37*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.sse.cvtps2pi(<4 x float>) nounwind readnone
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_cvttpd2pi(<2 x double> %a0) {
40*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttpd2pi
41*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvttpd2pi {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 16-byte Folded Reload
42*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
43*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.sse.cvttpd2pi(<2 x double> %a0) nounwind readnone
44*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
45*9880d681SAndroid Build Coastguard Worker}
46*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.sse.cvttpd2pi(<2 x double>) nounwind readnone
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_cvttps2pi(<4 x float> %a0) {
49*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttps2pi
50*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvttps2pi {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 16-byte Folded Reload
51*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
52*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.sse.cvttps2pi(<4 x float> %a0) nounwind readnone
53*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
54*9880d681SAndroid Build Coastguard Worker}
55*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.sse.cvttps2pi(<4 x float>) nounwind readnone
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_movd_load
58*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_movd_store
59*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_movq_load
60*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_movq_store
61*9880d681SAndroid Build Coastguard Worker
62*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pabsb(x86_mmx %a0) {
63*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pabsb
64*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pabsb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
65*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
66*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.pabs.b(x86_mmx %a0) nounwind readnone
67*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
68*9880d681SAndroid Build Coastguard Worker}
69*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.pabs.b(x86_mmx) nounwind readnone
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pabsd(x86_mmx %a0) {
72*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pabsd
73*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pabsd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
74*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
75*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.pabs.d(x86_mmx %a0) nounwind readnone
76*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
77*9880d681SAndroid Build Coastguard Worker}
78*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.pabs.d(x86_mmx) nounwind readnone
79*9880d681SAndroid Build Coastguard Worker
80*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pabsw(x86_mmx %a0) {
81*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pabsw
82*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pabsw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
83*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
84*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.pabs.w(x86_mmx %a0) nounwind readnone
85*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
86*9880d681SAndroid Build Coastguard Worker}
87*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.pabs.w(x86_mmx) nounwind readnone
88*9880d681SAndroid Build Coastguard Worker
89*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_packssdw(x86_mmx %a, x86_mmx %b) {
90*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_packssdw
91*9880d681SAndroid Build Coastguard Worker  ;CHECK:       packssdw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
92*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
93*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.packssdw(x86_mmx %a, x86_mmx %b) nounwind readnone
94*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
95*9880d681SAndroid Build Coastguard Worker}
96*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.packssdw(x86_mmx, x86_mmx) nounwind readnone
97*9880d681SAndroid Build Coastguard Worker
98*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_packsswb(x86_mmx %a, x86_mmx %b) {
99*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_packsswb
100*9880d681SAndroid Build Coastguard Worker  ;CHECK:       packsswb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
101*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
102*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.packsswb(x86_mmx %a, x86_mmx %b) nounwind readnone
103*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
104*9880d681SAndroid Build Coastguard Worker}
105*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.packsswb(x86_mmx, x86_mmx) nounwind readnone
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_packuswb(x86_mmx %a, x86_mmx %b) {
108*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_packuswb
109*9880d681SAndroid Build Coastguard Worker  ;CHECK:       packuswb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
110*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
111*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.packuswb(x86_mmx %a, x86_mmx %b) nounwind readnone
112*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
113*9880d681SAndroid Build Coastguard Worker}
114*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.packuswb(x86_mmx, x86_mmx) nounwind readnone
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_paddb(x86_mmx %a, x86_mmx %b) {
117*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddb
118*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
119*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
120*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.padd.b(x86_mmx %a, x86_mmx %b) nounwind readnone
121*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
122*9880d681SAndroid Build Coastguard Worker}
123*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.padd.b(x86_mmx, x86_mmx) nounwind readnone
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_paddd(x86_mmx %a, x86_mmx %b) {
126*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddd
127*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
128*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
129*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.padd.d(x86_mmx %a, x86_mmx %b) nounwind readnone
130*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
131*9880d681SAndroid Build Coastguard Worker}
132*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.padd.d(x86_mmx, x86_mmx) nounwind readnone
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_paddq(x86_mmx %a, x86_mmx %b) {
135*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddq
136*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddq {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
137*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
138*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.padd.q(x86_mmx %a, x86_mmx %b) nounwind readnone
139*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
140*9880d681SAndroid Build Coastguard Worker}
141*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.padd.q(x86_mmx, x86_mmx) nounwind readnone
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_paddsb(x86_mmx %a, x86_mmx %b) {
144*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddsb
145*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddsb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
146*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
147*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.padds.b(x86_mmx %a, x86_mmx %b) nounwind readnone
148*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
149*9880d681SAndroid Build Coastguard Worker}
150*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.padds.b(x86_mmx, x86_mmx) nounwind readnone
151*9880d681SAndroid Build Coastguard Worker
152*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_paddsw(x86_mmx %a, x86_mmx %b) {
153*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddsw
154*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddsw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
155*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
156*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.padds.w(x86_mmx %a, x86_mmx %b) nounwind readnone
157*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
158*9880d681SAndroid Build Coastguard Worker}
159*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.padds.w(x86_mmx, x86_mmx) nounwind readnone
160*9880d681SAndroid Build Coastguard Worker
161*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_paddusb(x86_mmx %a, x86_mmx %b) {
162*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddusb
163*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddusb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
164*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
165*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.paddus.b(x86_mmx %a, x86_mmx %b) nounwind readnone
166*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
167*9880d681SAndroid Build Coastguard Worker}
168*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.paddus.b(x86_mmx, x86_mmx) nounwind readnone
169*9880d681SAndroid Build Coastguard Worker
170*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_paddusw(x86_mmx %a, x86_mmx %b) {
171*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddusw
172*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddusw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
173*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
174*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.paddus.w(x86_mmx %a, x86_mmx %b) nounwind readnone
175*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
176*9880d681SAndroid Build Coastguard Worker}
177*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.paddus.w(x86_mmx, x86_mmx) nounwind readnone
178*9880d681SAndroid Build Coastguard Worker
179*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_paddw(x86_mmx %a, x86_mmx %b) {
180*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddw
181*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
182*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
183*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.padd.w(x86_mmx %a, x86_mmx %b) nounwind readnone
184*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
185*9880d681SAndroid Build Coastguard Worker}
186*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.padd.w(x86_mmx, x86_mmx) nounwind readnone
187*9880d681SAndroid Build Coastguard Worker
188*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_palignr(x86_mmx %a, x86_mmx %b) {
189*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_palignr
190*9880d681SAndroid Build Coastguard Worker  ;CHECK:       palignr $1, {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
191*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
192*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.palignr.b(x86_mmx %a, x86_mmx %b, i8 1) nounwind readnone
193*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
194*9880d681SAndroid Build Coastguard Worker}
195*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.palignr.b(x86_mmx, x86_mmx, i8) nounwind readnone
196*9880d681SAndroid Build Coastguard Worker
197*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pand(x86_mmx %a, x86_mmx %b) {
198*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pand
199*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pand {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
200*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
201*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pand(x86_mmx %a, x86_mmx %b) nounwind readnone
202*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
203*9880d681SAndroid Build Coastguard Worker}
204*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pand(x86_mmx, x86_mmx) nounwind readnone
205*9880d681SAndroid Build Coastguard Worker
206*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pandn(x86_mmx %a, x86_mmx %b) {
207*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pandn
208*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pandn {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
209*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
210*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pandn(x86_mmx %a, x86_mmx %b) nounwind readnone
211*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
212*9880d681SAndroid Build Coastguard Worker}
213*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pandn(x86_mmx, x86_mmx) nounwind readnone
214*9880d681SAndroid Build Coastguard Worker
215*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pavgb(x86_mmx %a, x86_mmx %b) {
216*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pavgb
217*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pavgb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
218*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
219*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pavg.b(x86_mmx %a, x86_mmx %b) nounwind readnone
220*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
221*9880d681SAndroid Build Coastguard Worker}
222*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pavg.b(x86_mmx, x86_mmx) nounwind readnone
223*9880d681SAndroid Build Coastguard Worker
224*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pavgw(x86_mmx %a, x86_mmx %b) {
225*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pavgw
226*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pavgw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
227*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
228*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pavg.w(x86_mmx %a, x86_mmx %b) nounwind readnone
229*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
230*9880d681SAndroid Build Coastguard Worker}
231*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pavg.w(x86_mmx, x86_mmx) nounwind readnone
232*9880d681SAndroid Build Coastguard Worker
233*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pcmpeqb(x86_mmx %a, x86_mmx %b) {
234*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpeqb
235*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpeqb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
236*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
237*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pcmpeq.b(x86_mmx %a, x86_mmx %b) nounwind readnone
238*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
239*9880d681SAndroid Build Coastguard Worker}
240*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pcmpeq.b(x86_mmx, x86_mmx) nounwind readnone
241*9880d681SAndroid Build Coastguard Worker
242*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pcmpeqd(x86_mmx %a, x86_mmx %b) {
243*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpeqd
244*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpeqd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
245*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
246*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pcmpeq.d(x86_mmx %a, x86_mmx %b) nounwind readnone
247*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
248*9880d681SAndroid Build Coastguard Worker}
249*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pcmpeq.d(x86_mmx, x86_mmx) nounwind readnone
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pcmpeqw(x86_mmx %a, x86_mmx %b) {
252*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpeqw
253*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpeqw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
254*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
255*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pcmpeq.w(x86_mmx %a, x86_mmx %b) nounwind readnone
256*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
257*9880d681SAndroid Build Coastguard Worker}
258*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pcmpeq.w(x86_mmx, x86_mmx) nounwind readnone
259*9880d681SAndroid Build Coastguard Worker
260*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pcmpgtb(x86_mmx %a, x86_mmx %b) {
261*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpgtb
262*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpgtb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
263*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
264*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pcmpgt.b(x86_mmx %a, x86_mmx %b) nounwind readnone
265*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
266*9880d681SAndroid Build Coastguard Worker}
267*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pcmpgt.b(x86_mmx, x86_mmx) nounwind readnone
268*9880d681SAndroid Build Coastguard Worker
269*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pcmpgtd(x86_mmx %a, x86_mmx %b) {
270*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpgtd
271*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpgtd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
272*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
273*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pcmpgt.d(x86_mmx %a, x86_mmx %b) nounwind readnone
274*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
275*9880d681SAndroid Build Coastguard Worker}
276*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pcmpgt.d(x86_mmx, x86_mmx) nounwind readnone
277*9880d681SAndroid Build Coastguard Worker
278*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pcmpgtw(x86_mmx %a, x86_mmx %b) {
279*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpgtw
280*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpgtw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
281*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
282*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pcmpgt.w(x86_mmx %a, x86_mmx %b) nounwind readnone
283*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
284*9880d681SAndroid Build Coastguard Worker}
285*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pcmpgt.w(x86_mmx, x86_mmx) nounwind readnone
286*9880d681SAndroid Build Coastguard Worker
287*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_phaddd(x86_mmx %a, x86_mmx %b) {
288*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phaddd
289*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phaddd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
290*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
291*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.phadd.d(x86_mmx %a, x86_mmx %b) nounwind readnone
292*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
293*9880d681SAndroid Build Coastguard Worker}
294*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.phadd.d(x86_mmx, x86_mmx) nounwind readnone
295*9880d681SAndroid Build Coastguard Worker
296*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_phaddsw(x86_mmx %a, x86_mmx %b) {
297*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phaddsw
298*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phaddsw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
299*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
300*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.phadd.sw(x86_mmx %a, x86_mmx %b) nounwind readnone
301*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
302*9880d681SAndroid Build Coastguard Worker}
303*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.phadd.sw(x86_mmx, x86_mmx) nounwind readnone
304*9880d681SAndroid Build Coastguard Worker
305*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_phaddw(x86_mmx %a, x86_mmx %b) {
306*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phaddw
307*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phaddw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
308*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
309*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.phadd.w(x86_mmx %a, x86_mmx %b) nounwind readnone
310*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
311*9880d681SAndroid Build Coastguard Worker}
312*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.phadd.w(x86_mmx, x86_mmx) nounwind readnone
313*9880d681SAndroid Build Coastguard Worker
314*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_phsubd(x86_mmx %a, x86_mmx %b) {
315*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phsubd
316*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phsubd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
317*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
318*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.phsub.d(x86_mmx %a, x86_mmx %b) nounwind readnone
319*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
320*9880d681SAndroid Build Coastguard Worker}
321*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.phsub.d(x86_mmx, x86_mmx) nounwind readnone
322*9880d681SAndroid Build Coastguard Worker
323*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_phsubsw(x86_mmx %a, x86_mmx %b) {
324*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phsubsw
325*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phsubsw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
326*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
327*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.phsub.sw(x86_mmx %a, x86_mmx %b) nounwind readnone
328*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
329*9880d681SAndroid Build Coastguard Worker}
330*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.phsub.sw(x86_mmx, x86_mmx) nounwind readnone
331*9880d681SAndroid Build Coastguard Worker
332*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_phsubw(x86_mmx %a, x86_mmx %b) {
333*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phsubw
334*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phsubw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
335*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
336*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.phsub.w(x86_mmx %a, x86_mmx %b) nounwind readnone
337*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
338*9880d681SAndroid Build Coastguard Worker}
339*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.phsub.w(x86_mmx, x86_mmx) nounwind readnone
340*9880d681SAndroid Build Coastguard Worker
341*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_pinsrw
342*9880d681SAndroid Build Coastguard Worker
343*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pmaddubsw(x86_mmx %a, x86_mmx %b) {
344*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaddubsw
345*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmaddubsw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
346*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
347*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.pmadd.ub.sw(x86_mmx %a, x86_mmx %b) nounwind readnone
348*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
349*9880d681SAndroid Build Coastguard Worker}
350*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.pmadd.ub.sw(x86_mmx, x86_mmx) nounwind readnone
351*9880d681SAndroid Build Coastguard Worker
352*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pmaddwd(x86_mmx %a, x86_mmx %b) {
353*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaddwd
354*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmaddwd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
355*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
356*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pmadd.wd(x86_mmx %a, x86_mmx %b) nounwind readnone
357*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
358*9880d681SAndroid Build Coastguard Worker}
359*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmadd.wd(x86_mmx, x86_mmx) nounwind readnone
360*9880d681SAndroid Build Coastguard Worker
361*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pmaxsw(x86_mmx %a, x86_mmx %b) {
362*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxsw
363*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmaxsw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
364*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
365*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pmaxs.w(x86_mmx %a, x86_mmx %b) nounwind readnone
366*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
367*9880d681SAndroid Build Coastguard Worker}
368*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmaxs.w(x86_mmx, x86_mmx) nounwind readnone
369*9880d681SAndroid Build Coastguard Worker
370*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pmaxub(x86_mmx %a, x86_mmx %b) {
371*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxub
372*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmaxub {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
373*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
374*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pmaxu.b(x86_mmx %a, x86_mmx %b) nounwind readnone
375*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
376*9880d681SAndroid Build Coastguard Worker}
377*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmaxu.b(x86_mmx, x86_mmx) nounwind readnone
378*9880d681SAndroid Build Coastguard Worker
379*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pminsw(x86_mmx %a, x86_mmx %b) {
380*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminsw
381*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pminsw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
382*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
383*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pmins.w(x86_mmx %a, x86_mmx %b) nounwind readnone
384*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
385*9880d681SAndroid Build Coastguard Worker}
386*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmins.w(x86_mmx, x86_mmx) nounwind readnone
387*9880d681SAndroid Build Coastguard Worker
388*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pminub(x86_mmx %a, x86_mmx %b) {
389*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminub
390*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pminub {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
391*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
392*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pminu.b(x86_mmx %a, x86_mmx %b) nounwind readnone
393*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
394*9880d681SAndroid Build Coastguard Worker}
395*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pminu.b(x86_mmx, x86_mmx) nounwind readnone
396*9880d681SAndroid Build Coastguard Worker
397*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pmulhrsw(x86_mmx %a, x86_mmx %b) {
398*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmulhrsw
399*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmulhrsw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
400*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
401*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.pmul.hr.sw(x86_mmx %a, x86_mmx %b) nounwind readnone
402*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
403*9880d681SAndroid Build Coastguard Worker}
404*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.pmul.hr.sw(x86_mmx, x86_mmx) nounwind readnone
405*9880d681SAndroid Build Coastguard Worker
406*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pmulhuw(x86_mmx %a, x86_mmx %b) {
407*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmulhuw
408*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmulhuw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
409*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
410*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pmulhu.w(x86_mmx %a, x86_mmx %b) nounwind readnone
411*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
412*9880d681SAndroid Build Coastguard Worker}
413*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmulhu.w(x86_mmx, x86_mmx) nounwind readnone
414*9880d681SAndroid Build Coastguard Worker
415*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pmulhw(x86_mmx %a, x86_mmx %b) {
416*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmulhw
417*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmulhw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
418*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
419*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pmulh.w(x86_mmx %a, x86_mmx %b) nounwind readnone
420*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
421*9880d681SAndroid Build Coastguard Worker}
422*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmulh.w(x86_mmx, x86_mmx) nounwind readnone
423*9880d681SAndroid Build Coastguard Worker
424*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pmullw(x86_mmx %a, x86_mmx %b) {
425*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmullw
426*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmullw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
427*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
428*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pmull.w(x86_mmx %a, x86_mmx %b) nounwind readnone
429*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
430*9880d681SAndroid Build Coastguard Worker}
431*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmull.w(x86_mmx, x86_mmx) nounwind readnone
432*9880d681SAndroid Build Coastguard Worker
433*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pmuludq(x86_mmx %a, x86_mmx %b) {
434*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmuludq
435*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmuludq {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
436*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
437*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pmulu.dq(x86_mmx %a, x86_mmx %b) nounwind readnone
438*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
439*9880d681SAndroid Build Coastguard Worker}
440*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pmulu.dq(x86_mmx, x86_mmx) nounwind readnone
441*9880d681SAndroid Build Coastguard Worker
442*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_por(x86_mmx %a, x86_mmx %b) {
443*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_por
444*9880d681SAndroid Build Coastguard Worker  ;CHECK:       por {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
445*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
446*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.por(x86_mmx %a, x86_mmx %b) nounwind readnone
447*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
448*9880d681SAndroid Build Coastguard Worker}
449*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.por(x86_mmx, x86_mmx) nounwind readnone
450*9880d681SAndroid Build Coastguard Worker
451*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psadbw(x86_mmx %a, x86_mmx %b) {
452*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psadbw
453*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psadbw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
454*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
455*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psad.bw(x86_mmx %a, x86_mmx %b) nounwind readnone
456*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
457*9880d681SAndroid Build Coastguard Worker}
458*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psad.bw(x86_mmx, x86_mmx) nounwind readnone
459*9880d681SAndroid Build Coastguard Worker
460*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pshufb(x86_mmx %a, x86_mmx %b) {
461*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pshufb
462*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pshufb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
463*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
464*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.pshuf.b(x86_mmx %a, x86_mmx %b) nounwind readnone
465*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
466*9880d681SAndroid Build Coastguard Worker}
467*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.pshuf.b(x86_mmx, x86_mmx) nounwind readnone
468*9880d681SAndroid Build Coastguard Worker
469*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pshufw(x86_mmx %a) {
470*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pshufw
471*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pshufw $1, {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
472*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm1},~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
473*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.sse.pshuf.w(x86_mmx %a, i8 1) nounwind readnone
474*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
475*9880d681SAndroid Build Coastguard Worker}
476*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.sse.pshuf.w(x86_mmx, i8) nounwind readnone
477*9880d681SAndroid Build Coastguard Worker
478*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psignb(x86_mmx %a0, x86_mmx %a1) {
479*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psignb
480*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psignb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
481*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
482*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.psign.b(x86_mmx %a0, x86_mmx %a1) nounwind readnone
483*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
484*9880d681SAndroid Build Coastguard Worker}
485*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.psign.b(x86_mmx, x86_mmx) nounwind readnone
486*9880d681SAndroid Build Coastguard Worker
487*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psignd(x86_mmx %a0, x86_mmx %a1) {
488*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psignd
489*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psignd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
490*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
491*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.psign.d(x86_mmx %a0, x86_mmx %a1) nounwind readnone
492*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
493*9880d681SAndroid Build Coastguard Worker}
494*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.psign.d(x86_mmx, x86_mmx) nounwind readnone
495*9880d681SAndroid Build Coastguard Worker
496*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psignw(x86_mmx %a0, x86_mmx %a1) {
497*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psignw
498*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psignw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
499*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
500*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.ssse3.psign.w(x86_mmx %a0, x86_mmx %a1) nounwind readnone
501*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
502*9880d681SAndroid Build Coastguard Worker}
503*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.ssse3.psign.w(x86_mmx, x86_mmx) nounwind readnone
504*9880d681SAndroid Build Coastguard Worker
505*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pslld(x86_mmx %a, x86_mmx %b) {
506*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pslld
507*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pslld {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
508*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
509*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psll.d(x86_mmx %a, x86_mmx %b) nounwind readnone
510*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
511*9880d681SAndroid Build Coastguard Worker}
512*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psll.d(x86_mmx, x86_mmx) nounwind readnone
513*9880d681SAndroid Build Coastguard Worker
514*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psllq(x86_mmx %a, x86_mmx %b) {
515*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psllq
516*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psllq {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
517*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
518*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psll.q(x86_mmx %a, x86_mmx %b) nounwind readnone
519*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
520*9880d681SAndroid Build Coastguard Worker}
521*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psll.q(x86_mmx, x86_mmx) nounwind readnone
522*9880d681SAndroid Build Coastguard Worker
523*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psllw(x86_mmx %a, x86_mmx %b) {
524*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psllw
525*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psllw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
526*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
527*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psll.w(x86_mmx %a, x86_mmx %b) nounwind readnone
528*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
529*9880d681SAndroid Build Coastguard Worker}
530*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psll.w(x86_mmx, x86_mmx) nounwind readnone
531*9880d681SAndroid Build Coastguard Worker
532*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psrad(x86_mmx %a, x86_mmx %b) {
533*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psrad
534*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psrad {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
535*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
536*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psra.d(x86_mmx %a, x86_mmx %b) nounwind readnone
537*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
538*9880d681SAndroid Build Coastguard Worker}
539*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psra.d(x86_mmx, x86_mmx) nounwind readnone
540*9880d681SAndroid Build Coastguard Worker
541*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psraw(x86_mmx %a, x86_mmx %b) {
542*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psraw
543*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psraw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
544*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
545*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psra.w(x86_mmx %a, x86_mmx %b) nounwind readnone
546*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
547*9880d681SAndroid Build Coastguard Worker}
548*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psra.w(x86_mmx, x86_mmx) nounwind readnone
549*9880d681SAndroid Build Coastguard Worker
550*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psrld(x86_mmx %a, x86_mmx %b) {
551*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psrld
552*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psrld {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
553*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
554*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psrl.d(x86_mmx %a, x86_mmx %b) nounwind readnone
555*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
556*9880d681SAndroid Build Coastguard Worker}
557*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psrl.d(x86_mmx, x86_mmx) nounwind readnone
558*9880d681SAndroid Build Coastguard Worker
559*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psrlq(x86_mmx %a, x86_mmx %b) {
560*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psrlq
561*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psrlq {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
562*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
563*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psrl.q(x86_mmx %a, x86_mmx %b) nounwind readnone
564*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
565*9880d681SAndroid Build Coastguard Worker}
566*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psrl.q(x86_mmx, x86_mmx) nounwind readnone
567*9880d681SAndroid Build Coastguard Worker
568*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psrlw(x86_mmx %a, x86_mmx %b) {
569*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psrlw
570*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psrlw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
571*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
572*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psrl.w(x86_mmx %a, x86_mmx %b) nounwind readnone
573*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
574*9880d681SAndroid Build Coastguard Worker}
575*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psrl.w(x86_mmx, x86_mmx) nounwind readnone
576*9880d681SAndroid Build Coastguard Worker
577*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psubb(x86_mmx %a, x86_mmx %b) {
578*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubb
579*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
580*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
581*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psub.b(x86_mmx %a, x86_mmx %b) nounwind readnone
582*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
583*9880d681SAndroid Build Coastguard Worker}
584*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psub.b(x86_mmx, x86_mmx) nounwind readnone
585*9880d681SAndroid Build Coastguard Worker
586*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psubd(x86_mmx %a, x86_mmx %b) {
587*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubd
588*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
589*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
590*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psub.d(x86_mmx %a, x86_mmx %b) nounwind readnone
591*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
592*9880d681SAndroid Build Coastguard Worker}
593*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psub.d(x86_mmx, x86_mmx) nounwind readnone
594*9880d681SAndroid Build Coastguard Worker
595*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psubq(x86_mmx %a, x86_mmx %b) {
596*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubq
597*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubq {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
598*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
599*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psub.q(x86_mmx %a, x86_mmx %b) nounwind readnone
600*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
601*9880d681SAndroid Build Coastguard Worker}
602*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psub.q(x86_mmx, x86_mmx) nounwind readnone
603*9880d681SAndroid Build Coastguard Worker
604*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psubsb(x86_mmx %a, x86_mmx %b) {
605*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubsb
606*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubsb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
607*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
608*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psubs.b(x86_mmx %a, x86_mmx %b) nounwind readnone
609*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
610*9880d681SAndroid Build Coastguard Worker}
611*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psubs.b(x86_mmx, x86_mmx) nounwind readnone
612*9880d681SAndroid Build Coastguard Worker
613*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psubsw(x86_mmx %a, x86_mmx %b) {
614*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubsw
615*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubsw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
616*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
617*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psubs.w(x86_mmx %a, x86_mmx %b) nounwind readnone
618*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
619*9880d681SAndroid Build Coastguard Worker}
620*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psubs.w(x86_mmx, x86_mmx) nounwind readnone
621*9880d681SAndroid Build Coastguard Worker
622*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psubusb(x86_mmx %a, x86_mmx %b) {
623*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubusb
624*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubusb {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
625*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
626*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psubus.b(x86_mmx %a, x86_mmx %b) nounwind readnone
627*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
628*9880d681SAndroid Build Coastguard Worker}
629*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psubus.b(x86_mmx, x86_mmx) nounwind readnone
630*9880d681SAndroid Build Coastguard Worker
631*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psubusw(x86_mmx %a, x86_mmx %b) {
632*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubusw
633*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubusw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
634*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
635*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psubus.w(x86_mmx %a, x86_mmx %b) nounwind readnone
636*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
637*9880d681SAndroid Build Coastguard Worker}
638*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psubus.w(x86_mmx, x86_mmx) nounwind readnone
639*9880d681SAndroid Build Coastguard Worker
640*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_psubw(x86_mmx %a, x86_mmx %b) {
641*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubw
642*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
643*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
644*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.psub.w(x86_mmx %a, x86_mmx %b) nounwind readnone
645*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
646*9880d681SAndroid Build Coastguard Worker}
647*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.psub.w(x86_mmx, x86_mmx) nounwind readnone
648*9880d681SAndroid Build Coastguard Worker
649*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_punpckhbw(x86_mmx %a, x86_mmx %b) {
650*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckhbw
651*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpckhbw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
652*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
653*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.punpckhbw(x86_mmx %a, x86_mmx %b) nounwind readnone
654*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
655*9880d681SAndroid Build Coastguard Worker}
656*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.punpckhbw(x86_mmx, x86_mmx) nounwind readnone
657*9880d681SAndroid Build Coastguard Worker
658*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_punpckhdq(x86_mmx %a, x86_mmx %b) {
659*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckhdq
660*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpckhdq {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
661*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
662*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.punpckhdq(x86_mmx %a, x86_mmx %b) nounwind readnone
663*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
664*9880d681SAndroid Build Coastguard Worker}
665*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.punpckhdq(x86_mmx, x86_mmx) nounwind readnone
666*9880d681SAndroid Build Coastguard Worker
667*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_punpckhwd(x86_mmx %a, x86_mmx %b) {
668*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckhwd
669*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpckhwd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
670*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
671*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.punpckhwd(x86_mmx %a, x86_mmx %b) nounwind readnone
672*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
673*9880d681SAndroid Build Coastguard Worker}
674*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.punpckhwd(x86_mmx, x86_mmx) nounwind readnone
675*9880d681SAndroid Build Coastguard Worker
676*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_punpcklbw(x86_mmx %a, x86_mmx %b) {
677*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpcklbw
678*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpcklbw {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
679*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
680*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.punpcklbw(x86_mmx %a, x86_mmx %b) nounwind readnone
681*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
682*9880d681SAndroid Build Coastguard Worker}
683*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.punpcklbw(x86_mmx, x86_mmx) nounwind readnone
684*9880d681SAndroid Build Coastguard Worker
685*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_punpckldq(x86_mmx %a, x86_mmx %b) {
686*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckldq
687*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpckldq {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
688*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
689*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.punpckldq(x86_mmx %a, x86_mmx %b) nounwind readnone
690*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
691*9880d681SAndroid Build Coastguard Worker}
692*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.punpckldq(x86_mmx, x86_mmx) nounwind readnone
693*9880d681SAndroid Build Coastguard Worker
694*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_punpcklwd(x86_mmx %a, x86_mmx %b) {
695*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpcklwd
696*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpcklwd {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
697*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
698*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.punpcklwd(x86_mmx %a, x86_mmx %b) nounwind readnone
699*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
700*9880d681SAndroid Build Coastguard Worker}
701*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.punpcklwd(x86_mmx, x86_mmx) nounwind readnone
702*9880d681SAndroid Build Coastguard Worker
703*9880d681SAndroid Build Coastguard Workerdefine x86_mmx @stack_fold_pxor(x86_mmx %a, x86_mmx %b) {
704*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pxor
705*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pxor {{-?[0-9]*}}(%rsp), {{%mm[0-7]}} {{.*#+}} 8-byte Folded Reload
706*9880d681SAndroid Build Coastguard Worker  %1 = tail call x86_mmx asm sideeffect "nop", "=y,~{mm2},~{mm3},~{mm4},~{mm5},~{mm6},~{mm7}"()
707*9880d681SAndroid Build Coastguard Worker  %2 = call x86_mmx @llvm.x86.mmx.pxor(x86_mmx %a, x86_mmx %b) nounwind readnone
708*9880d681SAndroid Build Coastguard Worker  ret x86_mmx %2
709*9880d681SAndroid Build Coastguard Worker}
710*9880d681SAndroid Build Coastguard Workerdeclare x86_mmx @llvm.x86.mmx.pxor(x86_mmx, x86_mmx) nounwind readnone
711