xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/stack-folding-xop.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O3 -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx,+xop < %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 double> @stack_fold_vfrczpd(<2 x double> %a0) {
12*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vfrczpd
13*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vfrczpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
14*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
15*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double> %a0)
16*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double>) nounwind readnone
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_vfrczpd_ymm(<4 x double> %a0) {
21*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vfrczpd_ymm
22*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vfrczpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
23*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}"()
24*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double> %a0)
25*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
26*9880d681SAndroid Build Coastguard Worker}
27*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double>) nounwind readnone
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_vfrczps(<4 x float> %a0) {
30*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vfrczps
31*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vfrczps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
32*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
33*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float> %a0)
34*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
35*9880d681SAndroid Build Coastguard Worker}
36*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float>) nounwind readnone
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_vfrczps_ymm(<8 x float> %a0) {
39*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vfrczps_ymm
40*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vfrczps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
41*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}"()
42*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float> %a0)
43*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
44*9880d681SAndroid Build Coastguard Worker}
45*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float>) nounwind readnone
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_vfrczsd(<2 x double> %a0) {
48*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vfrczsd
49*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vfrczsd {{-?[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 double> @llvm.x86.xop.vfrcz.sd(<2 x double> %a0)
52*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
53*9880d681SAndroid Build Coastguard Worker}
54*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double>) nounwind readnone
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_vfrczss(<4 x float> %a0) {
57*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vfrczss
58*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vfrczss {{-?[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 <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float> %a0)
61*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
62*9880d681SAndroid Build Coastguard Worker}
63*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float>) nounwind readnone
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vpcmov_rm(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) {
66*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpcmov_rm
67*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmov {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
68*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}"()
69*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2)
70*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
71*9880d681SAndroid Build Coastguard Worker}
72*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vpcmov_mr(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) {
73*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpcmov_mr
74*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmov {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
75*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}"()
76*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64> %a0, <2 x i64> %a2, <2 x i64> %a1)
77*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
78*9880d681SAndroid Build Coastguard Worker}
79*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64>, <2 x i64>, <2 x i64>) nounwind readnone
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @stack_fold_vpcmov_rm_ymm(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) {
82*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpcmov_rm_ymm
83*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmov {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
84*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}"()
85*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2)
86*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %2
87*9880d681SAndroid Build Coastguard Worker}
88*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @stack_fold_vpcmov_mr_ymm(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) {
89*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpcmov_mr_ymm
90*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcmov {{%ymm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
91*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}"()
92*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a2, <4 x i64> %a1)
93*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %2
94*9880d681SAndroid Build Coastguard Worker}
95*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64>, <4 x i64>, <4 x i64>) nounwind readnone
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_vpcomb(<16 x i8> %a0, <16 x i8> %a1) {
98*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpcomb
99*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcomltb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
100*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}"()
101*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %a0, <16 x i8> %a1, i8 0)
102*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
103*9880d681SAndroid Build Coastguard Worker}
104*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8>, <16 x i8>, i8) nounwind readnone
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vpcomd(<4 x i32> %a0, <4 x i32> %a1) {
107*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpcomd
108*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcomltd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
109*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}"()
110*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %a0, <4 x i32> %a1, i8 0)
111*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
112*9880d681SAndroid Build Coastguard Worker}
113*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32>, <4 x i32>, i8) nounwind readnone
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vpcomq(<2 x i64> %a0, <2 x i64> %a1) {
116*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpcomq
117*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcomltq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
118*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}"()
119*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %a0, <2 x i64> %a1, i8 0)
120*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
121*9880d681SAndroid Build Coastguard Worker}
122*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64>, <2 x i64>, i8) nounwind readnone
123*9880d681SAndroid Build Coastguard Worker
124*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_vpcomub(<16 x i8> %a0, <16 x i8> %a1) {
125*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpcomub
126*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcomltub {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
127*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}"()
128*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %a0, <16 x i8> %a1, i8 0)
129*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
130*9880d681SAndroid Build Coastguard Worker}
131*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8>, <16 x i8>, i8) nounwind readnone
132*9880d681SAndroid Build Coastguard Worker
133*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vpcomud(<4 x i32> %a0, <4 x i32> %a1) {
134*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpcomud
135*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcomltud {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
136*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}"()
137*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %a0, <4 x i32> %a1, i8 0)
138*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
139*9880d681SAndroid Build Coastguard Worker}
140*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32>, <4 x i32>, i8) nounwind readnone
141*9880d681SAndroid Build Coastguard Worker
142*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vpcomuq(<2 x i64> %a0, <2 x i64> %a1) {
143*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpcomuq
144*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcomltuq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
145*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}"()
146*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %a0, <2 x i64> %a1, i8 0)
147*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
148*9880d681SAndroid Build Coastguard Worker}
149*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64>, <2 x i64>, i8) nounwind readnone
150*9880d681SAndroid Build Coastguard Worker
151*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vpcomuw(<8 x i16> %a0, <8 x i16> %a1) {
152*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpcomuw
153*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcomltuw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
154*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}"()
155*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %a0, <8 x i16> %a1, i8 0)
156*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
157*9880d681SAndroid Build Coastguard Worker}
158*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16>, <8 x i16>, i8) nounwind readnone
159*9880d681SAndroid Build Coastguard Worker
160*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vpcomw(<8 x i16> %a0, <8 x i16> %a1) {
161*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpcomw
162*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpcomltw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
163*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}"()
164*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %a0, <8 x i16> %a1, i8 0)
165*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
166*9880d681SAndroid Build Coastguard Worker}
167*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16>, <8 x i16>, i8) nounwind readnone
168*9880d681SAndroid Build Coastguard Worker
169*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_vpermil2pd_rm(<2 x double> %a0, <2 x double> %a1, <2 x i64> %a2) {
170*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpermil2pd_rm
171*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpermil2pd $0, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
172*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}"()
173*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %a2, i8 0)
174*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
175*9880d681SAndroid Build Coastguard Worker}
176*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_vpermil2pd_mr(<2 x double> %a0, <2 x i64> %a1, <2 x double> %a2) {
177*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpermil2pd_mr
178*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpermil2pd $0, {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
179*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}"()
180*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a2, <2 x i64> %a1, i8 0)
181*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
182*9880d681SAndroid Build Coastguard Worker}
183*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double>, <2 x double>, <2 x i64>, i8) nounwind readnone
184*9880d681SAndroid Build Coastguard Worker
185*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_vpermil2pd_rm_ymm(<4 x double> %a0, <4 x double> %a1, <4 x i64> %a2) {
186*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpermil2pd_rm
187*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpermil2pd $0, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
188*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}"()
189*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a1, <4 x i64> %a2, i8 0)
190*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
191*9880d681SAndroid Build Coastguard Worker}
192*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_vpermil2pd_mr_ymm(<4 x double> %a0, <4 x i64> %a1, <4 x double> %a2) {
193*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpermil2pd_mr
194*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpermil2pd $0, {{%ymm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
195*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}"()
196*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a2, <4 x i64> %a1, i8 0)
197*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
198*9880d681SAndroid Build Coastguard Worker}
199*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double>, <4 x double>, <4 x i64>, i8) nounwind readnone
200*9880d681SAndroid Build Coastguard Worker
201*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_vpermil2ps_rm(<4 x float> %a0, <4 x float> %a1, <4 x i32> %a2) {
202*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpermil2ps_rm
203*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpermil2ps $0, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%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,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
205*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float> %a0, <4 x float> %a1, <4 x i32> %a2, i8 0)
206*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
207*9880d681SAndroid Build Coastguard Worker}
208*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_vpermil2ps_mr(<4 x float> %a0, <4 x i32> %a1, <4 x float> %a2) {
209*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpermil2ps_mr
210*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpermil2ps $0, {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
211*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}"()
212*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float> %a0, <4 x float> %a2, <4 x i32> %a1, i8 0)
213*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
214*9880d681SAndroid Build Coastguard Worker}
215*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float>, <4 x float>, <4 x i32>, i8) nounwind readnone
216*9880d681SAndroid Build Coastguard Worker
217*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_vpermil2ps_rm_ymm(<8 x float> %a0, <8 x float> %a1, <8 x i32> %a2) {
218*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpermil2ps_rm
219*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpermil2ps $0, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
220*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}"()
221*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float> %a0, <8 x float> %a1, <8 x i32> %a2, i8 0)
222*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
223*9880d681SAndroid Build Coastguard Worker}
224*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_vpermil2ps_mr_ymm(<8 x float> %a0, <8 x i32> %a1, <8 x float> %a2) {
225*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpermil2ps_mr
226*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpermil2ps $0, {{%ymm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
227*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}"()
228*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float> %a0, <8 x float> %a2, <8 x i32> %a1, i8 0)
229*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
230*9880d681SAndroid Build Coastguard Worker}
231*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float>, <8 x float>, <8 x i32>, i8) nounwind readnone
232*9880d681SAndroid Build Coastguard Worker
233*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vphaddbd(<16 x i8> %a0) {
234*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphaddbd
235*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphaddbd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
236*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}"()
237*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vphaddbd(<16 x i8> %a0)
238*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
239*9880d681SAndroid Build Coastguard Worker}
240*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphaddbd(<16 x i8>) nounwind readnone
241*9880d681SAndroid Build Coastguard Worker
242*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vphaddbq(<16 x i8> %a0) {
243*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphaddbq
244*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphaddbq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
245*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}"()
246*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vphaddbq(<16 x i8> %a0)
247*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
248*9880d681SAndroid Build Coastguard Worker}
249*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphaddbq(<16 x i8>) nounwind readnone
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vphaddbw(<16 x i8> %a0) {
252*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphaddbw
253*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphaddbw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
254*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}"()
255*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vphaddbw(<16 x i8> %a0)
256*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
257*9880d681SAndroid Build Coastguard Worker}
258*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vphaddbw(<16 x i8>) nounwind readnone
259*9880d681SAndroid Build Coastguard Worker
260*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vphadddq(<4 x i32> %a0) {
261*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphadddq
262*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphadddq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
263*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}"()
264*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vphadddq(<4 x i32> %a0)
265*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
266*9880d681SAndroid Build Coastguard Worker}
267*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphadddq(<4 x i32>) nounwind readnone
268*9880d681SAndroid Build Coastguard Worker
269*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vphaddubd(<16 x i8> %a0) {
270*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphaddubd
271*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphaddubd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
272*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}"()
273*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vphaddubd(<16 x i8> %a0)
274*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
275*9880d681SAndroid Build Coastguard Worker}
276*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphaddubd(<16 x i8>) nounwind readnone
277*9880d681SAndroid Build Coastguard Worker
278*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vphaddubq(<16 x i8> %a0) {
279*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphaddubq
280*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphaddubq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
281*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}"()
282*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vphaddubq(<16 x i8> %a0)
283*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
284*9880d681SAndroid Build Coastguard Worker}
285*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphaddubq(<16 x i8>) nounwind readnone
286*9880d681SAndroid Build Coastguard Worker
287*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vphaddubw(<16 x i8> %a0) {
288*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphaddubw
289*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphaddubw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
290*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}"()
291*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vphaddubw(<16 x i8> %a0)
292*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
293*9880d681SAndroid Build Coastguard Worker}
294*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vphaddubw(<16 x i8>) nounwind readnone
295*9880d681SAndroid Build Coastguard Worker
296*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vphaddudq(<4 x i32> %a0) {
297*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphaddudq
298*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphaddudq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
299*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}"()
300*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vphaddudq(<4 x i32> %a0)
301*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
302*9880d681SAndroid Build Coastguard Worker}
303*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphaddudq(<4 x i32>) nounwind readnone
304*9880d681SAndroid Build Coastguard Worker
305*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vphadduwd(<8 x i16> %a0) {
306*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphadduwd
307*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphadduwd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
308*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}"()
309*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vphadduwd(<8 x i16> %a0)
310*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
311*9880d681SAndroid Build Coastguard Worker}
312*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphadduwd(<8 x i16>) nounwind readnone
313*9880d681SAndroid Build Coastguard Worker
314*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vphadduwq(<8 x i16> %a0) {
315*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphadduwq
316*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphadduwq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
317*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}"()
318*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vphadduwq(<8 x i16> %a0)
319*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
320*9880d681SAndroid Build Coastguard Worker}
321*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphadduwq(<8 x i16>) nounwind readnone
322*9880d681SAndroid Build Coastguard Worker
323*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vphaddwd(<8 x i16> %a0) {
324*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphaddwd
325*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphaddwd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
326*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}"()
327*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16> %a0)
328*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
329*9880d681SAndroid Build Coastguard Worker}
330*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16>) nounwind readnone
331*9880d681SAndroid Build Coastguard Worker
332*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vphaddwq(<8 x i16> %a0) {
333*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphaddwq
334*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphaddwq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
335*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}"()
336*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16> %a0)
337*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
338*9880d681SAndroid Build Coastguard Worker}
339*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16>) nounwind readnone
340*9880d681SAndroid Build Coastguard Worker
341*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vphsubbw(<16 x i8> %a0) {
342*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphsubbw
343*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphsubbw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
344*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}"()
345*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vphsubbw(<16 x i8> %a0)
346*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
347*9880d681SAndroid Build Coastguard Worker}
348*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vphsubbw(<16 x i8>) nounwind readnone
349*9880d681SAndroid Build Coastguard Worker
350*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vphsubdq(<4 x i32> %a0) {
351*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphsubdq
352*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphsubdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
353*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}"()
354*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32> %a0)
355*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
356*9880d681SAndroid Build Coastguard Worker}
357*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32>) nounwind readnone
358*9880d681SAndroid Build Coastguard Worker
359*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vphsubwd(<8 x i16> %a0) {
360*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vphsubwd
361*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vphsubwd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
362*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}"()
363*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16> %a0)
364*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
365*9880d681SAndroid Build Coastguard Worker}
366*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16>) nounwind readnone
367*9880d681SAndroid Build Coastguard Worker
368*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vpmacsdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) {
369*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpmacsdd
370*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmacsdd {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
371*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}"()
372*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vpmacsdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2)
373*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
374*9880d681SAndroid Build Coastguard Worker}
375*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmacsdd(<4 x i32>, <4 x i32>, <4 x i32>) nounwind readnone
376*9880d681SAndroid Build Coastguard Worker
377*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vpmacsdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) {
378*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpmacsdqh
379*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmacsdqh {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
380*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}"()
381*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vpmacsdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2)
382*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
383*9880d681SAndroid Build Coastguard Worker}
384*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpmacsdqh(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone
385*9880d681SAndroid Build Coastguard Worker
386*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vpmacsdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) {
387*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpmacsdql
388*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmacsdql {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
389*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}"()
390*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vpmacsdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2)
391*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
392*9880d681SAndroid Build Coastguard Worker}
393*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpmacsdql(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone
394*9880d681SAndroid Build Coastguard Worker
395*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vpmacssdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) {
396*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpmacssdd
397*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmacssdd {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
398*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}"()
399*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vpmacssdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2)
400*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
401*9880d681SAndroid Build Coastguard Worker}
402*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmacssdd(<4 x i32>, <4 x i32>, <4 x i32>) nounwind readnone
403*9880d681SAndroid Build Coastguard Worker
404*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vpmacssdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) {
405*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpmacssdqh
406*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmacssdqh {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
407*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}"()
408*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vpmacssdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2)
409*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
410*9880d681SAndroid Build Coastguard Worker}
411*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpmacssdqh(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone
412*9880d681SAndroid Build Coastguard Worker
413*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vpmacssdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) {
414*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpmacssdql
415*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmacssdql {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
416*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}"()
417*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vpmacssdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2)
418*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
419*9880d681SAndroid Build Coastguard Worker}
420*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpmacssdql(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone
421*9880d681SAndroid Build Coastguard Worker
422*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vpmacsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) {
423*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpmacsswd
424*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmacsswd {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
425*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}"()
426*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vpmacsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2)
427*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
428*9880d681SAndroid Build Coastguard Worker}
429*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmacsswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone
430*9880d681SAndroid Build Coastguard Worker
431*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vpmacssww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) {
432*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpmacssww
433*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmacssww {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
434*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}"()
435*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vpmacssww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2)
436*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
437*9880d681SAndroid Build Coastguard Worker}
438*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpmacssww(<8 x i16>, <8 x i16>, <8 x i16>) nounwind readnone
439*9880d681SAndroid Build Coastguard Worker
440*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vpmacswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) {
441*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpmacswd
442*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmacswd {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
443*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}"()
444*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vpmacswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2)
445*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
446*9880d681SAndroid Build Coastguard Worker}
447*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmacswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone
448*9880d681SAndroid Build Coastguard Worker
449*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vpmacsww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) {
450*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpmacsww
451*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmacsww {{%xmm[0-9][0-9]*}}, {{-?[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 <8 x i16> @llvm.x86.xop.vpmacsww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2)
454*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
455*9880d681SAndroid Build Coastguard Worker}
456*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpmacsww(<8 x i16>, <8 x i16>, <8 x i16>) nounwind readnone
457*9880d681SAndroid Build Coastguard Worker
458*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vpmadcsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) {
459*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpmadcsswd
460*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmadcsswd {{%xmm[0-9][0-9]*}}, {{-?[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 <4 x i32> @llvm.x86.xop.vpmadcsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2)
463*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
464*9880d681SAndroid Build Coastguard Worker}
465*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmadcsswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone
466*9880d681SAndroid Build Coastguard Worker
467*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vpmadcswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) {
468*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpmadcswd
469*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpmadcswd {{%xmm[0-9][0-9]*}}, {{-?[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 <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2)
472*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
473*9880d681SAndroid Build Coastguard Worker}
474*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone
475*9880d681SAndroid Build Coastguard Worker
476*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_vpperm_rm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) {
477*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpperm_rm
478*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpperm {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
479*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}"()
480*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2)
481*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
482*9880d681SAndroid Build Coastguard Worker}
483*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_vpperm_mr(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) {
484*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpperm_mr
485*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpperm {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
486*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}"()
487*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %a2, <16 x i8> %a1)
488*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
489*9880d681SAndroid Build Coastguard Worker}
490*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpperm(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone
491*9880d681SAndroid Build Coastguard Worker
492*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_vprotb(<16 x i8> %a0) {
493*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vprotb
494*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vprotb $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
495*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}"()
496*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8> %a0, i8 7)
497*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
498*9880d681SAndroid Build Coastguard Worker}
499*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8>, i8) nounwind readnone
500*9880d681SAndroid Build Coastguard Worker
501*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_vprotb_rm(<16 x i8> %a0, <16 x i8> %a1) {
502*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vprotb_rm
503*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vprotb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
504*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}"()
505*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.xop.vprotb(<16 x i8> %a0, <16 x i8> %a1)
506*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
507*9880d681SAndroid Build Coastguard Worker}
508*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_vprotb_mr(<16 x i8> %a0, <16 x i8> %a1) {
509*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vprotb_mr
510*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vprotb {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
511*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}"()
512*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.xop.vprotb(<16 x i8> %a1, <16 x i8> %a0)
513*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
514*9880d681SAndroid Build Coastguard Worker}
515*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vprotb(<16 x i8>, <16 x i8>) nounwind readnone
516*9880d681SAndroid Build Coastguard Worker
517*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vprotd(<4 x i32> %a0) {
518*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vprotd
519*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vprotd $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
520*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}"()
521*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32> %a0, i8 7)
522*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
523*9880d681SAndroid Build Coastguard Worker}
524*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32>, i8) nounwind readnone
525*9880d681SAndroid Build Coastguard Worker
526*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vprotd_rm(<4 x i32> %a0, <4 x i32> %a1) {
527*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vprotd_rm
528*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vprotd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
529*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}"()
530*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vprotd(<4 x i32> %a0, <4 x i32> %a1)
531*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
532*9880d681SAndroid Build Coastguard Worker}
533*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vprotd_mr(<4 x i32> %a0, <4 x i32> %a1) {
534*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vprotd_mr
535*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vprotd {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
536*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}"()
537*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vprotd(<4 x i32> %a1, <4 x i32> %a0)
538*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
539*9880d681SAndroid Build Coastguard Worker}
540*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vprotd(<4 x i32>, <4 x i32>) nounwind readnone
541*9880d681SAndroid Build Coastguard Worker
542*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vprotq(<2 x i64> %a0) {
543*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vprotq
544*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vprotq $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
545*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}"()
546*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64> %a0, i8 7)
547*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
548*9880d681SAndroid Build Coastguard Worker}
549*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64>, i8) nounwind readnone
550*9880d681SAndroid Build Coastguard Worker
551*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vprotq_rm(<2 x i64> %a0, <2 x i64> %a1) {
552*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vprotq_rm
553*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vprotq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
554*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}"()
555*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vprotq(<2 x i64> %a0, <2 x i64> %a1)
556*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
557*9880d681SAndroid Build Coastguard Worker}
558*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vprotq_mr(<2 x i64> %a0, <2 x i64> %a1) {
559*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vprotq_mr
560*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vprotq {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
561*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}"()
562*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vprotq(<2 x i64> %a1, <2 x i64> %a0)
563*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
564*9880d681SAndroid Build Coastguard Worker}
565*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vprotq(<2 x i64>, <2 x i64>) nounwind readnone
566*9880d681SAndroid Build Coastguard Worker
567*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vprotw(<8 x i16> %a0) {
568*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vprotw
569*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vprotw $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
570*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}"()
571*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16> %a0, i8 7)
572*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
573*9880d681SAndroid Build Coastguard Worker}
574*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16>, i8) nounwind readnone
575*9880d681SAndroid Build Coastguard Worker
576*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vprotw_rm(<8 x i16> %a0, <8 x i16> %a1) {
577*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vprotw_rm
578*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vprotw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
579*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}"()
580*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vprotw(<8 x i16> %a0, <8 x i16> %a1)
581*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
582*9880d681SAndroid Build Coastguard Worker}
583*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vprotw_mr(<8 x i16> %a0, <8 x i16> %a1) {
584*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vprotw_mr
585*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vprotw {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
586*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}"()
587*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vprotw(<8 x i16> %a1, <8 x i16> %a0)
588*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
589*9880d681SAndroid Build Coastguard Worker}
590*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vprotw(<8 x i16>, <8 x i16>) nounwind readnone
591*9880d681SAndroid Build Coastguard Worker
592*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_vpshab_rm(<16 x i8> %a0, <16 x i8> %a1) {
593*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshab_rm
594*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshab {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
595*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}"()
596*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.xop.vpshab(<16 x i8> %a0, <16 x i8> %a1)
597*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
598*9880d681SAndroid Build Coastguard Worker}
599*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_vpshab_mr(<16 x i8> %a0, <16 x i8> %a1) {
600*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshab_mr
601*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshab {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
602*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}"()
603*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.xop.vpshab(<16 x i8> %a1, <16 x i8> %a0)
604*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
605*9880d681SAndroid Build Coastguard Worker}
606*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpshab(<16 x i8>, <16 x i8>) nounwind readnone
607*9880d681SAndroid Build Coastguard Worker
608*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vpshad_rm(<4 x i32> %a0, <4 x i32> %a1) {
609*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshad_rm
610*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshad {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
611*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}"()
612*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vpshad(<4 x i32> %a0, <4 x i32> %a1)
613*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
614*9880d681SAndroid Build Coastguard Worker}
615*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vpshad_mr(<4 x i32> %a0, <4 x i32> %a1) {
616*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshad_mr
617*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshad {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
618*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}"()
619*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vpshad(<4 x i32> %a1, <4 x i32> %a0)
620*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
621*9880d681SAndroid Build Coastguard Worker}
622*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpshad(<4 x i32>, <4 x i32>) nounwind readnone
623*9880d681SAndroid Build Coastguard Worker
624*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vpshaq_rm(<2 x i64> %a0, <2 x i64> %a1) {
625*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshaq_rm
626*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshaq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
627*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}"()
628*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64> %a0, <2 x i64> %a1)
629*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
630*9880d681SAndroid Build Coastguard Worker}
631*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vpshaq_mr(<2 x i64> %a0, <2 x i64> %a1) {
632*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshaq_mr
633*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshaq {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
634*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}"()
635*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64> %a1, <2 x i64> %a0)
636*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
637*9880d681SAndroid Build Coastguard Worker}
638*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64>, <2 x i64>) nounwind readnone
639*9880d681SAndroid Build Coastguard Worker
640*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vpshaw_rm(<8 x i16> %a0, <8 x i16> %a1) {
641*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshaw_rm
642*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshaw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
643*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}"()
644*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16> %a0, <8 x i16> %a1)
645*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
646*9880d681SAndroid Build Coastguard Worker}
647*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vpshaw_mr(<8 x i16> %a0, <8 x i16> %a1) {
648*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshaw_mr
649*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshaw {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
650*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}"()
651*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16> %a1, <8 x i16> %a0)
652*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
653*9880d681SAndroid Build Coastguard Worker}
654*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16>, <8 x i16>) nounwind readnone
655*9880d681SAndroid Build Coastguard Worker
656*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_vpshlb_rm(<16 x i8> %a0, <16 x i8> %a1) {
657*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshlb_rm
658*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshlb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
659*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}"()
660*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8> %a0, <16 x i8> %a1)
661*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
662*9880d681SAndroid Build Coastguard Worker}
663*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @stack_fold_vpshlb_mr(<16 x i8> %a0, <16 x i8> %a1) {
664*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshlb_mr
665*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshlb {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
666*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}"()
667*9880d681SAndroid Build Coastguard Worker  %2 = call <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8> %a1, <16 x i8> %a0)
668*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %2
669*9880d681SAndroid Build Coastguard Worker}
670*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8>, <16 x i8>) nounwind readnone
671*9880d681SAndroid Build Coastguard Worker
672*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vpshld_rm(<4 x i32> %a0, <4 x i32> %a1) {
673*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshld_rm
674*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshld {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
675*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}"()
676*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vpshld(<4 x i32> %a0, <4 x i32> %a1)
677*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
678*9880d681SAndroid Build Coastguard Worker}
679*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_vpshld_mr(<4 x i32> %a0, <4 x i32> %a1) {
680*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshld_mr
681*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshld {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
682*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
683*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.xop.vpshld(<4 x i32> %a1, <4 x i32> %a0)
684*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
685*9880d681SAndroid Build Coastguard Worker}
686*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.xop.vpshld(<4 x i32>, <4 x i32>) nounwind readnone
687*9880d681SAndroid Build Coastguard Worker
688*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vpshlq_rm(<2 x i64> %a0, <2 x i64> %a1) {
689*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshlq_rm
690*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshlq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
691*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
692*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64> %a0, <2 x i64> %a1)
693*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
694*9880d681SAndroid Build Coastguard Worker}
695*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @stack_fold_vpshlq_mr(<2 x i64> %a0, <2 x i64> %a1) {
696*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshlq_mr
697*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshlq {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
698*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}"()
699*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64> %a1, <2 x i64> %a0)
700*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %2
701*9880d681SAndroid Build Coastguard Worker}
702*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64>, <2 x i64>) nounwind readnone
703*9880d681SAndroid Build Coastguard Worker
704*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vpshlw_rm(<8 x i16> %a0, <8 x i16> %a1) {
705*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshlw_rm
706*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshlw {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
707*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}"()
708*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %a0, <8 x i16> %a1)
709*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
710*9880d681SAndroid Build Coastguard Worker}
711*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_vpshlw_mr(<8 x i16> %a0, <8 x i16> %a1) {
712*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_vpshlw_mr
713*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpshlw {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
714*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}"()
715*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %a1, <8 x i16> %a0)
716*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %2
717*9880d681SAndroid Build Coastguard Worker}
718*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16>, <8 x i16>) nounwind readnone
719