xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/stack-folding-int-avx1.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O3 -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx,+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:       vaesdec {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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:       vaesdeclast {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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:       vaesenc {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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:       vaesenclast {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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:       vaesimc {{-?[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:       vaeskeygenassist $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 Workerdefine <4 x i32> @stack_fold_movd_load(i32 %a0) {
66*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movd_load
67*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
68*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}"()
69*9880d681SAndroid Build Coastguard Worker  %2 = insertelement <4 x i32> zeroinitializer, i32 %a0, i32 0
70*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
71*9880d681SAndroid Build Coastguard Worker  %3 = add <4 x i32> %2, <i32 1, i32 1, i32 1, i32 1>
72*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
73*9880d681SAndroid Build Coastguard Worker}
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_movd_store(<4 x i32> %a0) {
76*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movd_store
77*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movd {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 4-byte Folded Spill
78*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
79*9880d681SAndroid Build Coastguard Worker  %1 = add <4 x i32> %a0, <i32 1, i32 1, i32 1, i32 1>
80*9880d681SAndroid Build Coastguard Worker  %2 = extractelement <4 x i32> %1, i32 0
81*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}"()
82*9880d681SAndroid Build Coastguard Worker  ret i32 %2
83*9880d681SAndroid Build Coastguard Worker}
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_movq_load(<2 x i64> %a0) {
86*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movq_load
87*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
88*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}"()
89*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x i64> %a0, <2 x i64> zeroinitializer, <2 x i32> <i32 0, i32 2>
90*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
91*9880d681SAndroid Build Coastguard Worker  %3 = add <2 x i64> %2, <i64 1, i64 1>
92*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
93*9880d681SAndroid Build Coastguard Worker}
94*9880d681SAndroid Build Coastguard Worker
95*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_movq_store(<2 x i64> %a0) {
96*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movq_store
97*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movq {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 8-byte Folded Spill
98*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
99*9880d681SAndroid Build Coastguard Worker  %1 = add <2 x i64> %a0, <i64 1, i64 1>
100*9880d681SAndroid Build Coastguard Worker  %2 = extractelement <2 x i64> %1, i32 0
101*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}"()
102*9880d681SAndroid Build Coastguard Worker  ret i64 %2
103*9880d681SAndroid Build Coastguard Worker}
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_mpsadbw(<16 x i8> %a0, <16 x i8> %a1) {
106*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mpsadbw
107*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmpsadbw $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
108*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}"()
109*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8> %a0, <16 x i8> %a1, i8 7)
110*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
111*9880d681SAndroid Build Coastguard Worker}
112*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8>, <16 x i8>, i8) nounwind readnone
113*9880d681SAndroid Build Coastguard Worker
114*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pabsb(<16 x i8> %a0) {
115*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pabsb
116*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpabsb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
117*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}"()
118*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.ssse3.pabs.b.128(<16 x i8> %a0)
119*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
120*9880d681SAndroid Build Coastguard Worker}
121*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.ssse3.pabs.b.128(<16 x i8>) nounwind readnone
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pabsd(<4 x i32> %a0) {
124*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pabsd
125*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpabsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
126*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}"()
127*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.ssse3.pabs.d.128(<4 x i32> %a0)
128*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
129*9880d681SAndroid Build Coastguard Worker}
130*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.pabs.d.128(<4 x i32>) nounwind readnone
131*9880d681SAndroid Build Coastguard Worker
132*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pabsw(<8 x i16> %a0) {
133*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pabsw
134*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpabsw {{-?[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,~{xmm1},~{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.ssse3.pabs.w.128(<8 x i16> %a0)
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.ssse3.pabs.w.128(<8 x i16>) nounwind readnone
140*9880d681SAndroid Build Coastguard Worker
141*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_packssdw(<4 x i32> %a0, <4 x i32> %a1) {
142*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_packssdw
143*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpackssdw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
144*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}"()
145*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %a0, <4 x i32> %a1)
146*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
147*9880d681SAndroid Build Coastguard Worker}
148*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32>, <4 x i32>) nounwind readnone
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_packsswb(<8 x i16> %a0, <8 x i16> %a1) {
151*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_packsswb
152*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpacksswb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
153*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}"()
154*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16> %a0, <8 x i16> %a1)
155*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
156*9880d681SAndroid Build Coastguard Worker}
157*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16>, <8 x i16>) nounwind readnone
158*9880d681SAndroid Build Coastguard Worker
159*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_packusdw(<4 x i32> %a0, <4 x i32> %a1) {
160*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_packusdw
161*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpackusdw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
162*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}"()
163*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32> %a0, <4 x i32> %a1)
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.sse41.packusdw(<4 x i32>, <4 x i32>) nounwind readnone
167*9880d681SAndroid Build Coastguard Worker
168*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_packuswb(<8 x i16> %a0, <8 x i16> %a1) {
169*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_packuswb
170*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpackuswb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16> %a0, <8 x i16> %a1)
173*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
174*9880d681SAndroid Build Coastguard Worker}
175*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>) nounwind readnone
176*9880d681SAndroid Build Coastguard Worker
177*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_paddb(<16 x i8> %a0, <16 x i8> %a1) {
178*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddb
179*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpaddb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 = add <16 x i8> %a0, %a1
182*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
183*9880d681SAndroid Build Coastguard Worker}
184*9880d681SAndroid Build Coastguard Worker
185*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_paddd(<4 x i32> %a0, <4 x i32> %a1) {
186*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddd
187*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpaddd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
188*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}"()
189*9880d681SAndroid Build Coastguard Worker  %2 = add <4 x i32> %a0, %a1
190*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
191*9880d681SAndroid Build Coastguard Worker}
192*9880d681SAndroid Build Coastguard Worker
193*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_paddq(<2 x i64> %a0, <2 x i64> %a1) {
194*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddq
195*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpaddq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
196*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}"()
197*9880d681SAndroid Build Coastguard Worker  %2 = add <2 x i64> %a0, %a1
198*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
199*9880d681SAndroid Build Coastguard Worker}
200*9880d681SAndroid Build Coastguard Worker
201*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_paddsb(<16 x i8> %a0, <16 x i8> %a1) {
202*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddsb
203*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpaddsb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
204*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}"()
205*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8> %a0, <16 x i8> %a1)
206*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
207*9880d681SAndroid Build Coastguard Worker}
208*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8>, <16 x i8>) nounwind readnone
209*9880d681SAndroid Build Coastguard Worker
210*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_paddsw(<8 x i16> %a0, <8 x i16> %a1) {
211*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddsw
212*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpaddsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
213*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}"()
214*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16> %a0, <8 x i16> %a1)
215*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
216*9880d681SAndroid Build Coastguard Worker}
217*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16>, <8 x i16>) nounwind readnone
218*9880d681SAndroid Build Coastguard Worker
219*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_paddusb(<16 x i8> %a0, <16 x i8> %a1) {
220*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddusb
221*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpaddusb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
222*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}"()
223*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8> %a0, <16 x i8> %a1)
224*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
225*9880d681SAndroid Build Coastguard Worker}
226*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8>, <16 x i8>) nounwind readnone
227*9880d681SAndroid Build Coastguard Worker
228*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_paddusw(<8 x i16> %a0, <8 x i16> %a1) {
229*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddusw
230*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpaddusw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16> %a0, <8 x i16> %a1)
233*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
234*9880d681SAndroid Build Coastguard Worker}
235*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16>, <8 x i16>) nounwind readnone
236*9880d681SAndroid Build Coastguard Worker
237*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_paddw(<8 x i16> %a0, <8 x i16> %a1) {
238*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_paddw
239*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpaddw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 = add <8 x i16> %a0, %a1
242*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
243*9880d681SAndroid Build Coastguard Worker}
244*9880d681SAndroid Build Coastguard Worker
245*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_palignr(<16 x i8> %a0, <16 x i8> %a1) {
246*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_palignr
247*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpalignr $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
248*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}"()
249*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>
250*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
251*9880d681SAndroid Build Coastguard Worker}
252*9880d681SAndroid Build Coastguard Worker
253*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pand(<16 x i8> %a0, <16 x i8> %a1) {
254*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pand
255*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpand {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
256*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}"()
257*9880d681SAndroid Build Coastguard Worker  %2 = and <16 x i8> %a0, %a1
258*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
259*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>
260*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %3
261*9880d681SAndroid Build Coastguard Worker}
262*9880d681SAndroid Build Coastguard Worker
263*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pandn(<16 x i8> %a0, <16 x i8> %a1) {
264*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pandn
265*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpandn {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
266*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}"()
267*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>
268*9880d681SAndroid Build Coastguard Worker  %3 = and <16 x i8> %2, %a1
269*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
270*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>
271*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %4
272*9880d681SAndroid Build Coastguard Worker}
273*9880d681SAndroid Build Coastguard Worker
274*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pavgb(<16 x i8> %a0, <16 x i8> %a1) {
275*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pavgb
276*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpavgb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
277*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}"()
278*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %a0, <16 x i8> %a1)
279*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
280*9880d681SAndroid Build Coastguard Worker}
281*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8>, <16 x i8>) nounwind readnone
282*9880d681SAndroid Build Coastguard Worker
283*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pavgw(<8 x i16> %a0, <8 x i16> %a1) {
284*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pavgw
285*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpavgw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
286*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}"()
287*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16> %a0, <8 x i16> %a1)
288*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
289*9880d681SAndroid Build Coastguard Worker}
290*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16>, <8 x i16>) nounwind readnone
291*9880d681SAndroid Build Coastguard Worker
292*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %c) {
293*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pblendvb
294*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpblendvb {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
295*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}"()
296*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)
297*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
298*9880d681SAndroid Build Coastguard Worker}
299*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pblendw(<8 x i16> %a0, <8 x i16> %a1) {
302*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pblendw
303*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpblendw $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16> %a0, <8 x i16> %a1, i8 7)
306*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
307*9880d681SAndroid Build Coastguard Worker}
308*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16>, <8 x i16>, i8) nounwind readnone
309*9880d681SAndroid Build Coastguard Worker
310*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pclmulqdq(<2 x i64> %a0, <2 x i64> %a1) {
311*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pclmulqdq
312*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpclmulqdq $0, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %a0, <2 x i64> %a1, i8 0)
315*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
316*9880d681SAndroid Build Coastguard Worker}
317*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.pclmulqdq(<2 x i64>, <2 x i64>, i8) nounwind readnone
318*9880d681SAndroid Build Coastguard Worker
319*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pcmpeqb(<16 x i8> %a0, <16 x i8> %a1) {
320*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpeqb
321*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmpeqb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
322*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}"()
323*9880d681SAndroid Build Coastguard Worker  %2 = icmp eq <16 x i8> %a0, %a1
324*9880d681SAndroid Build Coastguard Worker  %3 = sext <16 x i1> %2 to <16 x i8>
325*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %3
326*9880d681SAndroid Build Coastguard Worker}
327*9880d681SAndroid Build Coastguard Worker
328*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pcmpeqd(<4 x i32> %a0, <4 x i32> %a1) {
329*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpeqd
330*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmpeqd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 = icmp eq <4 x i32> %a0, %a1
333*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i1> %2 to <4 x i32>
334*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
335*9880d681SAndroid Build Coastguard Worker}
336*9880d681SAndroid Build Coastguard Worker
337*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pcmpeqq(<2 x i64> %a0, <2 x i64> %a1) {
338*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpeqq
339*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmpeqq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 = icmp eq <2 x i64> %a0, %a1
342*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i1> %2 to <2 x i64>
343*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
344*9880d681SAndroid Build Coastguard Worker}
345*9880d681SAndroid Build Coastguard Worker
346*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pcmpeqw(<8 x i16> %a0, <8 x i16> %a1) {
347*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpeqw
348*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmpeqw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <8 x i16> %a0, %a1
351*9880d681SAndroid Build Coastguard Worker  %3 = sext <8 x i1> %2 to <8 x i16>
352*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %3
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_pcmpestri(<16 x i8> %a0, <16 x i8> %a1) {
356*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpestri
357*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmpestri $7, {{-?[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},~{rax},~{flags}"()
359*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)
360*9880d681SAndroid Build Coastguard Worker  ret i32 %2
361*9880d681SAndroid Build Coastguard Worker}
362*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestri128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
363*9880d681SAndroid Build Coastguard Worker
364*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pcmpestrm(<16 x i8> %a0, <16 x i8> %a1) {
365*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpestrm
366*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmpestrm $7, {{-?[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},~{rax},~{flags}"()
368*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)
369*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
370*9880d681SAndroid Build Coastguard Worker}
371*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
372*9880d681SAndroid Build Coastguard Worker
373*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pcmpgtb(<16 x i8> %a0, <16 x i8> %a1) {
374*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpgtb
375*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmpgtb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 sgt <16 x i8> %a0, %a1
378*9880d681SAndroid Build Coastguard Worker  %3 = sext <16 x i1> %2 to <16 x i8>
379*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %3
380*9880d681SAndroid Build Coastguard Worker}
381*9880d681SAndroid Build Coastguard Worker
382*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pcmpgtd(<4 x i32> %a0, <4 x i32> %a1) {
383*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpgtd
384*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmpgtd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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},~{flags}"()
386*9880d681SAndroid Build Coastguard Worker  %2 = icmp sgt <4 x i32> %a0, %a1
387*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i1> %2 to <4 x i32>
388*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
389*9880d681SAndroid Build Coastguard Worker}
390*9880d681SAndroid Build Coastguard Worker
391*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pcmpgtq(<2 x i64> %a0, <2 x i64> %a1) {
392*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpgtq
393*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmpgtq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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},~{flags}"()
395*9880d681SAndroid Build Coastguard Worker  %2 = icmp sgt <2 x i64> %a0, %a1
396*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i1> %2 to <2 x i64>
397*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
398*9880d681SAndroid Build Coastguard Worker}
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pcmpgtw(<8 x i16> %a0, <8 x i16> %a1) {
401*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpgtw
402*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmpgtw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <8 x i16> %a0, %a1
405*9880d681SAndroid Build Coastguard Worker  %3 = sext <8 x i1> %2 to <8 x i16>
406*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %3
407*9880d681SAndroid Build Coastguard Worker}
408*9880d681SAndroid Build Coastguard Worker
409*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_pcmpistri(<16 x i8> %a0, <16 x i8> %a1) {
410*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpistri
411*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmpistri $7, {{-?[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 = call i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %a0, <16 x i8> %a1, i8 7)
414*9880d681SAndroid Build Coastguard Worker  ret i32 %2
415*9880d681SAndroid Build Coastguard Worker}
416*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistri128(<16 x i8>, <16 x i8>, i8) nounwind readnone
417*9880d681SAndroid Build Coastguard Worker
418*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pcmpistrm(<16 x i8> %a0, <16 x i8> %a1) {
419*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pcmpistrm
420*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmpistrm $7, {{-?[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 = call <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8> %a0, <16 x i8> %a1, i8 7)
423*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
424*9880d681SAndroid Build Coastguard Worker}
425*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8>, <16 x i8>, i8) nounwind readnone
426*9880d681SAndroid Build Coastguard Worker
427*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_pextrb
428*9880d681SAndroid Build Coastguard Worker
429*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_pextrd(<4 x i32> %a0) {
430*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pextrd
431*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pextrd $1, {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 4-byte Folded Spill
432*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movl    {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 4-byte Reload
433*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <4 x i32> %a0, i32 1
434*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}"()
435*9880d681SAndroid Build Coastguard Worker  ret i32 %1
436*9880d681SAndroid Build Coastguard Worker}
437*9880d681SAndroid Build Coastguard Worker
438*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_pextrq(<2 x i64> %a0) {
439*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pextrq
440*9880d681SAndroid Build Coastguard Worker  ;CHECK:       pextrq $1, {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 8-byte Folded Spill
441*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movq    {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 8-byte Reload
442*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <2 x i64> %a0, i32 1
443*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}"()
444*9880d681SAndroid Build Coastguard Worker  ret i64 %1
445*9880d681SAndroid Build Coastguard Worker}
446*9880d681SAndroid Build Coastguard Worker
447*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_pextrw
448*9880d681SAndroid Build Coastguard Worker
449*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_phaddd(<4 x i32> %a0, <4 x i32> %a1) {
450*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phaddd
451*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphaddd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
452*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}"()
453*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32> %a0, <4 x i32> %a1)
454*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
455*9880d681SAndroid Build Coastguard Worker}
456*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32>, <4 x i32>) nounwind readnone
457*9880d681SAndroid Build Coastguard Worker
458*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_phaddsw(<8 x i16> %a0, <8 x i16> %a1) {
459*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phaddsw
460*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphaddsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
461*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}"()
462*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.phadd.sw.128(<8 x i16> %a0, <8 x i16> %a1)
463*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
464*9880d681SAndroid Build Coastguard Worker}
465*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phadd.sw.128(<8 x i16>, <8 x i16>) nounwind readnone
466*9880d681SAndroid Build Coastguard Worker
467*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_phaddw(<8 x i16> %a0, <8 x i16> %a1) {
468*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phaddw
469*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphaddw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
470*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}"()
471*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.phadd.w.128(<8 x i16> %a0, <8 x i16> %a1)
472*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
473*9880d681SAndroid Build Coastguard Worker}
474*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phadd.w.128(<8 x i16>, <8 x i16>) nounwind readnone
475*9880d681SAndroid Build Coastguard Worker
476*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_phminposuw(<8 x i16> %a0) {
477*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phminposuw
478*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphminposuw {{-?[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,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
480*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16> %a0)
481*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
482*9880d681SAndroid Build Coastguard Worker}
483*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16>) nounwind readnone
484*9880d681SAndroid Build Coastguard Worker
485*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_phsubd(<4 x i32> %a0, <4 x i32> %a1) {
486*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phsubd
487*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphsubd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <4 x i32> @llvm.x86.ssse3.phsub.d.128(<4 x i32> %a0, <4 x i32> %a1)
490*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
491*9880d681SAndroid Build Coastguard Worker}
492*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.phsub.d.128(<4 x i32>, <4 x i32>) nounwind readnone
493*9880d681SAndroid Build Coastguard Worker
494*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_phsubsw(<8 x i16> %a0, <8 x i16> %a1) {
495*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phsubsw
496*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphsubsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.phsub.sw.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.phsub.sw.128(<8 x i16>, <8 x i16>) nounwind readnone
502*9880d681SAndroid Build Coastguard Worker
503*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_phsubw(<8 x i16> %a0, <8 x i16> %a1) {
504*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_phsubw
505*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphsubw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
506*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}"()
507*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.phsub.w.128(<8 x i16> %a0, <8 x i16> %a1)
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.ssse3.phsub.w.128(<8 x i16>, <8 x i16>) nounwind readnone
511*9880d681SAndroid Build Coastguard Worker
512*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pinsrb(<16 x i8> %a0, i8 %a1) {
513*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pinsrb
514*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpinsrb $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
515*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}"()
516*9880d681SAndroid Build Coastguard Worker  %2 = insertelement <16 x i8> %a0, i8 %a1, i32 1
517*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
518*9880d681SAndroid Build Coastguard Worker}
519*9880d681SAndroid Build Coastguard Worker
520*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pinsrd(<4 x i32> %a0, i32 %a1) {
521*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pinsrd
522*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpinsrd $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
523*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}"()
524*9880d681SAndroid Build Coastguard Worker  %2 = insertelement <4 x i32> %a0, i32 %a1, i32 1
525*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
526*9880d681SAndroid Build Coastguard Worker}
527*9880d681SAndroid Build Coastguard Worker
528*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pinsrq(<2 x i64> %a0, i64 %a1) {
529*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pinsrq
530*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpinsrq $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
531*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}"()
532*9880d681SAndroid Build Coastguard Worker  %2 = insertelement <2 x i64> %a0, i64 %a1, i32 1
533*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
534*9880d681SAndroid Build Coastguard Worker}
535*9880d681SAndroid Build Coastguard Worker
536*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pinsrw(<8 x i16> %a0, i16 %a1) {
537*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pinsrw
538*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpinsrw $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
539*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}"()
540*9880d681SAndroid Build Coastguard Worker  %2 = insertelement <8 x i16> %a0, i16 %a1, i32 1
541*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
542*9880d681SAndroid Build Coastguard Worker}
543*9880d681SAndroid Build Coastguard Worker
544*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmaddubsw(<16 x i8> %a0, <16 x i8> %a1) {
545*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaddubsw
546*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmaddubsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
547*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}"()
548*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.pmadd.ub.sw.128(<16 x i8> %a0, <16 x i8> %a1)
549*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
550*9880d681SAndroid Build Coastguard Worker}
551*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.pmadd.ub.sw.128(<16 x i8>, <16 x i8>) nounwind readnone
552*9880d681SAndroid Build Coastguard Worker
553*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmaddwd(<8 x i16> %a0, <8 x i16> %a1) {
554*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaddwd
555*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmaddwd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
556*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}"()
557*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16> %a0, <8 x i16> %a1)
558*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
559*9880d681SAndroid Build Coastguard Worker}
560*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16>, <8 x i16>) nounwind readnone
561*9880d681SAndroid Build Coastguard Worker
562*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pmaxsb(<16 x i8> %a0, <16 x i8> %a1) {
563*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxsb
564*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmaxsb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
565*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}"()
566*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8> %a0, <16 x i8> %a1)
567*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
568*9880d681SAndroid Build Coastguard Worker}
569*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8>, <16 x i8>) nounwind readnone
570*9880d681SAndroid Build Coastguard Worker
571*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmaxsd(<4 x i32> %a0, <4 x i32> %a1) {
572*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxsd
573*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmaxsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32> %a0, <4 x i32> %a1)
576*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
577*9880d681SAndroid Build Coastguard Worker}
578*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32>, <4 x i32>) nounwind readnone
579*9880d681SAndroid Build Coastguard Worker
580*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmaxsw(<8 x i16> %a0, <8 x i16> %a1) {
581*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxsw
582*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmaxsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <8 x i16> @llvm.x86.sse2.pmaxs.w(<8 x i16> %a0, <8 x i16> %a1)
585*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
586*9880d681SAndroid Build Coastguard Worker}
587*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmaxs.w(<8 x i16>, <8 x i16>) nounwind readnone
588*9880d681SAndroid Build Coastguard Worker
589*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pmaxub(<16 x i8> %a0, <16 x i8> %a1) {
590*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxub
591*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmaxub {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.sse2.pmaxu.b(<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.sse2.pmaxu.b(<16 x i8>, <16 x i8>) nounwind readnone
597*9880d681SAndroid Build Coastguard Worker
598*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmaxud(<4 x i32> %a0, <4 x i32> %a1) {
599*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxud
600*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmaxud {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.pmaxud(<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.pmaxud(<4 x i32>, <4 x i32>) nounwind readnone
606*9880d681SAndroid Build Coastguard Worker
607*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmaxuw(<8 x i16> %a0, <8 x i16> %a1) {
608*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmaxuw
609*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmaxuw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.sse41.pmaxuw(<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.sse41.pmaxuw(<8 x i16>, <8 x i16>) nounwind readnone
615*9880d681SAndroid Build Coastguard Worker
616*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pminsb(<16 x i8> %a0, <16 x i8> %a1) {
617*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminsb
618*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpminsb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.sse41.pminsb(<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.sse41.pminsb(<16 x i8>, <16 x i8>) nounwind readnone
624*9880d681SAndroid Build Coastguard Worker
625*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pminsd(<4 x i32> %a0, <4 x i32> %a1) {
626*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminsd
627*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpminsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.pminsd(<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.pminsd(<4 x i32>, <4 x i32>) nounwind readnone
633*9880d681SAndroid Build Coastguard Worker
634*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pminsw(<8 x i16> %a0, <8 x i16> %a1) {
635*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminsw
636*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpminsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.sse2.pmins.w(<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.sse2.pmins.w(<8 x i16>, <8 x i16>) nounwind readnone
642*9880d681SAndroid Build Coastguard Worker
643*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pminub(<16 x i8> %a0, <16 x i8> %a1) {
644*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminub
645*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpminub {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.sse2.pminu.b(<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.sse2.pminu.b(<16 x i8>, <16 x i8>) nounwind readnone
651*9880d681SAndroid Build Coastguard Worker
652*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pminud(<4 x i32> %a0, <4 x i32> %a1) {
653*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminud
654*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpminud {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.pminud(<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.pminud(<4 x i32>, <4 x i32>) nounwind readnone
660*9880d681SAndroid Build Coastguard Worker
661*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pminuw(<8 x i16> %a0, <8 x i16> %a1) {
662*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pminuw
663*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpminuw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.sse41.pminuw(<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.sse41.pminuw(<8 x i16>, <8 x i16>) nounwind readnone
669*9880d681SAndroid Build Coastguard Worker
670*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmovsxbd(<16 x i8> %a0) {
671*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovsxbd
672*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmovsxbd {{-?[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,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
674*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>
675*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i8> %2 to <4 x i32>
676*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
677*9880d681SAndroid Build Coastguard Worker}
678*9880d681SAndroid Build Coastguard Worker
679*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmovsxbq(<16 x i8> %a0) {
680*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovsxbq
681*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmovsxbq {{-?[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,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
683*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <16 x i8> %a0, <16 x i8> undef, <2 x i32> <i32 0, i32 1>
684*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i8> %2 to <2 x i64>
685*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
686*9880d681SAndroid Build Coastguard Worker}
687*9880d681SAndroid Build Coastguard Worker
688*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmovsxbw(<16 x i8> %a0) {
689*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovsxbw
690*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmovsxbw {{-?[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,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
692*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>
693*9880d681SAndroid Build Coastguard Worker  %3 = sext <8 x i8> %2 to <8 x i16>
694*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %3
695*9880d681SAndroid Build Coastguard Worker}
696*9880d681SAndroid Build Coastguard Worker
697*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmovsxdq(<4 x i32> %a0) {
698*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovsxdq
699*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmovsxdq {{-?[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 <4 x i32> %a0, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
702*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i32> %2 to <2 x i64>
703*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
704*9880d681SAndroid Build Coastguard Worker}
705*9880d681SAndroid Build Coastguard Worker
706*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmovsxwd(<8 x i16> %a0) {
707*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovsxwd
708*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmovsxwd {{-?[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 <8 x i16> %a0, <8 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
711*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i16> %2 to <4 x i32>
712*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
713*9880d681SAndroid Build Coastguard Worker}
714*9880d681SAndroid Build Coastguard Worker
715*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmovsxwq(<8 x i16> %a0) {
716*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovsxwq
717*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmovsxwq {{-?[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 <8 x i16> %a0, <8 x i16> undef, <2 x i32> <i32 0, i32 1>
720*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i16> %2 to <2 x i64>
721*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
722*9880d681SAndroid Build Coastguard Worker}
723*9880d681SAndroid Build Coastguard Worker
724*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmovzxbd(<16 x i8> %a0) {
725*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovzxbd
726*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmovzxbd {{-?[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 <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>
729*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <16 x i8> %2 to <4 x i32>
730*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
731*9880d681SAndroid Build Coastguard Worker}
732*9880d681SAndroid Build Coastguard Worker
733*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmovzxbq(<16 x i8> %a0) {
734*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovzxbq
735*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmovzxbq {{-?[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 <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>
738*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <16 x i8> %2 to <2 x i64>
739*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
740*9880d681SAndroid Build Coastguard Worker}
741*9880d681SAndroid Build Coastguard Worker
742*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmovzxbw(<16 x i8> %a0) {
743*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovzxbw
744*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmovzxbw {{-?[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 <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>
747*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <16 x i8> %2 to <8 x i16>
748*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %3
749*9880d681SAndroid Build Coastguard Worker}
750*9880d681SAndroid Build Coastguard Worker
751*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmovzxdq(<4 x i32> %a0) {
752*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovzxdq
753*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmovzxdq {{-?[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 <4 x i32> %a0, <4 x i32> zeroinitializer, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
756*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i32> %2 to <2 x i64>
757*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
758*9880d681SAndroid Build Coastguard Worker}
759*9880d681SAndroid Build Coastguard Worker
760*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmovzxwd(<8 x i16> %a0) {
761*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovzxwd
762*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmovzxwd {{-?[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 <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>
765*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <8 x i16> %2 to <4 x i32>
766*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
767*9880d681SAndroid Build Coastguard Worker}
768*9880d681SAndroid Build Coastguard Worker
769*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmovzxwq(<8 x i16> %a0) {
770*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmovzxwq
771*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmovzxwq {{-?[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 <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>
774*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <8 x i16> %2 to <2 x i64>
775*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
776*9880d681SAndroid Build Coastguard Worker}
777*9880d681SAndroid Build Coastguard Worker
778*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmuldq(<4 x i32> %a0, <4 x i32> %a1) {
779*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmuldq
780*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmuldq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
781*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}"()
782*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32> %a0, <4 x i32> %a1)
783*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
784*9880d681SAndroid Build Coastguard Worker}
785*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32>, <4 x i32>) nounwind readnone
786*9880d681SAndroid Build Coastguard Worker
787*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmulhrsw(<8 x i16> %a0, <8 x i16> %a1) {
788*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmulhrsw
789*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmulhrsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
790*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}"()
791*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.pmul.hr.sw.128(<8 x i16> %a0, <8 x i16> %a1)
792*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
793*9880d681SAndroid Build Coastguard Worker}
794*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.pmul.hr.sw.128(<8 x i16>, <8 x i16>) nounwind readnone
795*9880d681SAndroid Build Coastguard Worker
796*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmulhuw(<8 x i16> %a0, <8 x i16> %a1) {
797*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmulhuw
798*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmulhuw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
799*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}"()
800*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16> %a0, <8 x i16> %a1)
801*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
802*9880d681SAndroid Build Coastguard Worker}
803*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16>, <8 x i16>) nounwind readnone
804*9880d681SAndroid Build Coastguard Worker
805*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmulhw(<8 x i16> %a0, <8 x i16> %a1) {
806*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmulhw
807*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmulhw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16> %a0, <8 x i16> %a1)
810*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
811*9880d681SAndroid Build Coastguard Worker}
812*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16>, <8 x i16>) nounwind readnone
813*9880d681SAndroid Build Coastguard Worker
814*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pmulld(<4 x i32> %a0, <4 x i32> %a1) {
815*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmulld
816*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmulld {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 = mul <4 x i32> %a0, %a1
819*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
820*9880d681SAndroid Build Coastguard Worker}
821*9880d681SAndroid Build Coastguard Worker
822*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pmullw(<8 x i16> %a0, <8 x i16> %a1) {
823*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmullw
824*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmullw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
825*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}"()
826*9880d681SAndroid Build Coastguard Worker  %2 = mul <8 x i16> %a0, %a1
827*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
828*9880d681SAndroid Build Coastguard Worker}
829*9880d681SAndroid Build Coastguard Worker
830*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_pmuludq(<4 x i32> %a0, <4 x i32> %a1) {
831*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pmuludq
832*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmuludq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
833*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}"()
834*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32> %a0, <4 x i32> %a1)
835*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
836*9880d681SAndroid Build Coastguard Worker}
837*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32>, <4 x i32>) nounwind readnone
838*9880d681SAndroid Build Coastguard Worker
839*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_por(<16 x i8> %a0, <16 x i8> %a1) {
840*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_por
841*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpor {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
842*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}"()
843*9880d681SAndroid Build Coastguard Worker  %2 = or <16 x i8> %a0, %a1
844*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
845*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>
846*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %3
847*9880d681SAndroid Build Coastguard Worker}
848*9880d681SAndroid Build Coastguard Worker
849*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_psadbw(<16 x i8> %a0, <16 x i8> %a1) {
850*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psadbw
851*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsadbw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 = call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %a0, <16 x i8> %a1)
854*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
855*9880d681SAndroid Build Coastguard Worker}
856*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8>, <16 x i8>) nounwind readnone
857*9880d681SAndroid Build Coastguard Worker
858*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pshufb(<16 x i8> %a0, <16 x i8> %a1) {
859*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pshufb
860*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshufb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
861*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}"()
862*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8> %a0, <16 x i8> %a1)
863*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
864*9880d681SAndroid Build Coastguard Worker}
865*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8>, <16 x i8>) nounwind readnone
866*9880d681SAndroid Build Coastguard Worker
867*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pshufd(<4 x i32> %a0) {
868*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pshufd
869*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshufd $27, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
870*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}"()
871*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>
872*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
873*9880d681SAndroid Build Coastguard Worker}
874*9880d681SAndroid Build Coastguard Worker
875*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pshufhw(<8 x i16> %a0) {
876*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pshufhw
877*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshufhw $11, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
878*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}"()
879*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>
880*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
881*9880d681SAndroid Build Coastguard Worker}
882*9880d681SAndroid Build Coastguard Worker
883*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_pshuflw(<8 x i16> %a0) {
884*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pshuflw
885*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshuflw $27, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
886*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}"()
887*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>
888*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
889*9880d681SAndroid Build Coastguard Worker}
890*9880d681SAndroid Build Coastguard Worker
891*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_psignb(<16 x i8> %a0, <16 x i8> %a1) {
892*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psignb
893*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsignb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
894*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}"()
895*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.ssse3.psign.b.128(<16 x i8> %a0, <16 x i8> %a1)
896*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
897*9880d681SAndroid Build Coastguard Worker}
898*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.ssse3.psign.b.128(<16 x i8>, <16 x i8>) nounwind readnone
899*9880d681SAndroid Build Coastguard Worker
900*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_psignd(<4 x i32> %a0, <4 x i32> %a1) {
901*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psignd
902*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsignd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
903*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}"()
904*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.ssse3.psign.d.128(<4 x i32> %a0, <4 x i32> %a1)
905*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
906*9880d681SAndroid Build Coastguard Worker}
907*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.psign.d.128(<4 x i32>, <4 x i32>) nounwind readnone
908*9880d681SAndroid Build Coastguard Worker
909*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psignw(<8 x i16> %a0, <8 x i16> %a1) {
910*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psignw
911*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsignw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
912*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}"()
913*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.ssse3.psign.w.128(<8 x i16> %a0, <8 x i16> %a1)
914*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
915*9880d681SAndroid Build Coastguard Worker}
916*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.psign.w.128(<8 x i16>, <8 x i16>) nounwind readnone
917*9880d681SAndroid Build Coastguard Worker
918*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_pslld(<4 x i32> %a0, <4 x i32> %a1) {
919*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pslld
920*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpslld {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32> %a0, <4 x i32> %a1)
923*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
924*9880d681SAndroid Build Coastguard Worker}
925*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32>, <4 x i32>) nounwind readnone
926*9880d681SAndroid Build Coastguard Worker
927*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_psllq(<2 x i64> %a0, <2 x i64> %a1) {
928*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psllq
929*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsllq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64> %a0, <2 x i64> %a1)
932*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
933*9880d681SAndroid Build Coastguard Worker}
934*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64>, <2 x i64>) nounwind readnone
935*9880d681SAndroid Build Coastguard Worker
936*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psllw(<8 x i16> %a0, <8 x i16> %a1) {
937*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psllw
938*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsllw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.sse2.psll.w(<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.sse2.psll.w(<8 x i16>, <8 x i16>) nounwind readnone
944*9880d681SAndroid Build Coastguard Worker
945*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_psrad(<4 x i32> %a0, <4 x i32> %a1) {
946*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psrad
947*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsrad {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.psra.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.psra.d(<4 x i32>, <4 x i32>) nounwind readnone
953*9880d681SAndroid Build Coastguard Worker
954*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psraw(<8 x i16> %a0, <8 x i16> %a1) {
955*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psraw
956*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsraw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16> %a0, <8 x i16> %a1)
959*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
960*9880d681SAndroid Build Coastguard Worker}
961*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16>, <8 x i16>) nounwind readnone
962*9880d681SAndroid Build Coastguard Worker
963*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_psrld(<4 x i32> %a0, <4 x i32> %a1) {
964*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psrld
965*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsrld {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32> %a0, <4 x i32> %a1)
968*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
969*9880d681SAndroid Build Coastguard Worker}
970*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32>, <4 x i32>) nounwind readnone
971*9880d681SAndroid Build Coastguard Worker
972*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_psrlq(<2 x i64> %a0, <2 x i64> %a1) {
973*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psrlq
974*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsrlq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64> %a0, <2 x i64> %a1)
977*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
978*9880d681SAndroid Build Coastguard Worker}
979*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64>, <2 x i64>) nounwind readnone
980*9880d681SAndroid Build Coastguard Worker
981*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psrlw(<8 x i16> %a0, <8 x i16> %a1) {
982*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psrlw
983*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsrlw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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.psrl.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.psrl.w(<8 x i16>, <8 x i16>) nounwind readnone
989*9880d681SAndroid Build Coastguard Worker
990*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_psubb(<16 x i8> %a0, <16 x i8> %a1) {
991*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubb
992*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsubb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 = sub <16 x i8> %a0, %a1
995*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
996*9880d681SAndroid Build Coastguard Worker}
997*9880d681SAndroid Build Coastguard Worker
998*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_psubd(<4 x i32> %a0, <4 x i32> %a1) {
999*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubd
1000*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsubd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1001*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}"()
1002*9880d681SAndroid Build Coastguard Worker  %2 = sub <4 x i32> %a0, %a1
1003*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
1004*9880d681SAndroid Build Coastguard Worker}
1005*9880d681SAndroid Build Coastguard Worker
1006*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_psubq(<2 x i64> %a0, <2 x i64> %a1) {
1007*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubq
1008*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsubq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1009*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}"()
1010*9880d681SAndroid Build Coastguard Worker  %2 = sub <2 x i64> %a0, %a1
1011*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
1012*9880d681SAndroid Build Coastguard Worker}
1013*9880d681SAndroid Build Coastguard Worker
1014*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_psubsb(<16 x i8> %a0, <16 x i8> %a1) {
1015*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubsb
1016*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsubsb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1017*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}"()
1018*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8> %a0, <16 x i8> %a1)
1019*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
1020*9880d681SAndroid Build Coastguard Worker}
1021*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8>, <16 x i8>) nounwind readnone
1022*9880d681SAndroid Build Coastguard Worker
1023*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psubsw(<8 x i16> %a0, <8 x i16> %a1) {
1024*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubsw
1025*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsubsw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1026*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}"()
1027*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16> %a0, <8 x i16> %a1)
1028*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
1029*9880d681SAndroid Build Coastguard Worker}
1030*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16>, <8 x i16>) nounwind readnone
1031*9880d681SAndroid Build Coastguard Worker
1032*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_psubusb(<16 x i8> %a0, <16 x i8> %a1) {
1033*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubusb
1034*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsubusb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1035*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}"()
1036*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8> %a0, <16 x i8> %a1)
1037*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
1038*9880d681SAndroid Build Coastguard Worker}
1039*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8>, <16 x i8>) nounwind readnone
1040*9880d681SAndroid Build Coastguard Worker
1041*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psubusw(<8 x i16> %a0, <8 x i16> %a1) {
1042*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubusw
1043*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsubusw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16> %a0, <8 x i16> %a1)
1046*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
1047*9880d681SAndroid Build Coastguard Worker}
1048*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16>, <8 x i16>) nounwind readnone
1049*9880d681SAndroid Build Coastguard Worker
1050*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_psubw(<8 x i16> %a0, <8 x i16> %a1) {
1051*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_psubw
1052*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpsubw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 = sub <8 x i16> %a0, %a1
1055*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
1056*9880d681SAndroid Build Coastguard Worker}
1057*9880d681SAndroid Build Coastguard Worker
1058*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_ptest(<2 x i64> %a0, <2 x i64> %a1) {
1059*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_ptest
1060*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vptest {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1061*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}"()
1062*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse41.ptestc(<2 x i64> %a0, <2 x i64> %a1)
1063*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1064*9880d681SAndroid Build Coastguard Worker}
1065*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse41.ptestc(<2 x i64>, <2 x i64>) nounwind readnone
1066*9880d681SAndroid Build Coastguard Worker
1067*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_ptest_ymm(<4 x i64> %a0, <4 x i64> %a1) {
1068*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_ptest_ymm
1069*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vptest {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1070*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}"()
1071*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.avx.ptestc.256(<4 x i64> %a0, <4 x i64> %a1)
1072*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1073*9880d681SAndroid Build Coastguard Worker}
1074*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.ptestc.256(<4 x i64>, <4 x i64>) nounwind readnone
1075*9880d681SAndroid Build Coastguard Worker
1076*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_punpckhbw(<16 x i8> %a0, <16 x i8> %a1) {
1077*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckhbw
1078*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpunpckhbw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1079*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}"()
1080*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>
1081*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
1082*9880d681SAndroid Build Coastguard Worker}
1083*9880d681SAndroid Build Coastguard Worker
1084*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_punpckhdq(<4 x i32> %a0, <4 x i32> %a1) {
1085*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckhdq
1086*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpunpckhdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1087*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}"()
1088*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>
1089*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
1090*9880d681SAndroid Build Coastguard Worker  %3 = add <4 x i32> %2, <i32 1, i32 1, i32 1, i32 1>
1091*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
1092*9880d681SAndroid Build Coastguard Worker}
1093*9880d681SAndroid Build Coastguard Worker
1094*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_punpckhqdq(<2 x i64> %a0, <2 x i64> %a1) {
1095*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckhqdq
1096*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpunpckhqdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <2 x i64> %a0, <2 x i64> %a1, <2 x i32> <i32 1, i32 3>
1099*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
1100*9880d681SAndroid Build Coastguard Worker  %3 = add <2 x i64> %2, <i64 1, i64 1>
1101*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
1102*9880d681SAndroid Build Coastguard Worker}
1103*9880d681SAndroid Build Coastguard Worker
1104*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_punpckhwd(<8 x i16> %a0, <8 x i16> %a1) {
1105*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckhwd
1106*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpunpckhwd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1107*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}"()
1108*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>
1109*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
1110*9880d681SAndroid Build Coastguard Worker}
1111*9880d681SAndroid Build Coastguard Worker
1112*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_punpcklbw(<16 x i8> %a0, <16 x i8> %a1) {
1113*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpcklbw
1114*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpunpcklbw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <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>
1117*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
1118*9880d681SAndroid Build Coastguard Worker}
1119*9880d681SAndroid Build Coastguard Worker
1120*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_punpckldq(<4 x i32> %a0, <4 x i32> %a1) {
1121*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpckldq
1122*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpunpckldq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1123*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}"()
1124*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>
1125*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
1126*9880d681SAndroid Build Coastguard Worker  %3 = add <4 x i32> %2, <i32 1, i32 1, i32 1, i32 1>
1127*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %3
1128*9880d681SAndroid Build Coastguard Worker}
1129*9880d681SAndroid Build Coastguard Worker
1130*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_punpcklqdq(<2 x i64> %a0, <2 x i64> %a1) {
1131*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpcklqdq
1132*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpunpcklqdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 <2 x i64> %a0, <2 x i64> %a1, <2 x i32> <i32 0, i32 2>
1135*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
1136*9880d681SAndroid Build Coastguard Worker  %3 = add <2 x i64> %2, <i64 1, i64 1>
1137*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %3
1138*9880d681SAndroid Build Coastguard Worker}
1139*9880d681SAndroid Build Coastguard Worker
1140*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_punpcklwd(<8 x i16> %a0, <8 x i16> %a1) {
1141*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_punpcklwd
1142*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpunpcklwd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1143*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}"()
1144*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>
1145*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
1146*9880d681SAndroid Build Coastguard Worker}
1147*9880d681SAndroid Build Coastguard Worker
1148*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_pxor(<16 x i8> %a0, <16 x i8> %a1) {
1149*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_pxor
1150*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpxor {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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 = xor <16 x i8> %a0, %a1
1153*9880d681SAndroid Build Coastguard Worker  ; add forces execution domain
1154*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>
1155*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %3
1156*9880d681SAndroid Build Coastguard Worker}
1157