xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/stack-folding-int-sse42.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O3 -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+sse4.2,+aes,+pclmul < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
4*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-unknown"
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker; Stack reload folding tests.
7*9880d681SAndroid Build Coastguard Worker;
8*9880d681SAndroid Build Coastguard Worker; By including a nop call with sideeffects we can force a partial register spill of the
9*9880d681SAndroid Build Coastguard Worker; relevant registers and check that the reload is correctly folded into the instruction.
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_aesdec(<2 x i64> %a0, <2 x i64> %a1) {
12*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_aesdec
13*9880d681SAndroid Build Coastguard Worker  ;CHECK:       aesdec {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
14*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
15*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.aesni.aesdec(<2 x i64> %a0, <2 x i64> %a1)
16*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesdec(<2 x i64>, <2 x i64>) nounwind readnone
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_aesdeclast(<2 x i64> %a0, <2 x i64> %a1) {
21*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_aesdeclast
22*9880d681SAndroid Build Coastguard Worker  ;CHECK:       aesdeclast {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
23*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
24*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.aesni.aesdeclast(<2 x i64> %a0, <2 x i64> %a1)
25*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
26*9880d681SAndroid Build Coastguard Worker}
27*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesdeclast(<2 x i64>, <2 x i64>) nounwind readnone
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_aesenc(<2 x i64> %a0, <2 x i64> %a1) {
30*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_aesenc
31*9880d681SAndroid Build Coastguard Worker  ;CHECK:       aesenc {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
32*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
33*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.aesni.aesenc(<2 x i64> %a0, <2 x i64> %a1)
34*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
35*9880d681SAndroid Build Coastguard Worker}
36*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesenc(<2 x i64>, <2 x i64>) nounwind readnone
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_aesenclast(<2 x i64> %a0, <2 x i64> %a1) {
39*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_aesenclast
40*9880d681SAndroid Build Coastguard Worker  ;CHECK:       aesenclast {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
41*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
42*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.aesni.aesenclast(<2 x i64> %a0, <2 x i64> %a1)
43*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
44*9880d681SAndroid Build Coastguard Worker}
45*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesenclast(<2 x i64>, <2 x i64>) nounwind readnone
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_aesimc(<2 x i64> %a0) {
48*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_aesimc
49*9880d681SAndroid Build Coastguard Worker  ;CHECK:       aesimc {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
50*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
51*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.aesni.aesimc(<2 x i64> %a0)
52*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
53*9880d681SAndroid Build Coastguard Worker}
54*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesimc(<2 x i64>) nounwind readnone
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_aeskeygenassist(<2 x i64> %a0) {
57*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_aeskeygenassist
58*9880d681SAndroid Build Coastguard Worker  ;CHECK:       aeskeygenassist $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
59*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
60*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.aesni.aeskeygenassist(<2 x i64> %a0, i8 7)
61*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
62*9880d681SAndroid Build Coastguard Worker}
63*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aeskeygenassist(<2 x i64>, i8) nounwind readnone
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Worker;TODO stack_fold_crc32_32_8
66*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.crc32.32.8(i32, i8) nounwind
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker;TODO stack_fold_crc32_32_16
69*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.crc32.32.16(i32, i16) nounwind
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_crc32_32_32(i32 %a0, i32 %a1) {
72*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_crc32_32_32
73*9880d681SAndroid Build Coastguard Worker  ;CHECK:       crc32l {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 4-byte Folded Reload
74*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
75*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse42.crc32.32.32(i32 %a0, i32 %a1)
76*9880d681SAndroid Build Coastguard Worker  ret i32 %2
77*9880d681SAndroid Build Coastguard Worker}
78*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.crc32.32.32(i32, i32) nounwind
79*9880d681SAndroid Build Coastguard Worker
80*9880d681SAndroid Build Coastguard Worker;TODO stack_fold_crc32_64_8
81*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse42.crc32.64.8(i64, i8) nounwind
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_crc32_64_64(i64 %a0, i64 %a1) {
84*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_crc32_64_64
85*9880d681SAndroid Build Coastguard Worker  ;CHECK:       crc32q {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 8-byte Folded Reload
86*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
87*9880d681SAndroid Build Coastguard Worker  %2 = call i64 @llvm.x86.sse42.crc32.64.64(i64 %a0, i64 %a1)
88*9880d681SAndroid Build Coastguard Worker  ret i64 %2
89*9880d681SAndroid Build Coastguard Worker}
90*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse42.crc32.64.64(i64, i64) nounwind
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_movd_load(i32 %a0) {
93*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movd_load
94*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
95*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
96*9880d681SAndroid Build Coastguard Worker  %2 = insertelement <4 x i32> zeroinitializer, i32 %a0, i32 0
97*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
98*9880d681SAndroid Build Coastguard Worker  %3 = add <4 x i32> %2, <i32 1, i32 1, i32 1, i32 1>
99*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
100*9880d681SAndroid Build Coastguard Worker}
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_movd_store(<4 x i32> %a0) {
103*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movd_store
104*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movd {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 4-byte Folded Spill
105*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
106*9880d681SAndroid Build Coastguard Worker  %1 = add <4 x i32> %a0, <i32 1, i32 1, i32 1, i32 1>
107*9880d681SAndroid Build Coastguard Worker  %2 = extractelement <4 x i32> %1, i32 0
108*9880d681SAndroid Build Coastguard Worker  %3 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
109*9880d681SAndroid Build Coastguard Worker  ret i32 %2
110*9880d681SAndroid Build Coastguard Worker}
111*9880d681SAndroid Build Coastguard Worker
112*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_movq_load(<2 x i64> %a0) {
113*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movq_load
114*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
115*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
116*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x i64> %a0, <2 x i64> zeroinitializer, <2 x i32> <i32 0, i32 2>
117*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
118*9880d681SAndroid Build Coastguard Worker  %3 = add <2 x i64> %2, <i64 1, i64 1>
119*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
120*9880d681SAndroid Build Coastguard Worker}
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_movq_store(<2 x i64> %a0) {
123*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movq_store
124*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movq {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 8-byte Folded Spill
125*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
126*9880d681SAndroid Build Coastguard Worker  %1 = add <2 x i64> %a0, <i64 1, i64 1>
127*9880d681SAndroid Build Coastguard Worker  %2 = extractelement <2 x i64> %1, i32 0
128*9880d681SAndroid Build Coastguard Worker  %3 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
129*9880d681SAndroid Build Coastguard Worker  ret i64 %2
130*9880d681SAndroid Build Coastguard Worker}
131*9880d681SAndroid Build Coastguard Worker
132*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_mpsadbw(<16 x i8> %a0, <16 x i8> %a1) {
133*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mpsadbw
134*9880d681SAndroid Build Coastguard Worker  ;CHECK:       mpsadbw $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
135*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
136*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8> %a0, <16 x i8> %a1, i8 7)
137*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
138*9880d681SAndroid Build Coastguard Worker}
139*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8>, <16 x i8>, i8) nounwind readnone
140*9880d681SAndroid Build Coastguard Worker
141*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pabsb(<16 x i8> %a0) {
142*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pabsb
143*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pabsb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
144*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
145*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.ssse3.pabs.b.128(<16 x i8> %a0)
146*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
147*9880d681SAndroid Build Coastguard Worker}
148*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.ssse3.pabs.b.128(<16 x i8>) nounwind readnone
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pabsd(<4 x i32> %a0) {
151*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pabsd
152*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pabsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
153*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
154*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.ssse3.pabs.d.128(<4 x i32> %a0)
155*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
156*9880d681SAndroid Build Coastguard Worker}
157*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.pabs.d.128(<4 x i32>) nounwind readnone
158*9880d681SAndroid Build Coastguard Worker
159*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pabsw(<8 x i16> %a0) {
160*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pabsw
161*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pabsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
162*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
163*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.pabs.w.128(<8 x i16> %a0)
164*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
165*9880d681SAndroid Build Coastguard Worker}
166*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.pabs.w.128(<8 x i16>) nounwind readnone
167*9880d681SAndroid Build Coastguard Worker
168*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_packssdw(<4 x i32> %a0, <4 x i32> %a1) {
169*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_packssdw
170*9880d681SAndroid Build Coastguard Worker  ;CHECK:       packssdw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
171*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
172*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %a0, <4 x i32> %a1)
173*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
174*9880d681SAndroid Build Coastguard Worker}
175*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32>, <4 x i32>) nounwind readnone
176*9880d681SAndroid Build Coastguard Worker
177*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_packsswb(<8 x i16> %a0, <8 x i16> %a1) {
178*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_packsswb
179*9880d681SAndroid Build Coastguard Worker  ;CHECK:       packsswb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
180*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
181*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16> %a0, <8 x i16> %a1)
182*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
183*9880d681SAndroid Build Coastguard Worker}
184*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16>, <8 x i16>) nounwind readnone
185*9880d681SAndroid Build Coastguard Worker
186*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_packusdw(<4 x i32> %a0, <4 x i32> %a1) {
187*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_packusdw
188*9880d681SAndroid Build Coastguard Worker  ;CHECK:       packusdw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
189*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
190*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32> %a0, <4 x i32> %a1)
191*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
192*9880d681SAndroid Build Coastguard Worker}
193*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32>, <4 x i32>) nounwind readnone
194*9880d681SAndroid Build Coastguard Worker
195*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_packuswb(<8 x i16> %a0, <8 x i16> %a1) {
196*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_packuswb
197*9880d681SAndroid Build Coastguard Worker  ;CHECK:       packuswb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
198*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
199*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16> %a0, <8 x i16> %a1)
200*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
201*9880d681SAndroid Build Coastguard Worker}
202*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>) nounwind readnone
203*9880d681SAndroid Build Coastguard Worker
204*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_paddb(<16 x i8> %a0, <16 x i8> %a1) {
205*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddb
206*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
207*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
208*9880d681SAndroid Build Coastguard Worker  %2 = add <16 x i8> %a0, %a1
209*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
210*9880d681SAndroid Build Coastguard Worker}
211*9880d681SAndroid Build Coastguard Worker
212*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_paddd(<4 x i32> %a0, <4 x i32> %a1) {
213*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddd
214*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
215*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
216*9880d681SAndroid Build Coastguard Worker  %2 = add <4 x i32> %a0, %a1
217*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
218*9880d681SAndroid Build Coastguard Worker}
219*9880d681SAndroid Build Coastguard Worker
220*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_paddq(<2 x i64> %a0, <2 x i64> %a1) {
221*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddq
222*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
223*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
224*9880d681SAndroid Build Coastguard Worker  %2 = add <2 x i64> %a0, %a1
225*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
226*9880d681SAndroid Build Coastguard Worker}
227*9880d681SAndroid Build Coastguard Worker
228*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_paddsb(<16 x i8> %a0, <16 x i8> %a1) {
229*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddsb
230*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddsb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
231*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
232*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8> %a0, <16 x i8> %a1)
233*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
234*9880d681SAndroid Build Coastguard Worker}
235*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8>, <16 x i8>) nounwind readnone
236*9880d681SAndroid Build Coastguard Worker
237*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_paddsw(<8 x i16> %a0, <8 x i16> %a1) {
238*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddsw
239*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
240*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
241*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16> %a0, <8 x i16> %a1)
242*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
243*9880d681SAndroid Build Coastguard Worker}
244*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16>, <8 x i16>) nounwind readnone
245*9880d681SAndroid Build Coastguard Worker
246*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_paddusb(<16 x i8> %a0, <16 x i8> %a1) {
247*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddusb
248*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddusb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
249*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
250*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8> %a0, <16 x i8> %a1)
251*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
252*9880d681SAndroid Build Coastguard Worker}
253*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8>, <16 x i8>) nounwind readnone
254*9880d681SAndroid Build Coastguard Worker
255*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_paddusw(<8 x i16> %a0, <8 x i16> %a1) {
256*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddusw
257*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddusw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
258*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
259*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16> %a0, <8 x i16> %a1)
260*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
261*9880d681SAndroid Build Coastguard Worker}
262*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16>, <8 x i16>) nounwind readnone
263*9880d681SAndroid Build Coastguard Worker
264*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_paddw(<8 x i16> %a0, <8 x i16> %a1) {
265*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddw
266*9880d681SAndroid Build Coastguard Worker  ;CHECK:       paddw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
267*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
268*9880d681SAndroid Build Coastguard Worker  %2 = add <8 x i16> %a0, %a1
269*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
270*9880d681SAndroid Build Coastguard Worker}
271*9880d681SAndroid Build Coastguard Worker
272*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_palignr(<16 x i8> %a0, <16 x i8> %a1) {
273*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_palignr
274*9880d681SAndroid Build Coastguard Worker  ;CHECK:       palignr $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
275*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
276*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <16 x i8> %a1, <16 x i8> %a0, <16 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16>
277*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
278*9880d681SAndroid Build Coastguard Worker}
279*9880d681SAndroid Build Coastguard Worker
280*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pand(<16 x i8> %a0, <16 x i8> %a1) {
281*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pand
282*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pand {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
283*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
284*9880d681SAndroid Build Coastguard Worker  %2 = and <16 x i8> %a0, %a1
285*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
286*9880d681SAndroid Build Coastguard Worker  %3 = add <16 x i8> %2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
287*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %3
288*9880d681SAndroid Build Coastguard Worker}
289*9880d681SAndroid Build Coastguard Worker
290*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pandn(<16 x i8> %a0, <16 x i8> %a1) {
291*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pandn
292*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pandn {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
293*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
294*9880d681SAndroid Build Coastguard Worker  %2 = xor <16 x i8> %a0, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
295*9880d681SAndroid Build Coastguard Worker  %3 = and <16 x i8> %2, %a1
296*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
297*9880d681SAndroid Build Coastguard Worker  %4 = add <16 x i8> %3, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
298*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %4
299*9880d681SAndroid Build Coastguard Worker}
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pavgb(<16 x i8> %a0, <16 x i8> %a1) {
302*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pavgb
303*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pavgb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
304*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
305*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %a0, <16 x i8> %a1)
306*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
307*9880d681SAndroid Build Coastguard Worker}
308*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8>, <16 x i8>) nounwind readnone
309*9880d681SAndroid Build Coastguard Worker
310*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pavgw(<8 x i16> %a0, <8 x i16> %a1) {
311*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pavgw
312*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pavgw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
313*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
314*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16> %a0, <8 x i16> %a1)
315*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
316*9880d681SAndroid Build Coastguard Worker}
317*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16>, <8 x i16>) nounwind readnone
318*9880d681SAndroid Build Coastguard Worker
319*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %c) {
320*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pblendvb
321*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pblendvb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
322*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
323*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> %a1, <16 x i8> %c, <16 x i8> %a0)
324*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
325*9880d681SAndroid Build Coastguard Worker}
326*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone
327*9880d681SAndroid Build Coastguard Worker
328*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pblendw(<8 x i16> %a0, <8 x i16> %a1) {
329*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pblendw
330*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pblendw $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
331*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
332*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16> %a0, <8 x i16> %a1, i8 7)
333*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
334*9880d681SAndroid Build Coastguard Worker}
335*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16>, <8 x i16>, i8) nounwind readnone
336*9880d681SAndroid Build Coastguard Worker
337*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pclmulqdq(<2 x i64> %a0, <2 x i64> %a1) {
338*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pclmulqdq
339*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pclmulqdq $0, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
340*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
341*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %a0, <2 x i64> %a1, i8 0)
342*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
343*9880d681SAndroid Build Coastguard Worker}
344*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.pclmulqdq(<2 x i64>, <2 x i64>, i8) nounwind readnone
345*9880d681SAndroid Build Coastguard Worker
346*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pcmpeqb(<16 x i8> %a0, <16 x i8> %a1) {
347*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpeqb
348*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpeqb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
349*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
350*9880d681SAndroid Build Coastguard Worker  %2 = icmp eq <16 x i8> %a0, %a1
351*9880d681SAndroid Build Coastguard Worker  %3 = sext <16 x i1> %2 to <16 x i8>
352*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %3
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pcmpeqd(<4 x i32> %a0, <4 x i32> %a1) {
356*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpeqd
357*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpeqd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
358*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
359*9880d681SAndroid Build Coastguard Worker  %2 = icmp eq <4 x i32> %a0, %a1
360*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i1> %2 to <4 x i32>
361*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
362*9880d681SAndroid Build Coastguard Worker}
363*9880d681SAndroid Build Coastguard Worker
364*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pcmpeqq(<2 x i64> %a0, <2 x i64> %a1) {
365*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpeqq
366*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpeqq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
367*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
368*9880d681SAndroid Build Coastguard Worker  %2 = icmp eq <2 x i64> %a0, %a1
369*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i1> %2 to <2 x i64>
370*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
371*9880d681SAndroid Build Coastguard Worker}
372*9880d681SAndroid Build Coastguard Worker
373*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pcmpeqw(<8 x i16> %a0, <8 x i16> %a1) {
374*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpeqw
375*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpeqw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
376*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
377*9880d681SAndroid Build Coastguard Worker  %2 = icmp eq <8 x i16> %a0, %a1
378*9880d681SAndroid Build Coastguard Worker  %3 = sext <8 x i1> %2 to <8 x i16>
379*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %3
380*9880d681SAndroid Build Coastguard Worker}
381*9880d681SAndroid Build Coastguard Worker
382*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_pcmpestri(<16 x i8> %a0, <16 x i8> %a1) {
383*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpestri
384*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpestri $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
385*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{rax},~{flags}"()
386*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse42.pcmpestri128(<16 x i8> %a0, i32 7, <16 x i8> %a1, i32 7, i8 7)
387*9880d681SAndroid Build Coastguard Worker  ret i32 %2
388*9880d681SAndroid Build Coastguard Worker}
389*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestri128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
390*9880d681SAndroid Build Coastguard Worker
391*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pcmpestrm(<16 x i8> %a0, <16 x i8> %a1) {
392*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpestrm
393*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpestrm $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
394*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{rax},~{flags}"()
395*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8> %a0, i32 7, <16 x i8> %a1, i32 7, i8 7)
396*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
397*9880d681SAndroid Build Coastguard Worker}
398*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pcmpgtb(<16 x i8> %a0, <16 x i8> %a1) {
401*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpgtb
402*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpgtb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
403*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
404*9880d681SAndroid Build Coastguard Worker  %2 = icmp sgt <16 x i8> %a0, %a1
405*9880d681SAndroid Build Coastguard Worker  %3 = sext <16 x i1> %2 to <16 x i8>
406*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %3
407*9880d681SAndroid Build Coastguard Worker}
408*9880d681SAndroid Build Coastguard Worker
409*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pcmpgtd(<4 x i32> %a0, <4 x i32> %a1) {
410*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpgtd
411*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpgtd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
412*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
413*9880d681SAndroid Build Coastguard Worker  %2 = icmp sgt <4 x i32> %a0, %a1
414*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i1> %2 to <4 x i32>
415*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
416*9880d681SAndroid Build Coastguard Worker}
417*9880d681SAndroid Build Coastguard Worker
418*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pcmpgtq(<2 x i64> %a0, <2 x i64> %a1) {
419*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpgtq
420*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpgtq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
421*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
422*9880d681SAndroid Build Coastguard Worker  %2 = icmp sgt <2 x i64> %a0, %a1
423*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i1> %2 to <2 x i64>
424*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
425*9880d681SAndroid Build Coastguard Worker}
426*9880d681SAndroid Build Coastguard Worker
427*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pcmpgtw(<8 x i16> %a0, <8 x i16> %a1) {
428*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpgtw
429*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpgtw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
430*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
431*9880d681SAndroid Build Coastguard Worker  %2 = icmp sgt <8 x i16> %a0, %a1
432*9880d681SAndroid Build Coastguard Worker  %3 = sext <8 x i1> %2 to <8 x i16>
433*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %3
434*9880d681SAndroid Build Coastguard Worker}
435*9880d681SAndroid Build Coastguard Worker
436*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_pcmpistri(<16 x i8> %a0, <16 x i8> %a1) {
437*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpistri
438*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpistri $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
439*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
440*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %a0, <16 x i8> %a1, i8 7)
441*9880d681SAndroid Build Coastguard Worker  ret i32 %2
442*9880d681SAndroid Build Coastguard Worker}
443*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistri128(<16 x i8>, <16 x i8>, i8) nounwind readnone
444*9880d681SAndroid Build Coastguard Worker
445*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pcmpistrm(<16 x i8> %a0, <16 x i8> %a1) {
446*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpistrm
447*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pcmpistrm $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
448*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
449*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8> %a0, <16 x i8> %a1, i8 7)
450*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
451*9880d681SAndroid Build Coastguard Worker}
452*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8>, <16 x i8>, i8) nounwind readnone
453*9880d681SAndroid Build Coastguard Worker
454*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_pextrb
455*9880d681SAndroid Build Coastguard Worker
456*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_pextrd(<4 x i32> %a0) {
457*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pextrd
458*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pextrd $1, {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 4-byte Folded Spill
459*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movl    {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 4-byte Reload
460*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <4 x i32> %a0, i32 1
461*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
462*9880d681SAndroid Build Coastguard Worker  ret i32 %1
463*9880d681SAndroid Build Coastguard Worker}
464*9880d681SAndroid Build Coastguard Worker
465*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_pextrq(<2 x i64> %a0) {
466*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pextrq
467*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pextrq $1, {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 8-byte Folded Spill
468*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movq    {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 8-byte Reload
469*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <2 x i64> %a0, i32 1
470*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
471*9880d681SAndroid Build Coastguard Worker  ret i64 %1
472*9880d681SAndroid Build Coastguard Worker}
473*9880d681SAndroid Build Coastguard Worker
474*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_pextrw
475*9880d681SAndroid Build Coastguard Worker
476*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_phaddd(<4 x i32> %a0, <4 x i32> %a1) {
477*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phaddd
478*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phaddd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
479*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
480*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32> %a0, <4 x i32> %a1)
481*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
482*9880d681SAndroid Build Coastguard Worker}
483*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32>, <4 x i32>) nounwind readnone
484*9880d681SAndroid Build Coastguard Worker
485*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_phaddsw(<8 x i16> %a0, <8 x i16> %a1) {
486*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phaddsw
487*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phaddsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
488*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
489*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.phadd.sw.128(<8 x i16> %a0, <8 x i16> %a1)
490*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
491*9880d681SAndroid Build Coastguard Worker}
492*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phadd.sw.128(<8 x i16>, <8 x i16>) nounwind readnone
493*9880d681SAndroid Build Coastguard Worker
494*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_phaddw(<8 x i16> %a0, <8 x i16> %a1) {
495*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phaddw
496*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phaddw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
497*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
498*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.phadd.w.128(<8 x i16> %a0, <8 x i16> %a1)
499*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
500*9880d681SAndroid Build Coastguard Worker}
501*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phadd.w.128(<8 x i16>, <8 x i16>) nounwind readnone
502*9880d681SAndroid Build Coastguard Worker
503*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_phminposuw(<8 x i16> %a0) {
504*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phminposuw
505*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phminposuw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
506*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
507*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16> %a0)
508*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
509*9880d681SAndroid Build Coastguard Worker}
510*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16>) nounwind readnone
511*9880d681SAndroid Build Coastguard Worker
512*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_phsubd(<4 x i32> %a0, <4 x i32> %a1) {
513*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phsubd
514*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phsubd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
515*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
516*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.ssse3.phsub.d.128(<4 x i32> %a0, <4 x i32> %a1)
517*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
518*9880d681SAndroid Build Coastguard Worker}
519*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.phsub.d.128(<4 x i32>, <4 x i32>) nounwind readnone
520*9880d681SAndroid Build Coastguard Worker
521*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_phsubsw(<8 x i16> %a0, <8 x i16> %a1) {
522*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phsubsw
523*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phsubsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
524*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
525*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.phsub.sw.128(<8 x i16> %a0, <8 x i16> %a1)
526*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
527*9880d681SAndroid Build Coastguard Worker}
528*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phsub.sw.128(<8 x i16>, <8 x i16>) nounwind readnone
529*9880d681SAndroid Build Coastguard Worker
530*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_phsubw(<8 x i16> %a0, <8 x i16> %a1) {
531*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phsubw
532*9880d681SAndroid Build Coastguard Worker  ;CHECK:       phsubw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
533*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
534*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.phsub.w.128(<8 x i16> %a0, <8 x i16> %a1)
535*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
536*9880d681SAndroid Build Coastguard Worker}
537*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phsub.w.128(<8 x i16>, <8 x i16>) nounwind readnone
538*9880d681SAndroid Build Coastguard Worker
539*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pinsrb(<16 x i8> %a0, i8 %a1) {
540*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pinsrb
541*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pinsrb $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
542*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
543*9880d681SAndroid Build Coastguard Worker  %2 = insertelement <16 x i8> %a0, i8 %a1, i32 1
544*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
545*9880d681SAndroid Build Coastguard Worker}
546*9880d681SAndroid Build Coastguard Worker
547*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pinsrd(<4 x i32> %a0, i32 %a1) {
548*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pinsrd
549*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pinsrd $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
550*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
551*9880d681SAndroid Build Coastguard Worker  %2 = insertelement <4 x i32> %a0, i32 %a1, i32 1
552*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
553*9880d681SAndroid Build Coastguard Worker}
554*9880d681SAndroid Build Coastguard Worker
555*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pinsrq(<2 x i64> %a0, i64 %a1) {
556*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pinsrq
557*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pinsrq $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
558*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
559*9880d681SAndroid Build Coastguard Worker  %2 = insertelement <2 x i64> %a0, i64 %a1, i32 1
560*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
561*9880d681SAndroid Build Coastguard Worker}
562*9880d681SAndroid Build Coastguard Worker
563*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pinsrw(<8 x i16> %a0, i16 %a1) {
564*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pinsrw
565*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pinsrw $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
566*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15}"()
567*9880d681SAndroid Build Coastguard Worker  %2 = insertelement <8 x i16> %a0, i16 %a1, i32 1
568*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
569*9880d681SAndroid Build Coastguard Worker}
570*9880d681SAndroid Build Coastguard Worker
571*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmaddubsw(<16 x i8> %a0, <16 x i8> %a1) {
572*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaddubsw
573*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmaddubsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
574*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
575*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.pmadd.ub.sw.128(<16 x i8> %a0, <16 x i8> %a1)
576*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
577*9880d681SAndroid Build Coastguard Worker}
578*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.pmadd.ub.sw.128(<16 x i8>, <16 x i8>) nounwind readnone
579*9880d681SAndroid Build Coastguard Worker
580*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmaddwd(<8 x i16> %a0, <8 x i16> %a1) {
581*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaddwd
582*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmaddwd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
583*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
584*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16> %a0, <8 x i16> %a1)
585*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
586*9880d681SAndroid Build Coastguard Worker}
587*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16>, <8 x i16>) nounwind readnone
588*9880d681SAndroid Build Coastguard Worker
589*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pmaxsb(<16 x i8> %a0, <16 x i8> %a1) {
590*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxsb
591*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmaxsb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
592*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
593*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8> %a0, <16 x i8> %a1)
594*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
595*9880d681SAndroid Build Coastguard Worker}
596*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8>, <16 x i8>) nounwind readnone
597*9880d681SAndroid Build Coastguard Worker
598*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmaxsd(<4 x i32> %a0, <4 x i32> %a1) {
599*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxsd
600*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmaxsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
601*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
602*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32> %a0, <4 x i32> %a1)
603*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
604*9880d681SAndroid Build Coastguard Worker}
605*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32>, <4 x i32>) nounwind readnone
606*9880d681SAndroid Build Coastguard Worker
607*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmaxsw(<8 x i16> %a0, <8 x i16> %a1) {
608*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxsw
609*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmaxsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
610*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
611*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.pmaxs.w(<8 x i16> %a0, <8 x i16> %a1)
612*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
613*9880d681SAndroid Build Coastguard Worker}
614*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmaxs.w(<8 x i16>, <8 x i16>) nounwind readnone
615*9880d681SAndroid Build Coastguard Worker
616*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pmaxub(<16 x i8> %a0, <16 x i8> %a1) {
617*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxub
618*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmaxub {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
619*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
620*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.pmaxu.b(<16 x i8> %a0, <16 x i8> %a1)
621*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
622*9880d681SAndroid Build Coastguard Worker}
623*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pmaxu.b(<16 x i8>, <16 x i8>) nounwind readnone
624*9880d681SAndroid Build Coastguard Worker
625*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmaxud(<4 x i32> %a0, <4 x i32> %a1) {
626*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxud
627*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmaxud {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
628*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
629*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32> %a0, <4 x i32> %a1)
630*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
631*9880d681SAndroid Build Coastguard Worker}
632*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32>, <4 x i32>) nounwind readnone
633*9880d681SAndroid Build Coastguard Worker
634*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmaxuw(<8 x i16> %a0, <8 x i16> %a1) {
635*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxuw
636*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmaxuw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
637*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
638*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16> %a0, <8 x i16> %a1)
639*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
640*9880d681SAndroid Build Coastguard Worker}
641*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16>, <8 x i16>) nounwind readnone
642*9880d681SAndroid Build Coastguard Worker
643*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pminsb(<16 x i8> %a0, <16 x i8> %a1) {
644*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminsb
645*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pminsb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
646*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
647*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8> %a0, <16 x i8> %a1)
648*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
649*9880d681SAndroid Build Coastguard Worker}
650*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8>, <16 x i8>) nounwind readnone
651*9880d681SAndroid Build Coastguard Worker
652*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pminsd(<4 x i32> %a0, <4 x i32> %a1) {
653*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminsd
654*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pminsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
655*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
656*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32> %a0, <4 x i32> %a1)
657*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
658*9880d681SAndroid Build Coastguard Worker}
659*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32>, <4 x i32>) nounwind readnone
660*9880d681SAndroid Build Coastguard Worker
661*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pminsw(<8 x i16> %a0, <8 x i16> %a1) {
662*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminsw
663*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pminsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
664*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
665*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.pmins.w(<8 x i16> %a0, <8 x i16> %a1)
666*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
667*9880d681SAndroid Build Coastguard Worker}
668*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmins.w(<8 x i16>, <8 x i16>) nounwind readnone
669*9880d681SAndroid Build Coastguard Worker
670*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pminub(<16 x i8> %a0, <16 x i8> %a1) {
671*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminub
672*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pminub {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
673*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
674*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.pminu.b(<16 x i8> %a0, <16 x i8> %a1)
675*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
676*9880d681SAndroid Build Coastguard Worker}
677*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pminu.b(<16 x i8>, <16 x i8>) nounwind readnone
678*9880d681SAndroid Build Coastguard Worker
679*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pminud(<4 x i32> %a0, <4 x i32> %a1) {
680*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminud
681*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pminud {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
682*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
683*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse41.pminud(<4 x i32> %a0, <4 x i32> %a1)
684*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
685*9880d681SAndroid Build Coastguard Worker}
686*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pminud(<4 x i32>, <4 x i32>) nounwind readnone
687*9880d681SAndroid Build Coastguard Worker
688*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pminuw(<8 x i16> %a0, <8 x i16> %a1) {
689*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminuw
690*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pminuw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
691*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
692*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16> %a0, <8 x i16> %a1)
693*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
694*9880d681SAndroid Build Coastguard Worker}
695*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16>, <8 x i16>) nounwind readnone
696*9880d681SAndroid Build Coastguard Worker
697*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmovsxbd(<16 x i8> %a0) {
698*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovsxbd
699*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmovsxbd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
700*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
701*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <16 x i8> %a0, <16 x i8> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
702*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i8> %2 to <4 x i32>
703*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
704*9880d681SAndroid Build Coastguard Worker}
705*9880d681SAndroid Build Coastguard Worker
706*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmovsxbq(<16 x i8> %a0) {
707*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovsxbq
708*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmovsxbq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
709*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
710*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <16 x i8> %a0, <16 x i8> undef, <2 x i32> <i32 0, i32 1>
711*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i8> %2 to <2 x i64>
712*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
713*9880d681SAndroid Build Coastguard Worker}
714*9880d681SAndroid Build Coastguard Worker
715*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmovsxbw(<16 x i8> %a0) {
716*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovsxbw
717*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmovsxbw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
718*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
719*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <16 x i8> %a0, <16 x i8> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
720*9880d681SAndroid Build Coastguard Worker  %3 = sext <8 x i8> %2 to <8 x i16>
721*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %3
722*9880d681SAndroid Build Coastguard Worker}
723*9880d681SAndroid Build Coastguard Worker
724*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmovsxdq(<4 x i32> %a0) {
725*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovsxdq
726*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmovsxdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
727*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
728*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x i32> %a0, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
729*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i32> %2 to <2 x i64>
730*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
731*9880d681SAndroid Build Coastguard Worker}
732*9880d681SAndroid Build Coastguard Worker
733*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmovsxwd(<8 x i16> %a0) {
734*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovsxwd
735*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmovsxwd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
736*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
737*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x i16> %a0, <8 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
738*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i16> %2 to <4 x i32>
739*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
740*9880d681SAndroid Build Coastguard Worker}
741*9880d681SAndroid Build Coastguard Worker
742*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmovsxwq(<8 x i16> %a0) {
743*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovsxwq
744*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmovsxwq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
745*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
746*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x i16> %a0, <8 x i16> undef, <2 x i32> <i32 0, i32 1>
747*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i16> %2 to <2 x i64>
748*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
749*9880d681SAndroid Build Coastguard Worker}
750*9880d681SAndroid Build Coastguard Worker
751*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmovzxbd(<16 x i8> %a0) {
752*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovzxbd
753*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmovzxbd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
754*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
755*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <16 x i8> %a0, <16 x i8> zeroinitializer, <16 x i32> <i32 0, i32 16, i32 17, i32 18, i32 1, i32 19, i32 20, i32 21, i32 2, i32 22, i32 23, i32 24, i32 3, i32 25, i32 26, i32 27>
756*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <16 x i8> %2 to <4 x i32>
757*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
758*9880d681SAndroid Build Coastguard Worker}
759*9880d681SAndroid Build Coastguard Worker
760*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmovzxbq(<16 x i8> %a0) {
761*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovzxbq
762*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmovzxbq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
763*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
764*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <16 x i8> %a0, <16 x i8> zeroinitializer, <16 x i32> <i32 0, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 1, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28>
765*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <16 x i8> %2 to <2 x i64>
766*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
767*9880d681SAndroid Build Coastguard Worker}
768*9880d681SAndroid Build Coastguard Worker
769*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmovzxbw(<16 x i8> %a0) {
770*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovzxbw
771*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmovzxbw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
772*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
773*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <16 x i8> %a0, <16 x i8> zeroinitializer, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
774*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <16 x i8> %2 to <8 x i16>
775*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %3
776*9880d681SAndroid Build Coastguard Worker}
777*9880d681SAndroid Build Coastguard Worker
778*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmovzxdq(<4 x i32> %a0) {
779*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovzxdq
780*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmovzxdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
781*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
782*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x i32> %a0, <4 x i32> zeroinitializer, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
783*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i32> %2 to <2 x i64>
784*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
785*9880d681SAndroid Build Coastguard Worker}
786*9880d681SAndroid Build Coastguard Worker
787*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmovzxwd(<8 x i16> %a0) {
788*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovzxwd
789*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmovzxwd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
790*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
791*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x i16> %a0, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
792*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <8 x i16> %2 to <4 x i32>
793*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
794*9880d681SAndroid Build Coastguard Worker}
795*9880d681SAndroid Build Coastguard Worker
796*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmovzxwq(<8 x i16> %a0) {
797*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovzxwq
798*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmovzxwq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
799*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
800*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x i16> %a0, <8 x i16> zeroinitializer, <8 x i32> <i32 0, i32 8, i32 9, i32 10, i32 1, i32 11, i32 12, i32 13>
801*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <8 x i16> %2 to <2 x i64>
802*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
803*9880d681SAndroid Build Coastguard Worker}
804*9880d681SAndroid Build Coastguard Worker
805*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmuldq(<4 x i32> %a0, <4 x i32> %a1) {
806*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmuldq
807*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmuldq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
808*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
809*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32> %a0, <4 x i32> %a1)
810*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
811*9880d681SAndroid Build Coastguard Worker}
812*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32>, <4 x i32>) nounwind readnone
813*9880d681SAndroid Build Coastguard Worker
814*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmulhrsw(<8 x i16> %a0, <8 x i16> %a1) {
815*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmulhrsw
816*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmulhrsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
817*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
818*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.pmul.hr.sw.128(<8 x i16> %a0, <8 x i16> %a1)
819*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
820*9880d681SAndroid Build Coastguard Worker}
821*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.pmul.hr.sw.128(<8 x i16>, <8 x i16>) nounwind readnone
822*9880d681SAndroid Build Coastguard Worker
823*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmulhuw(<8 x i16> %a0, <8 x i16> %a1) {
824*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmulhuw
825*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmulhuw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
826*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
827*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16> %a0, <8 x i16> %a1)
828*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
829*9880d681SAndroid Build Coastguard Worker}
830*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16>, <8 x i16>) nounwind readnone
831*9880d681SAndroid Build Coastguard Worker
832*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmulhw(<8 x i16> %a0, <8 x i16> %a1) {
833*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmulhw
834*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmulhw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
835*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
836*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16> %a0, <8 x i16> %a1)
837*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
838*9880d681SAndroid Build Coastguard Worker}
839*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16>, <8 x i16>) nounwind readnone
840*9880d681SAndroid Build Coastguard Worker
841*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmulld(<4 x i32> %a0, <4 x i32> %a1) {
842*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmulld
843*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmulld {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
844*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
845*9880d681SAndroid Build Coastguard Worker  %2 = mul <4 x i32> %a0, %a1
846*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
847*9880d681SAndroid Build Coastguard Worker}
848*9880d681SAndroid Build Coastguard Worker
849*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmullw(<8 x i16> %a0, <8 x i16> %a1) {
850*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmullw
851*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmullw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
852*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
853*9880d681SAndroid Build Coastguard Worker  %2 = mul <8 x i16> %a0, %a1
854*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
855*9880d681SAndroid Build Coastguard Worker}
856*9880d681SAndroid Build Coastguard Worker
857*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmuludq(<4 x i32> %a0, <4 x i32> %a1) {
858*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmuludq
859*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pmuludq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
860*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
861*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32> %a0, <4 x i32> %a1)
862*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
863*9880d681SAndroid Build Coastguard Worker}
864*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32>, <4 x i32>) nounwind readnone
865*9880d681SAndroid Build Coastguard Worker
866*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_por(<16 x i8> %a0, <16 x i8> %a1) {
867*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_por
868*9880d681SAndroid Build Coastguard Worker  ;CHECK:       por {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
869*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
870*9880d681SAndroid Build Coastguard Worker  %2 = or <16 x i8> %a0, %a1
871*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
872*9880d681SAndroid Build Coastguard Worker  %3 = add <16 x i8> %2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
873*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %3
874*9880d681SAndroid Build Coastguard Worker}
875*9880d681SAndroid Build Coastguard Worker
876*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_psadbw(<16 x i8> %a0, <16 x i8> %a1) {
877*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psadbw
878*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psadbw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
879*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
880*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %a0, <16 x i8> %a1)
881*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
882*9880d681SAndroid Build Coastguard Worker}
883*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8>, <16 x i8>) nounwind readnone
884*9880d681SAndroid Build Coastguard Worker
885*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pshufb(<16 x i8> %a0, <16 x i8> %a1) {
886*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pshufb
887*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pshufb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
888*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
889*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8> %a0, <16 x i8> %a1)
890*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
891*9880d681SAndroid Build Coastguard Worker}
892*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8>, <16 x i8>) nounwind readnone
893*9880d681SAndroid Build Coastguard Worker
894*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pshufd(<4 x i32> %a0) {
895*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pshufd
896*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pshufd $27, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
897*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
898*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x i32> %a0, <4 x i32> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
899*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
900*9880d681SAndroid Build Coastguard Worker}
901*9880d681SAndroid Build Coastguard Worker
902*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pshufhw(<8 x i16> %a0) {
903*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pshufhw
904*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pshufhw $11, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
905*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
906*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x i16> %a0, <8 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 7, i32 6, i32 4, i32 4>
907*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
908*9880d681SAndroid Build Coastguard Worker}
909*9880d681SAndroid Build Coastguard Worker
910*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pshuflw(<8 x i16> %a0) {
911*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pshuflw
912*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pshuflw $27, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
913*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
914*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x i16> %a0, <8 x i16> undef, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 4, i32 5, i32 6, i32 7>
915*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
916*9880d681SAndroid Build Coastguard Worker}
917*9880d681SAndroid Build Coastguard Worker
918*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_psignb(<16 x i8> %a0, <16 x i8> %a1) {
919*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psignb
920*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psignb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
921*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
922*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.ssse3.psign.b.128(<16 x i8> %a0, <16 x i8> %a1)
923*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
924*9880d681SAndroid Build Coastguard Worker}
925*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.ssse3.psign.b.128(<16 x i8>, <16 x i8>) nounwind readnone
926*9880d681SAndroid Build Coastguard Worker
927*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_psignd(<4 x i32> %a0, <4 x i32> %a1) {
928*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psignd
929*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psignd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
930*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
931*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.ssse3.psign.d.128(<4 x i32> %a0, <4 x i32> %a1)
932*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
933*9880d681SAndroid Build Coastguard Worker}
934*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.psign.d.128(<4 x i32>, <4 x i32>) nounwind readnone
935*9880d681SAndroid Build Coastguard Worker
936*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psignw(<8 x i16> %a0, <8 x i16> %a1) {
937*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psignw
938*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psignw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
939*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
940*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.psign.w.128(<8 x i16> %a0, <8 x i16> %a1)
941*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
942*9880d681SAndroid Build Coastguard Worker}
943*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.psign.w.128(<8 x i16>, <8 x i16>) nounwind readnone
944*9880d681SAndroid Build Coastguard Worker
945*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pslld(<4 x i32> %a0, <4 x i32> %a1) {
946*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pslld
947*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pslld {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
948*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
949*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32> %a0, <4 x i32> %a1)
950*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
951*9880d681SAndroid Build Coastguard Worker}
952*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32>, <4 x i32>) nounwind readnone
953*9880d681SAndroid Build Coastguard Worker
954*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_psllq(<2 x i64> %a0, <2 x i64> %a1) {
955*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psllq
956*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psllq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
957*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
958*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64> %a0, <2 x i64> %a1)
959*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
960*9880d681SAndroid Build Coastguard Worker}
961*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64>, <2 x i64>) nounwind readnone
962*9880d681SAndroid Build Coastguard Worker
963*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psllw(<8 x i16> %a0, <8 x i16> %a1) {
964*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psllw
965*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psllw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
966*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
967*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16> %a0, <8 x i16> %a1)
968*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
969*9880d681SAndroid Build Coastguard Worker}
970*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16>, <8 x i16>) nounwind readnone
971*9880d681SAndroid Build Coastguard Worker
972*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_psrad(<4 x i32> %a0, <4 x i32> %a1) {
973*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psrad
974*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psrad {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
975*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
976*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32> %a0, <4 x i32> %a1)
977*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
978*9880d681SAndroid Build Coastguard Worker}
979*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32>, <4 x i32>) nounwind readnone
980*9880d681SAndroid Build Coastguard Worker
981*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psraw(<8 x i16> %a0, <8 x i16> %a1) {
982*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psraw
983*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psraw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
984*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
985*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16> %a0, <8 x i16> %a1)
986*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
987*9880d681SAndroid Build Coastguard Worker}
988*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16>, <8 x i16>) nounwind readnone
989*9880d681SAndroid Build Coastguard Worker
990*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_psrld(<4 x i32> %a0, <4 x i32> %a1) {
991*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psrld
992*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psrld {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
993*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
994*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32> %a0, <4 x i32> %a1)
995*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
996*9880d681SAndroid Build Coastguard Worker}
997*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32>, <4 x i32>) nounwind readnone
998*9880d681SAndroid Build Coastguard Worker
999*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_psrlq(<2 x i64> %a0, <2 x i64> %a1) {
1000*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psrlq
1001*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psrlq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1002*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1003*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64> %a0, <2 x i64> %a1)
1004*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
1005*9880d681SAndroid Build Coastguard Worker}
1006*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64>, <2 x i64>) nounwind readnone
1007*9880d681SAndroid Build Coastguard Worker
1008*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psrlw(<8 x i16> %a0, <8 x i16> %a1) {
1009*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psrlw
1010*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psrlw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1011*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1012*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16> %a0, <8 x i16> %a1)
1013*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
1014*9880d681SAndroid Build Coastguard Worker}
1015*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16>, <8 x i16>) nounwind readnone
1016*9880d681SAndroid Build Coastguard Worker
1017*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_psubb(<16 x i8> %a0, <16 x i8> %a1) {
1018*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubb
1019*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1020*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1021*9880d681SAndroid Build Coastguard Worker  %2 = sub <16 x i8> %a0, %a1
1022*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
1023*9880d681SAndroid Build Coastguard Worker}
1024*9880d681SAndroid Build Coastguard Worker
1025*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_psubd(<4 x i32> %a0, <4 x i32> %a1) {
1026*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubd
1027*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1028*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1029*9880d681SAndroid Build Coastguard Worker  %2 = sub <4 x i32> %a0, %a1
1030*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
1031*9880d681SAndroid Build Coastguard Worker}
1032*9880d681SAndroid Build Coastguard Worker
1033*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_psubq(<2 x i64> %a0, <2 x i64> %a1) {
1034*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubq
1035*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1036*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1037*9880d681SAndroid Build Coastguard Worker  %2 = sub <2 x i64> %a0, %a1
1038*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
1039*9880d681SAndroid Build Coastguard Worker}
1040*9880d681SAndroid Build Coastguard Worker
1041*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_psubsb(<16 x i8> %a0, <16 x i8> %a1) {
1042*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubsb
1043*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubsb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1044*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1045*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8> %a0, <16 x i8> %a1)
1046*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
1047*9880d681SAndroid Build Coastguard Worker}
1048*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8>, <16 x i8>) nounwind readnone
1049*9880d681SAndroid Build Coastguard Worker
1050*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psubsw(<8 x i16> %a0, <8 x i16> %a1) {
1051*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubsw
1052*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1053*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1054*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16> %a0, <8 x i16> %a1)
1055*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
1056*9880d681SAndroid Build Coastguard Worker}
1057*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16>, <8 x i16>) nounwind readnone
1058*9880d681SAndroid Build Coastguard Worker
1059*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_psubusb(<16 x i8> %a0, <16 x i8> %a1) {
1060*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubusb
1061*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubusb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1062*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1063*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8> %a0, <16 x i8> %a1)
1064*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
1065*9880d681SAndroid Build Coastguard Worker}
1066*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8>, <16 x i8>) nounwind readnone
1067*9880d681SAndroid Build Coastguard Worker
1068*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psubusw(<8 x i16> %a0, <8 x i16> %a1) {
1069*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubusw
1070*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubusw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1071*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1072*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16> %a0, <8 x i16> %a1)
1073*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
1074*9880d681SAndroid Build Coastguard Worker}
1075*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16>, <8 x i16>) nounwind readnone
1076*9880d681SAndroid Build Coastguard Worker
1077*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psubw(<8 x i16> %a0, <8 x i16> %a1) {
1078*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubw
1079*9880d681SAndroid Build Coastguard Worker  ;CHECK:       psubw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1080*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1081*9880d681SAndroid Build Coastguard Worker  %2 = sub <8 x i16> %a0, %a1
1082*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
1083*9880d681SAndroid Build Coastguard Worker}
1084*9880d681SAndroid Build Coastguard Worker
1085*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_ptest(<2 x i64> %a0, <2 x i64> %a1) {
1086*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_ptest
1087*9880d681SAndroid Build Coastguard Worker  ;CHECK:       ptest {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1088*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1089*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse41.ptestc(<2 x i64> %a0, <2 x i64> %a1)
1090*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1091*9880d681SAndroid Build Coastguard Worker}
1092*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse41.ptestc(<2 x i64>, <2 x i64>) nounwind readnone
1093*9880d681SAndroid Build Coastguard Worker
1094*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_punpckhbw(<16 x i8> %a0, <16 x i8> %a1) {
1095*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckhbw
1096*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpckhbw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1097*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1098*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <16 x i8> %a0, <16 x i8> %a1, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1099*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
1100*9880d681SAndroid Build Coastguard Worker}
1101*9880d681SAndroid Build Coastguard Worker
1102*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_punpckhdq(<4 x i32> %a0, <4 x i32> %a1) {
1103*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckhdq
1104*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpckhdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1105*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1106*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x i32> %a0, <4 x i32> %a1, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
1107*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
1108*9880d681SAndroid Build Coastguard Worker  %3 = add <4 x i32> %2, <i32 1, i32 1, i32 1, i32 1>
1109*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
1110*9880d681SAndroid Build Coastguard Worker}
1111*9880d681SAndroid Build Coastguard Worker
1112*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_punpckhqdq(<2 x i64> %a0, <2 x i64> %a1) {
1113*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckhqdq
1114*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpckhqdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1115*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1116*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x i64> %a0, <2 x i64> %a1, <2 x i32> <i32 1, i32 3>
1117*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
1118*9880d681SAndroid Build Coastguard Worker  %3 = add <2 x i64> %2, <i64 1, i64 1>
1119*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
1120*9880d681SAndroid Build Coastguard Worker}
1121*9880d681SAndroid Build Coastguard Worker
1122*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_punpckhwd(<8 x i16> %a0, <8 x i16> %a1) {
1123*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckhwd
1124*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpckhwd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1125*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1126*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x i16> %a0, <8 x i16> %a1, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
1127*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
1128*9880d681SAndroid Build Coastguard Worker}
1129*9880d681SAndroid Build Coastguard Worker
1130*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_punpcklbw(<16 x i8> %a0, <16 x i8> %a1) {
1131*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpcklbw
1132*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpcklbw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1133*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1134*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <16 x i8> %a0, <16 x i8> %a1, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
1135*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
1136*9880d681SAndroid Build Coastguard Worker}
1137*9880d681SAndroid Build Coastguard Worker
1138*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_punpckldq(<4 x i32> %a0, <4 x i32> %a1) {
1139*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckldq
1140*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpckldq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1141*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1142*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x i32> %a0, <4 x i32> %a1, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
1143*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
1144*9880d681SAndroid Build Coastguard Worker  %3 = add <4 x i32> %2, <i32 1, i32 1, i32 1, i32 1>
1145*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
1146*9880d681SAndroid Build Coastguard Worker}
1147*9880d681SAndroid Build Coastguard Worker
1148*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_punpcklqdq(<2 x i64> %a0, <2 x i64> %a1) {
1149*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpcklqdq
1150*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpcklqdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1151*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1152*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x i64> %a0, <2 x i64> %a1, <2 x i32> <i32 0, i32 2>
1153*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
1154*9880d681SAndroid Build Coastguard Worker  %3 = add <2 x i64> %2, <i64 1, i64 1>
1155*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
1156*9880d681SAndroid Build Coastguard Worker}
1157*9880d681SAndroid Build Coastguard Worker
1158*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_punpcklwd(<8 x i16> %a0, <8 x i16> %a1) {
1159*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpcklwd
1160*9880d681SAndroid Build Coastguard Worker  ;CHECK:       punpcklwd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1161*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1162*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x i16> %a0, <8 x i16> %a1, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
1163*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
1164*9880d681SAndroid Build Coastguard Worker}
1165*9880d681SAndroid Build Coastguard Worker
1166*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pxor(<16 x i8> %a0, <16 x i8> %a1) {
1167*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pxor
1168*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pxor {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1169*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1170*9880d681SAndroid Build Coastguard Worker  %2 = xor <16 x i8> %a0, %a1
1171*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
1172*9880d681SAndroid Build Coastguard Worker  %3 = add <16 x i8> %2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1173*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %3
1174*9880d681SAndroid Build Coastguard Worker}
1175