xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/stack-folding-fp-avx1.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O3 -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx,+f16c < %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_addpd(<2 x double> %a0, <2 x double> %a1) {
12*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addpd
13*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vaddpd {{-?[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 = fadd <2 x double> %a0, %a1
16*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_addpd_ymm(<4 x double> %a0, <4 x double> %a1) {
20*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addpd_ymm
21*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vaddpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
22*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}"()
23*9880d681SAndroid Build Coastguard Worker  %2 = fadd <4 x double> %a0, %a1
24*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_addps(<4 x float> %a0, <4 x float> %a1) {
28*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addps
29*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vaddps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
30*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}"()
31*9880d681SAndroid Build Coastguard Worker  %2 = fadd <4 x float> %a0, %a1
32*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_addps_ymm(<8 x float> %a0, <8 x float> %a1) {
36*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addps_ymm
37*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vaddps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
38*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}"()
39*9880d681SAndroid Build Coastguard Worker  %2 = fadd <8 x float> %a0, %a1
40*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
41*9880d681SAndroid Build Coastguard Worker}
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_addsd(double %a0, double %a1) {
44*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addsd
45*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vaddsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
46*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}"()
47*9880d681SAndroid Build Coastguard Worker  %2 = fadd double %a0, %a1
48*9880d681SAndroid Build Coastguard Worker  ret double %2
49*9880d681SAndroid Build Coastguard Worker}
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_addsd_int(<2 x double> %a0, <2 x double> %a1) {
52*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addsd_int
53*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vaddsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
54*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}"()
55*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.add.sd(<2 x double> %a0, <2 x double> %a1)
56*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
57*9880d681SAndroid Build Coastguard Worker}
58*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.add.sd(<2 x double>, <2 x double>) nounwind readnone
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_addss(float %a0, float %a1) {
61*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addss
62*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vaddss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
63*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}"()
64*9880d681SAndroid Build Coastguard Worker  %2 = fadd float %a0, %a1
65*9880d681SAndroid Build Coastguard Worker  ret float %2
66*9880d681SAndroid Build Coastguard Worker}
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_addss_int(<4 x float> %a0, <4 x float> %a1) {
69*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addss_int
70*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vaddss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
71*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}"()
72*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.add.ss(<4 x float> %a0, <4 x float> %a1)
73*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
74*9880d681SAndroid Build Coastguard Worker}
75*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.add.ss(<4 x float>, <4 x float>) nounwind readnone
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_addsubpd(<2 x double> %a0, <2 x double> %a1) {
78*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addsubpd
79*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vaddsubpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
80*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}"()
81*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse3.addsub.pd(<2 x double> %a0, <2 x double> %a1)
82*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
83*9880d681SAndroid Build Coastguard Worker}
84*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse3.addsub.pd(<2 x double>, <2 x double>) nounwind readnone
85*9880d681SAndroid Build Coastguard Worker
86*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_addsubpd_ymm(<4 x double> %a0, <4 x double> %a1) {
87*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addsubpd_ymm
88*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vaddsubpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
89*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}"()
90*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.avx.addsub.pd.256(<4 x double> %a0, <4 x double> %a1)
91*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
92*9880d681SAndroid Build Coastguard Worker}
93*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.addsub.pd.256(<4 x double>, <4 x double>) nounwind readnone
94*9880d681SAndroid Build Coastguard Worker
95*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_addsubps(<4 x float> %a0, <4 x float> %a1) {
96*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addsubps
97*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vaddsubps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
98*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}"()
99*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse3.addsub.ps(<4 x float> %a0, <4 x float> %a1)
100*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
101*9880d681SAndroid Build Coastguard Worker}
102*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse3.addsub.ps(<4 x float>, <4 x float>) nounwind readnone
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_addsubps_ymm(<8 x float> %a0, <8 x float> %a1) {
105*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addsubps_ymm
106*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vaddsubps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
107*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}"()
108*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.addsub.ps.256(<8 x float> %a0, <8 x float> %a1)
109*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
110*9880d681SAndroid Build Coastguard Worker}
111*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.addsub.ps.256(<8 x float>, <8 x float>) nounwind readnone
112*9880d681SAndroid Build Coastguard Worker
113*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_andnpd(<2 x double> %a0, <2 x double> %a1) {
114*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_andnpd
115*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vandnpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
116*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}"()
117*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x double> %a0 to <2 x i64>
118*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x double> %a1 to <2 x i64>
119*9880d681SAndroid Build Coastguard Worker  %4 = xor <2 x i64> %2, <i64 -1, i64 -1>
120*9880d681SAndroid Build Coastguard Worker  %5 = and <2 x i64> %4, %3
121*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <2 x i64> %5 to <2 x double>
122*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
123*9880d681SAndroid Build Coastguard Worker  %7 = fadd <2 x double> %6, <double 0x0, double 0x0>
124*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %7
125*9880d681SAndroid Build Coastguard Worker}
126*9880d681SAndroid Build Coastguard Worker
127*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_andnpd_ymm(<4 x double> %a0, <4 x double> %a1) {
128*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_andnpd_ymm
129*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vandnpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
130*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}"()
131*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x double> %a0 to <4 x i64>
132*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x double> %a1 to <4 x i64>
133*9880d681SAndroid Build Coastguard Worker  %4 = xor <4 x i64> %2, <i64 -1, i64 -1, i64 -1, i64 -1>
134*9880d681SAndroid Build Coastguard Worker  %5 = and <4 x i64> %4, %3
135*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <4 x i64> %5 to <4 x double>
136*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
137*9880d681SAndroid Build Coastguard Worker  %7 = fadd <4 x double> %6, <double 0x0, double 0x0, double 0x0, double 0x0>
138*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %7
139*9880d681SAndroid Build Coastguard Worker}
140*9880d681SAndroid Build Coastguard Worker
141*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_andnps(<4 x float> %a0, <4 x float> %a1) {
142*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_andnps
143*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vandnps {{-?[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 = bitcast <4 x float> %a0 to <2 x i64>
146*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x float> %a1 to <2 x i64>
147*9880d681SAndroid Build Coastguard Worker  %4 = xor <2 x i64> %2, <i64 -1, i64 -1>
148*9880d681SAndroid Build Coastguard Worker  %5 = and <2 x i64> %4, %3
149*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <2 x i64> %5 to <4 x float>
150*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
151*9880d681SAndroid Build Coastguard Worker  %7 = fadd <4 x float> %6, <float 0x0, float 0x0, float 0x0, float 0x0>
152*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %7
153*9880d681SAndroid Build Coastguard Worker}
154*9880d681SAndroid Build Coastguard Worker
155*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_andnps_ymm(<8 x float> %a0, <8 x float> %a1) {
156*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_andnps_ymm
157*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vandnps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
158*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}"()
159*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <8 x float> %a0 to <4 x i64>
160*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <8 x float> %a1 to <4 x i64>
161*9880d681SAndroid Build Coastguard Worker  %4 = xor <4 x i64> %2, <i64 -1, i64 -1, i64 -1, i64 -1>
162*9880d681SAndroid Build Coastguard Worker  %5 = and <4 x i64> %4, %3
163*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <4 x i64> %5 to <8 x float>
164*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
165*9880d681SAndroid Build Coastguard Worker  %7 = fadd <8 x float> %6, <float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0>
166*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %7
167*9880d681SAndroid Build Coastguard Worker}
168*9880d681SAndroid Build Coastguard Worker
169*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_andpd(<2 x double> %a0, <2 x double> %a1) {
170*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_andpd
171*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vandpd {{-?[0-9]*}}(%rsp), {{%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,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
173*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x double> %a0 to <2 x i64>
174*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x double> %a1 to <2 x i64>
175*9880d681SAndroid Build Coastguard Worker  %4 = and <2 x i64> %2, %3
176*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <2 x i64> %4 to <2 x double>
177*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
178*9880d681SAndroid Build Coastguard Worker  %6 = fadd <2 x double> %5, <double 0x0, double 0x0>
179*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %6
180*9880d681SAndroid Build Coastguard Worker}
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_andpd_ymm(<4 x double> %a0, <4 x double> %a1) {
183*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_andpd_ymm
184*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vandpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
185*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}"()
186*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x double> %a0 to <4 x i64>
187*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x double> %a1 to <4 x i64>
188*9880d681SAndroid Build Coastguard Worker  %4 = and <4 x i64> %2, %3
189*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <4 x i64> %4 to <4 x double>
190*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
191*9880d681SAndroid Build Coastguard Worker  %6 = fadd <4 x double> %5, <double 0x0, double 0x0, double 0x0, double 0x0>
192*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %6
193*9880d681SAndroid Build Coastguard Worker}
194*9880d681SAndroid Build Coastguard Worker
195*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_andps(<4 x float> %a0, <4 x float> %a1) {
196*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_andps
197*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vandps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
198*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
199*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x float> %a0 to <2 x i64>
200*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x float> %a1 to <2 x i64>
201*9880d681SAndroid Build Coastguard Worker  %4 = and <2 x i64> %2, %3
202*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <2 x i64> %4 to <4 x float>
203*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
204*9880d681SAndroid Build Coastguard Worker  %6 = fadd <4 x float> %5, <float 0x0, float 0x0, float 0x0, float 0x0>
205*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %6
206*9880d681SAndroid Build Coastguard Worker}
207*9880d681SAndroid Build Coastguard Worker
208*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_andps_ymm(<8 x float> %a0, <8 x float> %a1) {
209*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_andps_ymm
210*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vandps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
211*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}"()
212*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <8 x float> %a0 to <4 x i64>
213*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <8 x float> %a1 to <4 x i64>
214*9880d681SAndroid Build Coastguard Worker  %4 = and <4 x i64> %2, %3
215*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <4 x i64> %4 to <8 x float>
216*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
217*9880d681SAndroid Build Coastguard Worker  %6 = fadd <8 x float> %5, <float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0>
218*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %6
219*9880d681SAndroid Build Coastguard Worker}
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_blendpd(<2 x double> %a0, <2 x double> %a1) {
222*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_blendpd
223*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vblendpd $2, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
224*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}"()
225*9880d681SAndroid Build Coastguard Worker  %2 = select <2 x i1> <i1 1, i1 0>, <2 x double> %a0, <2 x double> %a1
226*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
227*9880d681SAndroid Build Coastguard Worker}
228*9880d681SAndroid Build Coastguard Worker
229*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_blendpd_ymm(<4 x double> %a0, <4 x double> %a1) {
230*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_blendpd_ymm
231*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vblendpd $6, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
232*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}"()
233*9880d681SAndroid Build Coastguard Worker  %2 = select <4 x i1> <i1 1, i1 0, i1 0, i1 1>, <4 x double> %a0, <4 x double> %a1
234*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
235*9880d681SAndroid Build Coastguard Worker}
236*9880d681SAndroid Build Coastguard Worker
237*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_blendps(<4 x float> %a0, <4 x float> %a1) {
238*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_blendps
239*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vblendps $6, {{-?[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 = select <4 x i1> <i1 1, i1 0, i1 0, i1 1>, <4 x float> %a0, <4 x float> %a1
242*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
243*9880d681SAndroid Build Coastguard Worker}
244*9880d681SAndroid Build Coastguard Worker
245*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_blendps_ymm(<8 x float> %a0, <8 x float> %a1) {
246*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_blendps_ymm
247*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vblendps $102, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-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 = select <8 x i1> <i1 1, i1 0, i1 0, i1 1, i1 1, i1 0, i1 0, i1 1>, <8 x float> %a0, <8 x float> %a1
250*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
251*9880d681SAndroid Build Coastguard Worker}
252*9880d681SAndroid Build Coastguard Worker
253*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %c) {
254*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_blendvpd
255*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vblendvpd {{%xmm[0-9][0-9]*}}, {{-?[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,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
257*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse41.blendvpd(<2 x double> %a1, <2 x double> %c, <2 x double> %a0)
258*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
259*9880d681SAndroid Build Coastguard Worker}
260*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.blendvpd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_blendvpd_ymm(<4 x double> %a0, <4 x double> %a1, <4 x double> %c) {
263*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_blendvpd_ymm
264*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vblendvpd {{%ymm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
265*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}"()
266*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.avx.blendv.pd.256(<4 x double> %a1, <4 x double> %c, <4 x double> %a0)
267*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
268*9880d681SAndroid Build Coastguard Worker}
269*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.blendv.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone
270*9880d681SAndroid Build Coastguard Worker
271*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %c) {
272*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_blendvps
273*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vblendvps {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
274*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}"()
275*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse41.blendvps(<4 x float> %a1, <4 x float> %c, <4 x float> %a0)
276*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
277*9880d681SAndroid Build Coastguard Worker}
278*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.blendvps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
279*9880d681SAndroid Build Coastguard Worker
280*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_blendvps_ymm(<8 x float> %a0, <8 x float> %a1, <8 x float> %c) {
281*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_blendvps_ymm
282*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vblendvps {{%ymm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
283*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}"()
284*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %a1, <8 x float> %c, <8 x float> %a0)
285*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
286*9880d681SAndroid Build Coastguard Worker}
287*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone
288*9880d681SAndroid Build Coastguard Worker
289*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cmppd(<2 x double> %a0, <2 x double> %a1) {
290*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmppd
291*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vcmpeqpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
292*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}"()
293*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 0)
294*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
295*9880d681SAndroid Build Coastguard Worker}
296*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double>, <2 x double>, i8) nounwind readnone
297*9880d681SAndroid Build Coastguard Worker
298*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_cmppd_ymm(<4 x double> %a0, <4 x double> %a1) {
299*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmppd_ymm
300*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vcmpeqpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
301*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}"()
302*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double> %a0, <4 x double> %a1, i8 0)
303*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
304*9880d681SAndroid Build Coastguard Worker}
305*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double>, <4 x double>, i8) nounwind readnone
306*9880d681SAndroid Build Coastguard Worker
307*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cmpps(<4 x float> %a0, <4 x float> %a1) {
308*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmpps
309*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vcmpeqps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
310*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}"()
311*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 0)
312*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
313*9880d681SAndroid Build Coastguard Worker}
314*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ps(<4 x float>, <4 x float>, i8) nounwind readnone
315*9880d681SAndroid Build Coastguard Worker
316*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_cmpps_ymm(<8 x float> %a0, <8 x float> %a1) {
317*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmpps_ymm
318*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vcmpeqps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
319*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}"()
320*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 0)
321*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
322*9880d681SAndroid Build Coastguard Worker}
323*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone
324*9880d681SAndroid Build Coastguard Worker
325*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cmpsd(double %a0, double %a1) {
326*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmpsd
327*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vcmpeqsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
328*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}"()
329*9880d681SAndroid Build Coastguard Worker  %2 = fcmp oeq double %a0, %a1
330*9880d681SAndroid Build Coastguard Worker  %3 = zext i1 %2 to i32
331*9880d681SAndroid Build Coastguard Worker  ret i32 %3
332*9880d681SAndroid Build Coastguard Worker}
333*9880d681SAndroid Build Coastguard Worker
334*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cmpsd_int(<2 x double> %a0, <2 x double> %a1) {
335*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmpsd_int
336*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vcmpeqsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
337*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}"()
338*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 0)
339*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
340*9880d681SAndroid Build Coastguard Worker}
341*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double>, <2 x double>, i8) nounwind readnone
342*9880d681SAndroid Build Coastguard Worker
343*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cmpss(float %a0, float %a1) {
344*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmpss
345*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vcmpeqss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
346*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}"()
347*9880d681SAndroid Build Coastguard Worker  %2 = fcmp oeq float %a0, %a1
348*9880d681SAndroid Build Coastguard Worker  %3 = zext i1 %2 to i32
349*9880d681SAndroid Build Coastguard Worker  ret i32 %3
350*9880d681SAndroid Build Coastguard Worker}
351*9880d681SAndroid Build Coastguard Worker
352*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cmpss_int(<4 x float> %a0, <4 x float> %a1) {
353*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmpss_int
354*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vcmpeqss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
355*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}"()
356*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.cmp.ss(<4 x float> %a0, <4 x float> %a1, i8 0)
357*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
358*9880d681SAndroid Build Coastguard Worker}
359*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ss(<4 x float>, <4 x float>, i8) nounwind readnone
360*9880d681SAndroid Build Coastguard Worker
361*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_comisd
362*9880d681SAndroid Build Coastguard Worker
363*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_comisd_int(<2 x double> %a0, <2 x double> %a1) {
364*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_comisd_int
365*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vcomisd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
366*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}"()
367*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %a0, <2 x double> %a1)
368*9880d681SAndroid Build Coastguard Worker  ret i32 %2
369*9880d681SAndroid Build Coastguard Worker}
370*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comieq.sd(<2 x double>, <2 x double>) nounwind readnone
371*9880d681SAndroid Build Coastguard Worker
372*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_comiss
373*9880d681SAndroid Build Coastguard Worker
374*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_comiss_int(<4 x float> %a0, <4 x float> %a1) {
375*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_comiss_int
376*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vcomiss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
377*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}"()
378*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse.comieq.ss(<4 x float> %a0, <4 x float> %a1)
379*9880d681SAndroid Build Coastguard Worker  ret i32 %2
380*9880d681SAndroid Build Coastguard Worker}
381*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comieq.ss(<4 x float>, <4 x float>) nounwind readnone
382*9880d681SAndroid Build Coastguard Worker
383*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtdq2pd(<4 x i32> %a0) {
384*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtdq2pd
385*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtdq2pd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
386*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}"()
387*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x i32> %a0, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
388*9880d681SAndroid Build Coastguard Worker  %3 = sitofp <2 x i32> %2 to <2 x double>
389*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %3
390*9880d681SAndroid Build Coastguard Worker}
391*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtdq2pd_int(<4 x i32> %a0) {
392*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtdq2pd_int
393*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtdq2pd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
394*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
395*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cvtdq2pd(<4 x i32> %a0)
396*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
397*9880d681SAndroid Build Coastguard Worker}
398*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtdq2pd(<4 x i32>) nounwind readnone
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_cvtdq2pd_ymm(<4 x i32> %a0) {
401*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtdq2pd_ymm
402*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtdq2pd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
403*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}"()
404*9880d681SAndroid Build Coastguard Worker  %2 = sitofp <4 x i32> %a0 to <4 x double>
405*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
406*9880d681SAndroid Build Coastguard Worker}
407*9880d681SAndroid Build Coastguard Worker
408*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_cvtdq2pd_ymm_int(<4 x i32> %a0) {
409*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtdq2pd_ymm_int
410*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtdq2pd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
411*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}"()
412*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.avx.cvtdq2.pd.256(<4 x i32> %a0)
413*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
414*9880d681SAndroid Build Coastguard Worker}
415*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.cvtdq2.pd.256(<4 x i32>) nounwind readnone
416*9880d681SAndroid Build Coastguard Worker
417*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cvtdq2ps(<4 x i32> %a0) {
418*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtdq2ps
419*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtdq2ps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
420*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}"()
421*9880d681SAndroid Build Coastguard Worker  %2 = sitofp <4 x i32> %a0 to <4 x float>
422*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
423*9880d681SAndroid Build Coastguard Worker}
424*9880d681SAndroid Build Coastguard Worker
425*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_cvtdq2ps_ymm(<8 x i32> %a0) {
426*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtdq2ps_ymm
427*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtdq2ps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
428*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}"()
429*9880d681SAndroid Build Coastguard Worker  %2 = sitofp <8 x i32> %a0 to <8 x float>
430*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
431*9880d681SAndroid Build Coastguard Worker}
432*9880d681SAndroid Build Coastguard Worker
433*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_cvtpd2dq(<2 x double> %a0) {
434*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtpd2dq
435*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtpd2dqx {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
436*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}"()
437*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double> %a0)
438*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
439*9880d681SAndroid Build Coastguard Worker}
440*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double>) nounwind readnone
441*9880d681SAndroid Build Coastguard Worker
442*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_cvtpd2dq_ymm(<4 x double> %a0) {
443*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtpd2dq_ymm
444*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtpd2dqy {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
445*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}"()
446*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double> %a0)
447*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
448*9880d681SAndroid Build Coastguard Worker}
449*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double>) nounwind readnone
450*9880d681SAndroid Build Coastguard Worker
451*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @stack_fold_cvtpd2ps(<2 x double> %a0) {
452*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtpd2ps
453*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtpd2psx {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
454*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}"()
455*9880d681SAndroid Build Coastguard Worker  %2 = fptrunc <2 x double> %a0 to <2 x float>
456*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %2
457*9880d681SAndroid Build Coastguard Worker}
458*9880d681SAndroid Build Coastguard Worker
459*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cvtpd2ps_ymm(<4 x double> %a0) {
460*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtpd2ps_ymm
461*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtpd2psy {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
462*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}"()
463*9880d681SAndroid Build Coastguard Worker  %2 = fptrunc <4 x double> %a0 to <4 x float>
464*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
465*9880d681SAndroid Build Coastguard Worker}
466*9880d681SAndroid Build Coastguard Worker
467*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cvtph2ps(<8 x i16> %a0) {
468*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtph2ps
469*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtph2ps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
470*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}"()
471*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.vcvtph2ps.128(<8 x i16> %a0)
472*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
473*9880d681SAndroid Build Coastguard Worker}
474*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.vcvtph2ps.128(<8 x i16>) nounwind readonly
475*9880d681SAndroid Build Coastguard Worker
476*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_cvtph2ps_ymm(<8 x i16> %a0) {
477*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtph2ps_ymm
478*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtph2ps {{-?[0-9]*}}(%rsp), {{%ymm[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 float> @llvm.x86.vcvtph2ps.256(<8 x i16> %a0)
481*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
482*9880d681SAndroid Build Coastguard Worker}
483*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.vcvtph2ps.256(<8 x i16>) nounwind readonly
484*9880d681SAndroid Build Coastguard Worker
485*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_cvtps2dq(<4 x float> %a0) {
486*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtps2dq
487*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvtps2dq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
488*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{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.sse2.cvtps2dq(<4 x float> %a0)
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.sse2.cvtps2dq(<4 x float>) nounwind readnone
493*9880d681SAndroid Build Coastguard Worker
494*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @stack_fold_cvtps2dq_ymm(<8 x float> %a0) {
495*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtps2dq_ymm
496*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvtps2dq {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
497*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}"()
498*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float> %a0)
499*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %2
500*9880d681SAndroid Build Coastguard Worker}
501*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float>) nounwind readnone
502*9880d681SAndroid Build Coastguard Worker
503*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtps2pd(<4 x float> %a0) {
504*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtps2pd
505*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtps2pd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
506*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
507*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x float> %a0, <4 x float> undef, <2 x i32> <i32 0, i32 1>
508*9880d681SAndroid Build Coastguard Worker  %3 = fpext <2 x float> %2 to <2 x double>
509*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %3
510*9880d681SAndroid Build Coastguard Worker}
511*9880d681SAndroid Build Coastguard Worker
512*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtps2pd_int(<4 x float> %a0) {
513*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtps2pd_int
514*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtps2pd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
515*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
516*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cvtps2pd(<4 x float> %a0)
517*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
518*9880d681SAndroid Build Coastguard Worker}
519*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtps2pd(<4 x float>) nounwind readnone
520*9880d681SAndroid Build Coastguard Worker
521*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_cvtps2pd_ymm(<4 x float> %a0) {
522*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtps2pd_ymm
523*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtps2pd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
524*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}"()
525*9880d681SAndroid Build Coastguard Worker  %2 = fpext <4 x float> %a0 to <4 x double>
526*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
527*9880d681SAndroid Build Coastguard Worker}
528*9880d681SAndroid Build Coastguard Worker
529*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_cvtps2pd_ymm_int(<4 x float> %a0) {
530*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtps2pd_ymm_int
531*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtps2pd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
532*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}"()
533*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.avx.cvt.ps2.pd.256(<4 x float> %a0)
534*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
535*9880d681SAndroid Build Coastguard Worker}
536*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.cvt.ps2.pd.256(<4 x float>) nounwind readnone
537*9880d681SAndroid Build Coastguard Worker
538*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_cvtps2ph(<4 x float> %a0) {
539*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtps2ph
540*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtps2ph $0, {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 16-byte Folded Spill
541*9880d681SAndroid Build Coastguard Worker  %1 = call <8 x i16> @llvm.x86.vcvtps2ph.128(<4 x float> %a0, i32 0)
542*9880d681SAndroid Build Coastguard Worker  %2 = 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}"()
543*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %1
544*9880d681SAndroid Build Coastguard Worker}
545*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.vcvtps2ph.128(<4 x float>, i32) nounwind readonly
546*9880d681SAndroid Build Coastguard Worker
547*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @stack_fold_cvtps2ph_ymm(<8 x float> %a0) {
548*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtps2ph_ymm
549*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vcvtps2ph $0, {{%ymm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 16-byte Folded Spill
550*9880d681SAndroid Build Coastguard Worker  %1 = call <8 x i16> @llvm.x86.vcvtps2ph.256(<8 x float> %a0, i32 0)
551*9880d681SAndroid Build Coastguard Worker  %2 = 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}"()
552*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %1
553*9880d681SAndroid Build Coastguard Worker}
554*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.vcvtps2ph.256(<8 x float>, i32) nounwind readonly
555*9880d681SAndroid Build Coastguard Worker
556*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_cvtsd2si
557*9880d681SAndroid Build Coastguard Worker
558*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cvtsd2si_int(<2 x double> %a0) {
559*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsd2si_int
560*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsd2si {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 16-byte Folded Reload
561*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}"()
562*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %a0)
563*9880d681SAndroid Build Coastguard Worker  ret i32 %2
564*9880d681SAndroid Build Coastguard Worker}
565*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvtsd2si(<2 x double>) nounwind readnone
566*9880d681SAndroid Build Coastguard Worker
567*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_cvtsd2si64
568*9880d681SAndroid Build Coastguard Worker
569*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_cvtsd2si64_int(<2 x double> %a0) {
570*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsd2si64_int
571*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsd2si {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 16-byte Folded Reload
572*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}"()
573*9880d681SAndroid Build Coastguard Worker  %2 = call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %a0)
574*9880d681SAndroid Build Coastguard Worker  ret i64 %2
575*9880d681SAndroid Build Coastguard Worker}
576*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse2.cvtsd2si64(<2 x double>) nounwind readnone
577*9880d681SAndroid Build Coastguard Worker
578*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_cvtsd2ss
579*9880d681SAndroid Build Coastguard Worker
580*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cvtsd2ss_int(<2 x double> %a0) {
581*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsd2ss_int
582*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsd2ss {{-?[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,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
584*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float> <float 0x0, float 0x0, float 0x0, float 0x0>, <2 x double> %a0)
585*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
586*9880d681SAndroid Build Coastguard Worker}
587*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float>, <2 x double>) nounwind readnone
588*9880d681SAndroid Build Coastguard Worker
589*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_cvtsi2sd(i32 %a0) {
590*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi2sd
591*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsi2sdl {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
592*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}"()
593*9880d681SAndroid Build Coastguard Worker  %2 = sitofp i32 %a0 to double
594*9880d681SAndroid Build Coastguard Worker  ret double %2
595*9880d681SAndroid Build Coastguard Worker}
596*9880d681SAndroid Build Coastguard Worker
597*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtsi2sd_int(i32 %a0) {
598*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi2sd_int
599*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsi2sdl {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
600*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}"()
601*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double> <double 0x0, double 0x0>, i32 %a0)
602*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
603*9880d681SAndroid Build Coastguard Worker}
604*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double>, i32) nounwind readnone
605*9880d681SAndroid Build Coastguard Worker
606*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_cvtsi642sd(i64 %a0) {
607*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi642sd
608*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsi2sdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
609*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}"()
610*9880d681SAndroid Build Coastguard Worker  %2 = sitofp i64 %a0 to double
611*9880d681SAndroid Build Coastguard Worker  ret double %2
612*9880d681SAndroid Build Coastguard Worker}
613*9880d681SAndroid Build Coastguard Worker
614*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtsi642sd_int(i64 %a0) {
615*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi642sd_int
616*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsi2sdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
617*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}"()
618*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cvtsi642sd(<2 x double> <double 0x0, double 0x0>, i64 %a0)
619*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
620*9880d681SAndroid Build Coastguard Worker}
621*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtsi642sd(<2 x double>, i64) nounwind readnone
622*9880d681SAndroid Build Coastguard Worker
623*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_cvtsi2ss(i32 %a0) {
624*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi2ss
625*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsi2ssl {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
626*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}"()
627*9880d681SAndroid Build Coastguard Worker  %2 = sitofp i32 %a0 to float
628*9880d681SAndroid Build Coastguard Worker  ret float %2
629*9880d681SAndroid Build Coastguard Worker}
630*9880d681SAndroid Build Coastguard Worker
631*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cvtsi2ss_int(i32 %a0) {
632*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi2ss_int
633*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsi2ssl {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
634*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}"()
635*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float> <float 0x0, float 0x0, float 0x0, float 0x0>, i32 %a0)
636*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
637*9880d681SAndroid Build Coastguard Worker}
638*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float>, i32) nounwind readnone
639*9880d681SAndroid Build Coastguard Worker
640*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_cvtsi642ss(i64 %a0) {
641*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi642ss
642*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsi2ssq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
643*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}"()
644*9880d681SAndroid Build Coastguard Worker  %2 = sitofp i64 %a0 to float
645*9880d681SAndroid Build Coastguard Worker  ret float %2
646*9880d681SAndroid Build Coastguard Worker}
647*9880d681SAndroid Build Coastguard Worker
648*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cvtsi642ss_int(i64 %a0) {
649*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi642ss_int
650*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsi2ssq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
651*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}"()
652*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.cvtsi642ss(<4 x float> <float 0x0, float 0x0, float 0x0, float 0x0>, i64 %a0)
653*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
654*9880d681SAndroid Build Coastguard Worker}
655*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cvtsi642ss(<4 x float>, i64) nounwind readnone
656*9880d681SAndroid Build Coastguard Worker
657*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_cvtss2sd
658*9880d681SAndroid Build Coastguard Worker
659*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtss2sd_int(<4 x float> %a0) {
660*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtss2sd_int
661*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtss2sd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
662*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}"()
663*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cvtss2sd(<2 x double> <double 0x0, double 0x0>, <4 x float> %a0)
664*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
665*9880d681SAndroid Build Coastguard Worker}
666*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtss2sd(<2 x double>, <4 x float>) nounwind readnone
667*9880d681SAndroid Build Coastguard Worker
668*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_cvtss2si
669*9880d681SAndroid Build Coastguard Worker
670*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cvtss2si_int(<4 x float> %a0) {
671*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtss2si_int
672*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvtss2si {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 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 = call i32 @llvm.x86.sse.cvtss2si(<4 x float> %a0)
675*9880d681SAndroid Build Coastguard Worker  ret i32 %2
676*9880d681SAndroid Build Coastguard Worker}
677*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvtss2si(<4 x float>) nounwind readnone
678*9880d681SAndroid Build Coastguard Worker
679*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_cvtss2si64
680*9880d681SAndroid Build Coastguard Worker
681*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_cvtss2si64_int(<4 x float> %a0) {
682*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtss2si64_int
683*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvtss2si {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 16-byte Folded Reload
684*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}"()
685*9880d681SAndroid Build Coastguard Worker  %2 = call i64 @llvm.x86.sse.cvtss2si64(<4 x float> %a0)
686*9880d681SAndroid Build Coastguard Worker  ret i64 %2
687*9880d681SAndroid Build Coastguard Worker}
688*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse.cvtss2si64(<4 x float>) nounwind readnone
689*9880d681SAndroid Build Coastguard Worker
690*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_cvttpd2dq(<2 x double> %a0) {
691*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttpd2dq
692*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvttpd2dqx {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
693*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}"()
694*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double> %a0)
695*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
696*9880d681SAndroid Build Coastguard Worker}
697*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double>) nounwind readnone
698*9880d681SAndroid Build Coastguard Worker
699*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_cvttpd2dq_ymm(<4 x double> %a0) {
700*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttpd2dq_ymm
701*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvttpd2dqy {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
702*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}"()
703*9880d681SAndroid Build Coastguard Worker  %2 = fptosi <4 x double> %a0 to <4 x i32>
704*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
705*9880d681SAndroid Build Coastguard Worker}
706*9880d681SAndroid Build Coastguard Worker
707*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_cvttps2dq(<4 x float> %a0) {
708*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttps2dq
709*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvttps2dq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
710*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}"()
711*9880d681SAndroid Build Coastguard Worker  %2 = fptosi <4 x float> %a0 to <4 x i32>
712*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
713*9880d681SAndroid Build Coastguard Worker}
714*9880d681SAndroid Build Coastguard Worker
715*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @stack_fold_cvttps2dq_ymm(<8 x float> %a0) {
716*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttps2dq_ymm
717*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvttps2dq {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-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 = fptosi <8 x float> %a0 to <8 x i32>
720*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %2
721*9880d681SAndroid Build Coastguard Worker}
722*9880d681SAndroid Build Coastguard Worker
723*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cvttsd2si(double %a0) {
724*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttsd2si
725*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvttsd2si {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 8-byte Folded Reload
726*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}"()
727*9880d681SAndroid Build Coastguard Worker  %2 = fptosi double %a0 to i32
728*9880d681SAndroid Build Coastguard Worker  ret i32 %2
729*9880d681SAndroid Build Coastguard Worker}
730*9880d681SAndroid Build Coastguard Worker
731*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cvttsd2si_int(<2 x double> %a0) {
732*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttsd2si_int
733*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvttsd2si {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 16-byte Folded Reload
734*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}"()
735*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse2.cvttsd2si(<2 x double> %a0)
736*9880d681SAndroid Build Coastguard Worker  ret i32 %2
737*9880d681SAndroid Build Coastguard Worker}
738*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvttsd2si(<2 x double>) nounwind readnone
739*9880d681SAndroid Build Coastguard Worker
740*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_cvttsd2si64(double %a0) {
741*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttsd2si64
742*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvttsd2si {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 8-byte Folded Reload
743*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}"()
744*9880d681SAndroid Build Coastguard Worker  %2 = fptosi double %a0 to i64
745*9880d681SAndroid Build Coastguard Worker  ret i64 %2
746*9880d681SAndroid Build Coastguard Worker}
747*9880d681SAndroid Build Coastguard Worker
748*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_cvttsd2si64_int(<2 x double> %a0) {
749*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttsd2si64_int
750*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvttsd2si {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 16-byte Folded Reload
751*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}"()
752*9880d681SAndroid Build Coastguard Worker  %2 = call i64 @llvm.x86.sse2.cvttsd2si64(<2 x double> %a0)
753*9880d681SAndroid Build Coastguard Worker  ret i64 %2
754*9880d681SAndroid Build Coastguard Worker}
755*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse2.cvttsd2si64(<2 x double>) nounwind readnone
756*9880d681SAndroid Build Coastguard Worker
757*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cvttss2si(float %a0) {
758*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttss2si
759*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvttss2si {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 4-byte Folded Reload
760*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}"()
761*9880d681SAndroid Build Coastguard Worker  %2 = fptosi float %a0 to i32
762*9880d681SAndroid Build Coastguard Worker  ret i32 %2
763*9880d681SAndroid Build Coastguard Worker}
764*9880d681SAndroid Build Coastguard Worker
765*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cvttss2si_int(<4 x float> %a0) {
766*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttss2si_int
767*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvttss2si {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 16-byte Folded Reload
768*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}"()
769*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse.cvttss2si(<4 x float> %a0)
770*9880d681SAndroid Build Coastguard Worker  ret i32 %2
771*9880d681SAndroid Build Coastguard Worker}
772*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvttss2si(<4 x float>) nounwind readnone
773*9880d681SAndroid Build Coastguard Worker
774*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_cvttss2si64(float %a0) {
775*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttss2si64
776*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vcvttss2si {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 4-byte Folded Reload
777*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}"()
778*9880d681SAndroid Build Coastguard Worker  %2 = fptosi float %a0 to i64
779*9880d681SAndroid Build Coastguard Worker  ret i64 %2
780*9880d681SAndroid Build Coastguard Worker}
781*9880d681SAndroid Build Coastguard Worker
782*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_cvttss2si64_int(<4 x float> %a0) {
783*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttss2si64_int
784*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvttss2si {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 16-byte Folded Reload
785*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}"()
786*9880d681SAndroid Build Coastguard Worker  %2 = call i64 @llvm.x86.sse.cvttss2si64(<4 x float> %a0)
787*9880d681SAndroid Build Coastguard Worker  ret i64 %2
788*9880d681SAndroid Build Coastguard Worker}
789*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse.cvttss2si64(<4 x float>) nounwind readnone
790*9880d681SAndroid Build Coastguard Worker
791*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_divpd(<2 x double> %a0, <2 x double> %a1) {
792*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divpd
793*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vdivpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
794*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}"()
795*9880d681SAndroid Build Coastguard Worker  %2 = fdiv <2 x double> %a0, %a1
796*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
797*9880d681SAndroid Build Coastguard Worker}
798*9880d681SAndroid Build Coastguard Worker
799*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_divpd_ymm(<4 x double> %a0, <4 x double> %a1) {
800*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divpd_ymm
801*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vdivpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
802*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}"()
803*9880d681SAndroid Build Coastguard Worker  %2 = fdiv <4 x double> %a0, %a1
804*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
805*9880d681SAndroid Build Coastguard Worker}
806*9880d681SAndroid Build Coastguard Worker
807*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_divps(<4 x float> %a0, <4 x float> %a1) {
808*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divps
809*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vdivps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
810*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}"()
811*9880d681SAndroid Build Coastguard Worker  %2 = fdiv <4 x float> %a0, %a1
812*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
813*9880d681SAndroid Build Coastguard Worker}
814*9880d681SAndroid Build Coastguard Worker
815*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_divps_ymm(<8 x float> %a0, <8 x float> %a1) {
816*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divps_ymm
817*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vdivps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
818*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}"()
819*9880d681SAndroid Build Coastguard Worker  %2 = fdiv <8 x float> %a0, %a1
820*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
821*9880d681SAndroid Build Coastguard Worker}
822*9880d681SAndroid Build Coastguard Worker
823*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_divsd(double %a0, double %a1) {
824*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divsd
825*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vdivsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
826*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
827*9880d681SAndroid Build Coastguard Worker  %2 = fdiv double %a0, %a1
828*9880d681SAndroid Build Coastguard Worker  ret double %2
829*9880d681SAndroid Build Coastguard Worker}
830*9880d681SAndroid Build Coastguard Worker
831*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_divsd_int(<2 x double> %a0, <2 x double> %a1) {
832*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divsd_int
833*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vdivsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
834*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}"()
835*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.div.sd(<2 x double> %a0, <2 x double> %a1)
836*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
837*9880d681SAndroid Build Coastguard Worker}
838*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.div.sd(<2 x double>, <2 x double>) nounwind readnone
839*9880d681SAndroid Build Coastguard Worker
840*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_divss(float %a0, float %a1) {
841*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divss
842*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vdivss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
843*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}"()
844*9880d681SAndroid Build Coastguard Worker  %2 = fdiv float %a0, %a1
845*9880d681SAndroid Build Coastguard Worker  ret float %2
846*9880d681SAndroid Build Coastguard Worker}
847*9880d681SAndroid Build Coastguard Worker
848*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_divss_int(<4 x float> %a0, <4 x float> %a1) {
849*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divss_int
850*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vdivss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
851*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}"()
852*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.div.ss(<4 x float> %a0, <4 x float> %a1)
853*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
854*9880d681SAndroid Build Coastguard Worker}
855*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.div.ss(<4 x float>, <4 x float>) nounwind readnone
856*9880d681SAndroid Build Coastguard Worker
857*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_dppd(<2 x double> %a0, <2 x double> %a1) {
858*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_dppd
859*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vdppd $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
860*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
861*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse41.dppd(<2 x double> %a0, <2 x double> %a1, i8 7)
862*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
863*9880d681SAndroid Build Coastguard Worker}
864*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.dppd(<2 x double>, <2 x double>, i8) nounwind readnone
865*9880d681SAndroid Build Coastguard Worker
866*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_dpps(<4 x float> %a0, <4 x float> %a1) {
867*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_dpps
868*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vdpps $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
869*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
870*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse41.dpps(<4 x float> %a0, <4 x float> %a1, i8 7)
871*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
872*9880d681SAndroid Build Coastguard Worker}
873*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.dpps(<4 x float>, <4 x float>, i8) nounwind readnone
874*9880d681SAndroid Build Coastguard Worker
875*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_dpps_ymm(<8 x float> %a0, <8 x float> %a1) {
876*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_dpps_ymm
877*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vdpps $7, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
878*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}"()
879*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.dp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 7)
880*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
881*9880d681SAndroid Build Coastguard Worker}
882*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.dp.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone
883*9880d681SAndroid Build Coastguard Worker
884*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_extractf128(<8 x float> %a0, <8 x float> %a1) {
885*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_extractf128
886*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vextractf128 $1, {{%ymm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 16-byte Folded Spill
887*9880d681SAndroid Build Coastguard Worker  %1 = shufflevector <8 x float> %a0, <8 x float> %a1, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
888*9880d681SAndroid Build Coastguard Worker  %2 = 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}"()
889*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %1
890*9880d681SAndroid Build Coastguard Worker}
891*9880d681SAndroid Build Coastguard Worker
892*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_extractps(<4 x float> %a0) {
893*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_extractps
894*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vextractps $1, {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 4-byte Folded Spill
895*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movl    {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 4-byte Reload
896*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <4 x float> %a0, i32 1
897*9880d681SAndroid Build Coastguard Worker  %2 = bitcast float %1 to i32
898*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}"()
899*9880d681SAndroid Build Coastguard Worker  ret i32 %2
900*9880d681SAndroid Build Coastguard Worker}
901*9880d681SAndroid Build Coastguard Worker
902*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_haddpd(<2 x double> %a0, <2 x double> %a1) {
903*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_haddpd
904*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vhaddpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
905*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}"()
906*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse3.hadd.pd(<2 x double> %a0, <2 x double> %a1)
907*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
908*9880d681SAndroid Build Coastguard Worker}
909*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse3.hadd.pd(<2 x double>, <2 x double>) nounwind readnone
910*9880d681SAndroid Build Coastguard Worker
911*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_haddpd_ymm(<4 x double> %a0, <4 x double> %a1) {
912*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_haddpd_ymm
913*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vhaddpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
914*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}"()
915*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.avx.hadd.pd.256(<4 x double> %a0, <4 x double> %a1)
916*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
917*9880d681SAndroid Build Coastguard Worker}
918*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.hadd.pd.256(<4 x double>, <4 x double>) nounwind readnone
919*9880d681SAndroid Build Coastguard Worker
920*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_haddps(<4 x float> %a0, <4 x float> %a1) {
921*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_haddps
922*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vhaddps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
923*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}"()
924*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse3.hadd.ps(<4 x float> %a0, <4 x float> %a1)
925*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
926*9880d681SAndroid Build Coastguard Worker}
927*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse3.hadd.ps(<4 x float>, <4 x float>) nounwind readnone
928*9880d681SAndroid Build Coastguard Worker
929*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_haddps_ymm(<8 x float> %a0, <8 x float> %a1) {
930*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_haddps_ymm
931*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vhaddps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
932*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}"()
933*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.hadd.ps.256(<8 x float> %a0, <8 x float> %a1)
934*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
935*9880d681SAndroid Build Coastguard Worker}
936*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.hadd.ps.256(<8 x float>, <8 x float>) nounwind readnone
937*9880d681SAndroid Build Coastguard Worker
938*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_hsubpd(<2 x double> %a0, <2 x double> %a1) {
939*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_hsubpd
940*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vhsubpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
941*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}"()
942*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse3.hsub.pd(<2 x double> %a0, <2 x double> %a1)
943*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
944*9880d681SAndroid Build Coastguard Worker}
945*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse3.hsub.pd(<2 x double>, <2 x double>) nounwind readnone
946*9880d681SAndroid Build Coastguard Worker
947*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_hsubpd_ymm(<4 x double> %a0, <4 x double> %a1) {
948*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_hsubpd_ymm
949*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vhsubpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
950*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}"()
951*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.avx.hsub.pd.256(<4 x double> %a0, <4 x double> %a1)
952*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
953*9880d681SAndroid Build Coastguard Worker}
954*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.hsub.pd.256(<4 x double>, <4 x double>) nounwind readnone
955*9880d681SAndroid Build Coastguard Worker
956*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_hsubps(<4 x float> %a0, <4 x float> %a1) {
957*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_hsubps
958*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vhsubps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
959*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}"()
960*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse3.hsub.ps(<4 x float> %a0, <4 x float> %a1)
961*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
962*9880d681SAndroid Build Coastguard Worker}
963*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse3.hsub.ps(<4 x float>, <4 x float>) nounwind readnone
964*9880d681SAndroid Build Coastguard Worker
965*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_hsubps_ymm(<8 x float> %a0, <8 x float> %a1) {
966*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_hsubps_ymm
967*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vhsubps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
968*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}"()
969*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.hsub.ps.256(<8 x float> %a0, <8 x float> %a1)
970*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
971*9880d681SAndroid Build Coastguard Worker}
972*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.hsub.ps.256(<8 x float>, <8 x float>) nounwind readnone
973*9880d681SAndroid Build Coastguard Worker
974*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_insertf128(<4 x float> %a0, <4 x float> %a1) {
975*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_insertf128
976*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vinsertf128 $1, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
977*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}"()
978*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x float> %a0, <4 x float> %a1, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
979*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
980*9880d681SAndroid Build Coastguard Worker}
981*9880d681SAndroid Build Coastguard Worker
982*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_insertps(<4 x float> %a0, <4 x float> %a1) {
983*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_insertps
984*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vinsertps $17, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
985*9880d681SAndroid Build Coastguard Worker  ;CHECK-NEXT:                                                                              {{.*#+}} xmm0 = zero,mem[0],xmm0[2,3]
986*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}"()
987*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %a0, <4 x float> %a1, i8 209)
988*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
989*9880d681SAndroid Build Coastguard Worker}
990*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.insertps(<4 x float>, <4 x float>, i8) nounwind readnone
991*9880d681SAndroid Build Coastguard Worker
992*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_maxpd(<2 x double> %a0, <2 x double> %a1) {
993*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxpd
994*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmaxpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
995*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}"()
996*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.max.pd(<2 x double> %a0, <2 x double> %a1)
997*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
998*9880d681SAndroid Build Coastguard Worker}
999*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.pd(<2 x double>, <2 x double>) nounwind readnone
1000*9880d681SAndroid Build Coastguard Worker
1001*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_maxpd_ymm(<4 x double> %a0, <4 x double> %a1) {
1002*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxpd_ymm
1003*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmaxpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1004*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}"()
1005*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.avx.max.pd.256(<4 x double> %a0, <4 x double> %a1)
1006*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
1007*9880d681SAndroid Build Coastguard Worker}
1008*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.max.pd.256(<4 x double>, <4 x double>) nounwind readnone
1009*9880d681SAndroid Build Coastguard Worker
1010*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_maxps(<4 x float> %a0, <4 x float> %a1) {
1011*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxps
1012*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmaxps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1013*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}"()
1014*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %a0, <4 x float> %a1)
1015*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1016*9880d681SAndroid Build Coastguard Worker}
1017*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.max.ps(<4 x float>, <4 x float>) nounwind readnone
1018*9880d681SAndroid Build Coastguard Worker
1019*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_maxps_ymm(<8 x float> %a0, <8 x float> %a1) {
1020*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxps_ymm
1021*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmaxps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1022*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}"()
1023*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.max.ps.256(<8 x float> %a0, <8 x float> %a1)
1024*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1025*9880d681SAndroid Build Coastguard Worker}
1026*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.max.ps.256(<8 x float>, <8 x float>) nounwind readnone
1027*9880d681SAndroid Build Coastguard Worker
1028*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_maxsd(double %a0, double %a1) {
1029*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxsd
1030*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmaxsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
1031*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}"()
1032*9880d681SAndroid Build Coastguard Worker  %2 = fcmp ogt double %a0, %a1
1033*9880d681SAndroid Build Coastguard Worker  %3 = select i1 %2, double %a0, double %a1
1034*9880d681SAndroid Build Coastguard Worker  ret double %3
1035*9880d681SAndroid Build Coastguard Worker}
1036*9880d681SAndroid Build Coastguard Worker
1037*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_maxsd_int(<2 x double> %a0, <2 x double> %a1) {
1038*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxsd_int
1039*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmaxsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1040*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}"()
1041*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %a0, <2 x double> %a1)
1042*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1043*9880d681SAndroid Build Coastguard Worker}
1044*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.sd(<2 x double>, <2 x double>) nounwind readnone
1045*9880d681SAndroid Build Coastguard Worker
1046*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_maxss(float %a0, float %a1) {
1047*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxss
1048*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmaxss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
1049*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}"()
1050*9880d681SAndroid Build Coastguard Worker  %2 = fcmp ogt float %a0, %a1
1051*9880d681SAndroid Build Coastguard Worker  %3 = select i1 %2, float %a0, float %a1
1052*9880d681SAndroid Build Coastguard Worker  ret float %3
1053*9880d681SAndroid Build Coastguard Worker}
1054*9880d681SAndroid Build Coastguard Worker
1055*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_maxss_int(<4 x float> %a0, <4 x float> %a1) {
1056*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxss_int
1057*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmaxss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1058*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}"()
1059*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.max.ss(<4 x float> %a0, <4 x float> %a1)
1060*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1061*9880d681SAndroid Build Coastguard Worker}
1062*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.max.ss(<4 x float>, <4 x float>) nounwind readnone
1063*9880d681SAndroid Build Coastguard Worker
1064*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_minpd(<2 x double> %a0, <2 x double> %a1) {
1065*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minpd
1066*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vminpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1067*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}"()
1068*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.min.pd(<2 x double> %a0, <2 x double> %a1)
1069*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1070*9880d681SAndroid Build Coastguard Worker}
1071*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.pd(<2 x double>, <2 x double>) nounwind readnone
1072*9880d681SAndroid Build Coastguard Worker
1073*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_minpd_ymm(<4 x double> %a0, <4 x double> %a1) {
1074*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minpd_ymm
1075*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vminpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1076*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}"()
1077*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.avx.min.pd.256(<4 x double> %a0, <4 x double> %a1)
1078*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
1079*9880d681SAndroid Build Coastguard Worker}
1080*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.min.pd.256(<4 x double>, <4 x double>) nounwind readnone
1081*9880d681SAndroid Build Coastguard Worker
1082*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_minps(<4 x float> %a0, <4 x float> %a1) {
1083*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minps
1084*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vminps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1085*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}"()
1086*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %a0, <4 x float> %a1)
1087*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1088*9880d681SAndroid Build Coastguard Worker}
1089*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.min.ps(<4 x float>, <4 x float>) nounwind readnone
1090*9880d681SAndroid Build Coastguard Worker
1091*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_minps_ymm(<8 x float> %a0, <8 x float> %a1) {
1092*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minps_ymm
1093*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vminps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1094*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}"()
1095*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.min.ps.256(<8 x float> %a0, <8 x float> %a1)
1096*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1097*9880d681SAndroid Build Coastguard Worker}
1098*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.min.ps.256(<8 x float>, <8 x float>) nounwind readnone
1099*9880d681SAndroid Build Coastguard Worker
1100*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_minsd(double %a0, double %a1) {
1101*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minsd
1102*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vminsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
1103*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}"()
1104*9880d681SAndroid Build Coastguard Worker  %2 = fcmp olt double %a0, %a1
1105*9880d681SAndroid Build Coastguard Worker  %3 = select i1 %2, double %a0, double %a1
1106*9880d681SAndroid Build Coastguard Worker  ret double %3
1107*9880d681SAndroid Build Coastguard Worker}
1108*9880d681SAndroid Build Coastguard Worker
1109*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_minsd_int(<2 x double> %a0, <2 x double> %a1) {
1110*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minsd_int
1111*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vminsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1112*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}"()
1113*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %a0, <2 x double> %a1)
1114*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1115*9880d681SAndroid Build Coastguard Worker}
1116*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.sd(<2 x double>, <2 x double>) nounwind readnone
1117*9880d681SAndroid Build Coastguard Worker
1118*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_minss(float %a0, float %a1) {
1119*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minss
1120*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vminss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
1121*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}"()
1122*9880d681SAndroid Build Coastguard Worker  %2 = fcmp olt float %a0, %a1
1123*9880d681SAndroid Build Coastguard Worker  %3 = select i1 %2, float %a0, float %a1
1124*9880d681SAndroid Build Coastguard Worker  ret float %3
1125*9880d681SAndroid Build Coastguard Worker}
1126*9880d681SAndroid Build Coastguard Worker
1127*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_minss_int(<4 x float> %a0, <4 x float> %a1) {
1128*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minss_int
1129*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vminss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1130*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}"()
1131*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.min.ss(<4 x float> %a0, <4 x float> %a1)
1132*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1133*9880d681SAndroid Build Coastguard Worker}
1134*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.min.ss(<4 x float>, <4 x float>) nounwind readnone
1135*9880d681SAndroid Build Coastguard Worker
1136*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_movddup(<2 x double> %a0) {
1137*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movddup
1138*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vmovddup {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1139*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}"()
1140*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x double> %a0, <2 x double> undef, <2 x i32> <i32 0, i32 0>
1141*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1142*9880d681SAndroid Build Coastguard Worker}
1143*9880d681SAndroid Build Coastguard Worker
1144*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_movddup_ymm(<4 x double> %a0) {
1145*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movddup_ymm
1146*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vmovddup {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1147*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}"()
1148*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x double> %a0, <4 x double> undef, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
1149*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
1150*9880d681SAndroid Build Coastguard Worker}
1151*9880d681SAndroid Build Coastguard Worker
1152*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_movhpd (load / store)
1153*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_movhps (load / store)
1154*9880d681SAndroid Build Coastguard Worker
1155*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_movlpd (load / store)
1156*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_movlps (load / store)
1157*9880d681SAndroid Build Coastguard Worker
1158*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_movshdup(<4 x float> %a0) {
1159*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movshdup
1160*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vmovshdup {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1161*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1162*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x float> %a0, <4 x float> undef, <4 x i32> <i32 1, i32 1, i32 3, i32 3>
1163*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1164*9880d681SAndroid Build Coastguard Worker}
1165*9880d681SAndroid Build Coastguard Worker
1166*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_movshdup_ymm(<8 x float> %a0) {
1167*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movshdup_ymm
1168*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vmovshdup {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1169*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}"()
1170*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x float> %a0, <8 x float> undef, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>
1171*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1172*9880d681SAndroid Build Coastguard Worker}
1173*9880d681SAndroid Build Coastguard Worker
1174*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_movsldup(<4 x float> %a0) {
1175*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movsldup
1176*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vmovsldup {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1177*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}"()
1178*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x float> %a0, <4 x float> undef, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
1179*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1180*9880d681SAndroid Build Coastguard Worker}
1181*9880d681SAndroid Build Coastguard Worker
1182*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_movsldup_ymm(<8 x float> %a0) {
1183*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movsldup_ymm
1184*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vmovsldup {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1185*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}"()
1186*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x float> %a0, <8 x float> undef, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
1187*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1188*9880d681SAndroid Build Coastguard Worker}
1189*9880d681SAndroid Build Coastguard Worker
1190*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_mulpd(<2 x double> %a0, <2 x double> %a1) {
1191*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulpd
1192*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmulpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1193*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}"()
1194*9880d681SAndroid Build Coastguard Worker  %2 = fmul <2 x double> %a0, %a1
1195*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1196*9880d681SAndroid Build Coastguard Worker}
1197*9880d681SAndroid Build Coastguard Worker
1198*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_mulpd_ymm(<4 x double> %a0, <4 x double> %a1) {
1199*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulpd_ymm
1200*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmulpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1201*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}"()
1202*9880d681SAndroid Build Coastguard Worker  %2 = fmul <4 x double> %a0, %a1
1203*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
1204*9880d681SAndroid Build Coastguard Worker}
1205*9880d681SAndroid Build Coastguard Worker
1206*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_mulps(<4 x float> %a0, <4 x float> %a1) {
1207*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulps
1208*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmulps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1209*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}"()
1210*9880d681SAndroid Build Coastguard Worker  %2 = fmul <4 x float> %a0, %a1
1211*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1212*9880d681SAndroid Build Coastguard Worker}
1213*9880d681SAndroid Build Coastguard Worker
1214*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_mulps_ymm(<8 x float> %a0, <8 x float> %a1) {
1215*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulps_ymm
1216*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmulps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1217*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}"()
1218*9880d681SAndroid Build Coastguard Worker  %2 = fmul <8 x float> %a0, %a1
1219*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1220*9880d681SAndroid Build Coastguard Worker}
1221*9880d681SAndroid Build Coastguard Worker
1222*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_mulsd(double %a0, double %a1) {
1223*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulsd
1224*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmulsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
1225*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}"()
1226*9880d681SAndroid Build Coastguard Worker  %2 = fmul double %a0, %a1
1227*9880d681SAndroid Build Coastguard Worker  ret double %2
1228*9880d681SAndroid Build Coastguard Worker}
1229*9880d681SAndroid Build Coastguard Worker
1230*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_mulsd_int(<2 x double> %a0, <2 x double> %a1) {
1231*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulsd_int
1232*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmulsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1233*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}"()
1234*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.mul.sd(<2 x double> %a0, <2 x double> %a1)
1235*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1236*9880d681SAndroid Build Coastguard Worker}
1237*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.mul.sd(<2 x double>, <2 x double>) nounwind readnone
1238*9880d681SAndroid Build Coastguard Worker
1239*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_mulss(float %a0, float %a1) {
1240*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulss
1241*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmulss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
1242*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}"()
1243*9880d681SAndroid Build Coastguard Worker  %2 = fmul float %a0, %a1
1244*9880d681SAndroid Build Coastguard Worker  ret float %2
1245*9880d681SAndroid Build Coastguard Worker}
1246*9880d681SAndroid Build Coastguard Worker
1247*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_mulss_int(<4 x float> %a0, <4 x float> %a1) {
1248*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulss_int
1249*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vmulss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1250*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}"()
1251*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.mul.ss(<4 x float> %a0, <4 x float> %a1)
1252*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1253*9880d681SAndroid Build Coastguard Worker}
1254*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.mul.ss(<4 x float>, <4 x float>) nounwind readnone
1255*9880d681SAndroid Build Coastguard Worker
1256*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_orpd(<2 x double> %a0, <2 x double> %a1) {
1257*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_orpd
1258*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vorpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1259*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}"()
1260*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x double> %a0 to <2 x i64>
1261*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x double> %a1 to <2 x i64>
1262*9880d681SAndroid Build Coastguard Worker  %4 = or <2 x i64> %2, %3
1263*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <2 x i64> %4 to <2 x double>
1264*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1265*9880d681SAndroid Build Coastguard Worker  %6 = fadd <2 x double> %5, <double 0x0, double 0x0>
1266*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %6
1267*9880d681SAndroid Build Coastguard Worker}
1268*9880d681SAndroid Build Coastguard Worker
1269*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_orpd_ymm(<4 x double> %a0, <4 x double> %a1) {
1270*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_orpd_ymm
1271*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vorpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1272*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}"()
1273*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x double> %a0 to <4 x i64>
1274*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x double> %a1 to <4 x i64>
1275*9880d681SAndroid Build Coastguard Worker  %4 = or <4 x i64> %2, %3
1276*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <4 x i64> %4 to <4 x double>
1277*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1278*9880d681SAndroid Build Coastguard Worker  %6 = fadd <4 x double> %5, <double 0x0, double 0x0, double 0x0, double 0x0>
1279*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %6
1280*9880d681SAndroid Build Coastguard Worker}
1281*9880d681SAndroid Build Coastguard Worker
1282*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_orps(<4 x float> %a0, <4 x float> %a1) {
1283*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_orps
1284*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vorps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1285*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}"()
1286*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x float> %a0 to <2 x i64>
1287*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x float> %a1 to <2 x i64>
1288*9880d681SAndroid Build Coastguard Worker  %4 = or <2 x i64> %2, %3
1289*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <2 x i64> %4 to <4 x float>
1290*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1291*9880d681SAndroid Build Coastguard Worker  %6 = fadd <4 x float> %5, <float 0x0, float 0x0, float 0x0, float 0x0>
1292*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %6
1293*9880d681SAndroid Build Coastguard Worker}
1294*9880d681SAndroid Build Coastguard Worker
1295*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_orps_ymm(<8 x float> %a0, <8 x float> %a1) {
1296*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_orps_ymm
1297*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vorps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1298*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}"()
1299*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <8 x float> %a0 to <4 x i64>
1300*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <8 x float> %a1 to <4 x i64>
1301*9880d681SAndroid Build Coastguard Worker  %4 = or <4 x i64> %2, %3
1302*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <4 x i64> %4 to <8 x float>
1303*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1304*9880d681SAndroid Build Coastguard Worker  %6 = fadd <8 x float> %5, <float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0>
1305*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %6
1306*9880d681SAndroid Build Coastguard Worker}
1307*9880d681SAndroid Build Coastguard Worker
1308*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_perm2f128(<8 x float> %a0, <8 x float> %a1) {
1309*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_perm2f128
1310*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vperm2f128 $33, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1311*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}"()
1312*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x float> %a0, <8 x float> %a1, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11>
1313*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1314*9880d681SAndroid Build Coastguard Worker}
1315*9880d681SAndroid Build Coastguard Worker
1316*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_permilpd(<2 x double> %a0) {
1317*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_permilpd
1318*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vpermilpd $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1319*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}"()
1320*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x double> %a0, <2 x double> undef, <2 x i32> <i32 1, i32 0>
1321*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1322*9880d681SAndroid Build Coastguard Worker}
1323*9880d681SAndroid Build Coastguard Worker
1324*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_permilpd_ymm(<4 x double> %a0) {
1325*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_permilpd_ymm
1326*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vpermilpd $5, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1327*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}"()
1328*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x double> %a0, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
1329*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
1330*9880d681SAndroid Build Coastguard Worker}
1331*9880d681SAndroid Build Coastguard Worker
1332*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_permilpdvar(<2 x double> %a0, <2 x i64> %a1) {
1333*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_permilpdvar
1334*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpermilpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1335*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}"()
1336*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> %a0, <2 x i64> %a1)
1337*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1338*9880d681SAndroid Build Coastguard Worker}
1339*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double>, <2 x i64>) nounwind readnone
1340*9880d681SAndroid Build Coastguard Worker
1341*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_permilpdvar_ymm(<4 x double> %a0, <4 x i64> %a1) {
1342*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_permilpdvar_ymm
1343*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpermilpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1344*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}"()
1345*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> %a0, <4 x i64> %a1)
1346*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
1347*9880d681SAndroid Build Coastguard Worker}
1348*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double>, <4 x i64>) nounwind readnone
1349*9880d681SAndroid Build Coastguard Worker
1350*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_permilps(<4 x float> %a0) {
1351*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_permilps
1352*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vpermilps $27, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1353*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}"()
1354*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x float> %a0, <4 x float> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
1355*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1356*9880d681SAndroid Build Coastguard Worker}
1357*9880d681SAndroid Build Coastguard Worker
1358*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_permilps_ymm(<8 x float> %a0) {
1359*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_permilps_ymm
1360*9880d681SAndroid Build Coastguard Worker  ;CHECK:   vpermilps $27, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1361*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}"()
1362*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x float> %a0, <8 x float> undef, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
1363*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1364*9880d681SAndroid Build Coastguard Worker}
1365*9880d681SAndroid Build Coastguard Worker
1366*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_permilpsvar(<4 x float> %a0, <4 x i32> %a1) {
1367*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_permilpsvar
1368*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpermilps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1369*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}"()
1370*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> %a0, <4 x i32> %a1)
1371*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1372*9880d681SAndroid Build Coastguard Worker}
1373*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float>, <4 x i32>) nounwind readnone
1374*9880d681SAndroid Build Coastguard Worker
1375*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_permilpsvar_ymm(<8 x float> %a0, <8 x i32> %a1) {
1376*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_permilpsvar_ymm
1377*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vpermilps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1378*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}"()
1379*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float> %a0, <8 x i32> %a1)
1380*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1381*9880d681SAndroid Build Coastguard Worker}
1382*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float>, <8 x i32>) nounwind readnone
1383*9880d681SAndroid Build Coastguard Worker
1384*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_rcpps
1385*9880d681SAndroid Build Coastguard Worker
1386*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_rcpps_int(<4 x float> %a0) {
1387*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_rcpps_int
1388*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vrcpps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1389*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}"()
1390*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.rcp.ps(<4 x float> %a0)
1391*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1392*9880d681SAndroid Build Coastguard Worker}
1393*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rcp.ps(<4 x float>) nounwind readnone
1394*9880d681SAndroid Build Coastguard Worker
1395*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_rcpps_ymm
1396*9880d681SAndroid Build Coastguard Worker
1397*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_rcpps_ymm_int(<8 x float> %a0) {
1398*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_rcpps_ymm_int
1399*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vrcpps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1400*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}"()
1401*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.rcp.ps.256(<8 x float> %a0)
1402*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1403*9880d681SAndroid Build Coastguard Worker}
1404*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.rcp.ps.256(<8 x float>) nounwind readnone
1405*9880d681SAndroid Build Coastguard Worker
1406*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_rcpss
1407*9880d681SAndroid Build Coastguard Worker
1408*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_rcpss_int(<4 x float> %a0) {
1409*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_rcpss_int
1410*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vrcpss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1411*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}"()
1412*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.rcp.ss(<4 x float> %a0)
1413*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1414*9880d681SAndroid Build Coastguard Worker}
1415*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rcp.ss(<4 x float>) nounwind readnone
1416*9880d681SAndroid Build Coastguard Worker
1417*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_roundpd(<2 x double> %a0) {
1418*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_roundpd
1419*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vroundpd $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1420*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}"()
1421*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse41.round.pd(<2 x double> %a0, i32 7)
1422*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1423*9880d681SAndroid Build Coastguard Worker}
1424*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.round.pd(<2 x double>, i32) nounwind readnone
1425*9880d681SAndroid Build Coastguard Worker
1426*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_roundpd_ymm(<4 x double> %a0) {
1427*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_roundpd_ymm
1428*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vroundpd $7, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1429*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}"()
1430*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.avx.round.pd.256(<4 x double> %a0, i32 7)
1431*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
1432*9880d681SAndroid Build Coastguard Worker}
1433*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.round.pd.256(<4 x double>, i32) nounwind readnone
1434*9880d681SAndroid Build Coastguard Worker
1435*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_roundps(<4 x float> %a0) {
1436*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_roundps
1437*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vroundps $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1438*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}"()
1439*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse41.round.ps(<4 x float> %a0, i32 7)
1440*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1441*9880d681SAndroid Build Coastguard Worker}
1442*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.round.ps(<4 x float>, i32) nounwind readnone
1443*9880d681SAndroid Build Coastguard Worker
1444*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_roundps_ymm(<8 x float> %a0) {
1445*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_roundps_ymm
1446*9880d681SAndroid Build Coastguard Worker  ;CHECK:  vroundps $7, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1447*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}"()
1448*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.round.ps.256(<8 x float> %a0, i32 7)
1449*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1450*9880d681SAndroid Build Coastguard Worker}
1451*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.round.ps.256(<8 x float>, i32) nounwind readnone
1452*9880d681SAndroid Build Coastguard Worker
1453*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_roundsd(double %a0) optsize {
1454*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_roundsd
1455*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vroundsd $9, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
1456*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}"()
1457*9880d681SAndroid Build Coastguard Worker  %2 = call double @llvm.floor.f64(double %a0)
1458*9880d681SAndroid Build Coastguard Worker  ret double %2
1459*9880d681SAndroid Build Coastguard Worker}
1460*9880d681SAndroid Build Coastguard Workerdeclare double @llvm.floor.f64(double) nounwind readnone
1461*9880d681SAndroid Build Coastguard Worker
1462*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_roundsd_int
1463*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.round.sd(<2 x double>, <2 x double>, i32) nounwind readnone
1464*9880d681SAndroid Build Coastguard Worker
1465*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_roundss(float %a0) optsize {
1466*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_roundss
1467*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vroundss $9, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
1468*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}"()
1469*9880d681SAndroid Build Coastguard Worker  %2 = call float @llvm.floor.f32(float %a0)
1470*9880d681SAndroid Build Coastguard Worker  ret float %2
1471*9880d681SAndroid Build Coastguard Worker}
1472*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.floor.f32(float) nounwind readnone
1473*9880d681SAndroid Build Coastguard Worker
1474*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_roundss_int
1475*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.round.ss(<4 x float>, <4 x float>, i32) nounwind readnone
1476*9880d681SAndroid Build Coastguard Worker
1477*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_rsqrtps
1478*9880d681SAndroid Build Coastguard Worker
1479*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_rsqrtps_int(<4 x float> %a0) {
1480*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_rsqrtps_int
1481*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vrsqrtps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1482*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}"()
1483*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float> %a0)
1484*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1485*9880d681SAndroid Build Coastguard Worker}
1486*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float>) nounwind readnone
1487*9880d681SAndroid Build Coastguard Worker
1488*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_rsqrtps_ymm
1489*9880d681SAndroid Build Coastguard Worker
1490*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_rsqrtps_ymm_int(<8 x float> %a0) {
1491*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_rsqrtps_ymm_int
1492*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vrsqrtps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1493*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}"()
1494*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.rsqrt.ps.256(<8 x float> %a0)
1495*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1496*9880d681SAndroid Build Coastguard Worker}
1497*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.rsqrt.ps.256(<8 x float>) nounwind readnone
1498*9880d681SAndroid Build Coastguard Worker
1499*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_rsqrtss
1500*9880d681SAndroid Build Coastguard Worker
1501*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_rsqrtss_int(<4 x float> %a0) {
1502*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_rsqrtss_int
1503*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vrsqrtss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1504*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}"()
1505*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float> %a0)
1506*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1507*9880d681SAndroid Build Coastguard Worker}
1508*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float>) nounwind readnone
1509*9880d681SAndroid Build Coastguard Worker
1510*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_shufpd(<2 x double> %a0, <2 x double> %a1) {
1511*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_shufpd
1512*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vshufpd $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1513*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}"()
1514*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 1, i32 2>
1515*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1516*9880d681SAndroid Build Coastguard Worker}
1517*9880d681SAndroid Build Coastguard Worker
1518*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_shufpd_ymm(<4 x double> %a0, <4 x double> %a1) {
1519*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_shufpd_ymm
1520*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vshufpd $5, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1521*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}"()
1522*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x double> %a0, <4 x double> %a1, <4 x i32> <i32 1, i32 4, i32 3, i32 6>
1523*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
1524*9880d681SAndroid Build Coastguard Worker}
1525*9880d681SAndroid Build Coastguard Worker
1526*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_shufps(<4 x float> %a0, <4 x float> %a1) {
1527*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_shufps
1528*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vshufps $200, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1529*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}"()
1530*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x float> %a0, <4 x float> %a1, <4 x i32> <i32 0, i32 2, i32 4, i32 7>
1531*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1532*9880d681SAndroid Build Coastguard Worker}
1533*9880d681SAndroid Build Coastguard Worker
1534*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_shufps_ymm(<8 x float> %a0, <8 x float> %a1) {
1535*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_shufps_ymm
1536*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vshufps $148, {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1537*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}"()
1538*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x float> %a0, <8 x float> %a1, <8 x i32> <i32 0, i32 1, i32 9, i32 10, i32 4, i32 5, i32 13, i32 14>
1539*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1540*9880d681SAndroid Build Coastguard Worker}
1541*9880d681SAndroid Build Coastguard Worker
1542*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_sqrtpd(<2 x double> %a0) {
1543*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_sqrtpd
1544*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsqrtpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1545*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}"()
1546*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double> %a0)
1547*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1548*9880d681SAndroid Build Coastguard Worker}
1549*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double>) nounwind readnone
1550*9880d681SAndroid Build Coastguard Worker
1551*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_sqrtpd_ymm(<4 x double> %a0) {
1552*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_sqrtpd_ymm
1553*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsqrtpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1554*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}"()
1555*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x double> @llvm.x86.avx.sqrt.pd.256(<4 x double> %a0)
1556*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
1557*9880d681SAndroid Build Coastguard Worker}
1558*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.sqrt.pd.256(<4 x double>) nounwind readnone
1559*9880d681SAndroid Build Coastguard Worker
1560*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_sqrtps(<4 x float> %a0) {
1561*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_sqrtps
1562*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsqrtps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1563*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}"()
1564*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float> %a0)
1565*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1566*9880d681SAndroid Build Coastguard Worker}
1567*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float>) nounwind readnone
1568*9880d681SAndroid Build Coastguard Worker
1569*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_sqrtps_ymm(<8 x float> %a0) {
1570*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_sqrtps_ymm
1571*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsqrtps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1572*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}"()
1573*9880d681SAndroid Build Coastguard Worker  %2 = call <8 x float> @llvm.x86.avx.sqrt.ps.256(<8 x float> %a0)
1574*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1575*9880d681SAndroid Build Coastguard Worker}
1576*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.sqrt.ps.256(<8 x float>) nounwind readnone
1577*9880d681SAndroid Build Coastguard Worker
1578*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_sqrtsd(double %a0) {
1579*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_sqrtsd
1580*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsqrtsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
1581*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}"()
1582*9880d681SAndroid Build Coastguard Worker  %2 = call double @llvm.sqrt.f64(double %a0)
1583*9880d681SAndroid Build Coastguard Worker  ret double %2
1584*9880d681SAndroid Build Coastguard Worker}
1585*9880d681SAndroid Build Coastguard Workerdeclare double @llvm.sqrt.f64(double) nounwind readnone
1586*9880d681SAndroid Build Coastguard Worker
1587*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_sqrtsd_int(<2 x double> %a0) {
1588*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_sqrtsd_int
1589*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsqrtsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1590*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}"()
1591*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double> %a0)
1592*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1593*9880d681SAndroid Build Coastguard Worker}
1594*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double>) nounwind readnone
1595*9880d681SAndroid Build Coastguard Worker
1596*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_sqrtss(float %a0) {
1597*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_sqrtss
1598*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsqrtss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
1599*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}"()
1600*9880d681SAndroid Build Coastguard Worker  %2 = call float @llvm.sqrt.f32(float %a0)
1601*9880d681SAndroid Build Coastguard Worker  ret float %2
1602*9880d681SAndroid Build Coastguard Worker}
1603*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.sqrt.f32(float) nounwind readnone
1604*9880d681SAndroid Build Coastguard Worker
1605*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_sqrtss_int(<4 x float> %a0) {
1606*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_sqrtss_int
1607*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsqrtss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1608*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}"()
1609*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float> %a0)
1610*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1611*9880d681SAndroid Build Coastguard Worker}
1612*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float>) nounwind readnone
1613*9880d681SAndroid Build Coastguard Worker
1614*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_subpd(<2 x double> %a0, <2 x double> %a1) {
1615*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subpd
1616*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsubpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1617*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}"()
1618*9880d681SAndroid Build Coastguard Worker  %2 = fsub <2 x double> %a0, %a1
1619*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1620*9880d681SAndroid Build Coastguard Worker}
1621*9880d681SAndroid Build Coastguard Worker
1622*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_subpd_ymm(<4 x double> %a0, <4 x double> %a1) {
1623*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subpd_ymm
1624*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsubpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1625*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}"()
1626*9880d681SAndroid Build Coastguard Worker  %2 = fsub <4 x double> %a0, %a1
1627*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %2
1628*9880d681SAndroid Build Coastguard Worker}
1629*9880d681SAndroid Build Coastguard Worker
1630*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_subps(<4 x float> %a0, <4 x float> %a1) {
1631*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subps
1632*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsubps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1633*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}"()
1634*9880d681SAndroid Build Coastguard Worker  %2 = fsub <4 x float> %a0, %a1
1635*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1636*9880d681SAndroid Build Coastguard Worker}
1637*9880d681SAndroid Build Coastguard Worker
1638*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_subps_ymm(<8 x float> %a0, <8 x float> %a1) {
1639*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subps_ymm
1640*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsubps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1641*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}"()
1642*9880d681SAndroid Build Coastguard Worker  %2 = fsub <8 x float> %a0, %a1
1643*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %2
1644*9880d681SAndroid Build Coastguard Worker}
1645*9880d681SAndroid Build Coastguard Worker
1646*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_subsd(double %a0, double %a1) {
1647*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subsd
1648*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsubsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
1649*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}"()
1650*9880d681SAndroid Build Coastguard Worker  %2 = fsub double %a0, %a1
1651*9880d681SAndroid Build Coastguard Worker  ret double %2
1652*9880d681SAndroid Build Coastguard Worker}
1653*9880d681SAndroid Build Coastguard Worker
1654*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_subsd_int(<2 x double> %a0, <2 x double> %a1) {
1655*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subsd_int
1656*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsubsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1657*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}"()
1658*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.sub.sd(<2 x double> %a0, <2 x double> %a1)
1659*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1660*9880d681SAndroid Build Coastguard Worker}
1661*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sub.sd(<2 x double>, <2 x double>) nounwind readnone
1662*9880d681SAndroid Build Coastguard Worker
1663*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_subss(float %a0, float %a1) {
1664*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subss
1665*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsubss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
1666*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}"()
1667*9880d681SAndroid Build Coastguard Worker  %2 = fsub float %a0, %a1
1668*9880d681SAndroid Build Coastguard Worker  ret float %2
1669*9880d681SAndroid Build Coastguard Worker}
1670*9880d681SAndroid Build Coastguard Worker
1671*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_subss_int(<4 x float> %a0, <4 x float> %a1) {
1672*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subss_int
1673*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vsubss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1674*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}"()
1675*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.sub.ss(<4 x float> %a0, <4 x float> %a1)
1676*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1677*9880d681SAndroid Build Coastguard Worker}
1678*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sub.ss(<4 x float>, <4 x float>) nounwind readnone
1679*9880d681SAndroid Build Coastguard Worker
1680*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_testpd(<2 x double> %a0, <2 x double> %a1) {
1681*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_testpd
1682*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vtestpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1683*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}"()
1684*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.avx.vtestc.pd(<2 x double> %a0, <2 x double> %a1)
1685*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1686*9880d681SAndroid Build Coastguard Worker}
1687*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.pd(<2 x double>, <2 x double>) nounwind readnone
1688*9880d681SAndroid Build Coastguard Worker
1689*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_testpd_ymm(<4 x double> %a0, <4 x double> %a1) {
1690*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_testpd_ymm
1691*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vtestpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1692*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}"()
1693*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.avx.vtestc.pd.256(<4 x double> %a0, <4 x double> %a1)
1694*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1695*9880d681SAndroid Build Coastguard Worker}
1696*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.pd.256(<4 x double>, <4 x double>) nounwind readnone
1697*9880d681SAndroid Build Coastguard Worker
1698*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_testps(<4 x float> %a0, <4 x float> %a1) {
1699*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_testps
1700*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vtestps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1701*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}"()
1702*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.avx.vtestc.ps(<4 x float> %a0, <4 x float> %a1)
1703*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1704*9880d681SAndroid Build Coastguard Worker}
1705*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.ps(<4 x float>, <4 x float>) nounwind readnone
1706*9880d681SAndroid Build Coastguard Worker
1707*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_testps_ymm(<8 x float> %a0, <8 x float> %a1) {
1708*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_testps_ymm
1709*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vtestps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1710*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}"()
1711*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.avx.vtestc.ps.256(<8 x float> %a0, <8 x float> %a1)
1712*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1713*9880d681SAndroid Build Coastguard Worker}
1714*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.ps.256(<8 x float>, <8 x float>) nounwind readnone
1715*9880d681SAndroid Build Coastguard Worker
1716*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_ucomisd(double %a0, double %a1) {
1717*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_ucomisd
1718*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vucomisd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
1719*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}"()
1720*9880d681SAndroid Build Coastguard Worker  %2 = fcmp ueq double %a0, %a1
1721*9880d681SAndroid Build Coastguard Worker  %3 = select i1 %2, i32 1, i32 -1
1722*9880d681SAndroid Build Coastguard Worker  ret i32 %3
1723*9880d681SAndroid Build Coastguard Worker}
1724*9880d681SAndroid Build Coastguard Worker
1725*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_ucomisd_int(<2 x double> %a0, <2 x double> %a1) {
1726*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_ucomisd_int
1727*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vucomisd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1728*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}"()
1729*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %a0, <2 x double> %a1)
1730*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1731*9880d681SAndroid Build Coastguard Worker}
1732*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomieq.sd(<2 x double>, <2 x double>) nounwind readnone
1733*9880d681SAndroid Build Coastguard Worker
1734*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_ucomiss(float %a0, float %a1) {
1735*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_ucomiss
1736*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vucomiss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
1737*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}"()
1738*9880d681SAndroid Build Coastguard Worker  %2 = fcmp ueq float %a0, %a1
1739*9880d681SAndroid Build Coastguard Worker  %3 = select i1 %2, i32 1, i32 -1
1740*9880d681SAndroid Build Coastguard Worker  ret i32 %3
1741*9880d681SAndroid Build Coastguard Worker}
1742*9880d681SAndroid Build Coastguard Worker
1743*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_ucomiss_int(<4 x float> %a0, <4 x float> %a1) {
1744*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_ucomiss_int
1745*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vucomiss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1746*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}"()
1747*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse.ucomieq.ss(<4 x float> %a0, <4 x float> %a1)
1748*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1749*9880d681SAndroid Build Coastguard Worker}
1750*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomieq.ss(<4 x float>, <4 x float>) nounwind readnone
1751*9880d681SAndroid Build Coastguard Worker
1752*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_unpckhpd(<2 x double> %a0, <2 x double> %a1) {
1753*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_unpckhpd
1754*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vunpckhpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1755*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}"()
1756*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 1, i32 3>
1757*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1758*9880d681SAndroid Build Coastguard Worker  %3 = fadd <2 x double> %2, <double 0x0, double 0x0>
1759*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %3
1760*9880d681SAndroid Build Coastguard Worker}
1761*9880d681SAndroid Build Coastguard Worker
1762*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_unpckhpd_ymm(<4 x double> %a0, <4 x double> %a1) {
1763*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_unpckhpd_ymm
1764*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vunpckhpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1765*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}"()
1766*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x double> %a0, <4 x double> %a1, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
1767*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1768*9880d681SAndroid Build Coastguard Worker  %3 = fadd <4 x double> %2, <double 0x0, double 0x0, double 0x0, double 0x0>
1769*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %3
1770*9880d681SAndroid Build Coastguard Worker}
1771*9880d681SAndroid Build Coastguard Worker
1772*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_unpckhps(<4 x float> %a0, <4 x float> %a1) {
1773*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_unpckhps
1774*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vunpckhps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1775*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}"()
1776*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x float> %a0, <4 x float> %a1, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
1777*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1778*9880d681SAndroid Build Coastguard Worker  %3 = fadd <4 x float> %2, <float 0x0, float 0x0, float 0x0, float 0x0>
1779*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %3
1780*9880d681SAndroid Build Coastguard Worker}
1781*9880d681SAndroid Build Coastguard Worker
1782*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_unpckhps_ymm(<8 x float> %a0, <8 x float> %a1) {
1783*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_unpckhps_ymm
1784*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vunpckhps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1785*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}"()
1786*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x float> %a0, <8 x float> %a1, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
1787*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1788*9880d681SAndroid Build Coastguard Worker  %3 = fadd <8 x float> %2, <float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0>
1789*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %3
1790*9880d681SAndroid Build Coastguard Worker}
1791*9880d681SAndroid Build Coastguard Worker
1792*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_unpcklpd(<2 x double> %a0, <2 x double> %a1) {
1793*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_unpcklpd
1794*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vunpcklpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1795*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}"()
1796*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 0, i32 2>
1797*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1798*9880d681SAndroid Build Coastguard Worker  %3 = fadd <2 x double> %2, <double 0x0, double 0x0>
1799*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %3
1800*9880d681SAndroid Build Coastguard Worker}
1801*9880d681SAndroid Build Coastguard Worker
1802*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_unpcklpd_ymm(<4 x double> %a0, <4 x double> %a1) {
1803*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_unpcklpd_ymm
1804*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vunpcklpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1805*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}"()
1806*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x double> %a0, <4 x double> %a1, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
1807*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1808*9880d681SAndroid Build Coastguard Worker  %3 = fadd <4 x double> %2, <double 0x0, double 0x0, double 0x0, double 0x0>
1809*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %3
1810*9880d681SAndroid Build Coastguard Worker}
1811*9880d681SAndroid Build Coastguard Worker
1812*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_unpcklps(<4 x float> %a0, <4 x float> %a1) {
1813*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_unpcklps
1814*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vunpcklps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1815*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}"()
1816*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x float> %a0, <4 x float> %a1, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
1817*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1818*9880d681SAndroid Build Coastguard Worker  %3 = fadd <4 x float> %2, <float 0x0, float 0x0, float 0x0, float 0x0>
1819*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %3
1820*9880d681SAndroid Build Coastguard Worker}
1821*9880d681SAndroid Build Coastguard Worker
1822*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_unpcklps_ymm(<8 x float> %a0, <8 x float> %a1) {
1823*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_unpcklps_ymm
1824*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vunpcklps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1825*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}"()
1826*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <8 x float> %a0, <8 x float> %a1, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
1827*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1828*9880d681SAndroid Build Coastguard Worker  %3 = fadd <8 x float> %2, <float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0>
1829*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %3
1830*9880d681SAndroid Build Coastguard Worker}
1831*9880d681SAndroid Build Coastguard Worker
1832*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_xorpd(<2 x double> %a0, <2 x double> %a1) {
1833*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_xorpd
1834*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vxorpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1835*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}"()
1836*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x double> %a0 to <2 x i64>
1837*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x double> %a1 to <2 x i64>
1838*9880d681SAndroid Build Coastguard Worker  %4 = xor <2 x i64> %2, %3
1839*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <2 x i64> %4 to <2 x double>
1840*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1841*9880d681SAndroid Build Coastguard Worker  %6 = fadd <2 x double> %5, <double 0x0, double 0x0>
1842*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %6
1843*9880d681SAndroid Build Coastguard Worker}
1844*9880d681SAndroid Build Coastguard Worker
1845*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @stack_fold_xorpd_ymm(<4 x double> %a0, <4 x double> %a1) {
1846*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_xorpd_ymm
1847*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vxorpd {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1848*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}"()
1849*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x double> %a0 to <4 x i64>
1850*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x double> %a1 to <4 x i64>
1851*9880d681SAndroid Build Coastguard Worker  %4 = xor <4 x i64> %2, %3
1852*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <4 x i64> %4 to <4 x double>
1853*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1854*9880d681SAndroid Build Coastguard Worker  %6 = fadd <4 x double> %5, <double 0x0, double 0x0, double 0x0, double 0x0>
1855*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %6
1856*9880d681SAndroid Build Coastguard Worker}
1857*9880d681SAndroid Build Coastguard Worker
1858*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_xorps(<4 x float> %a0, <4 x float> %a1) {
1859*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_xorps
1860*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vxorps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1861*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}"()
1862*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x float> %a0 to <2 x i64>
1863*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x float> %a1 to <2 x i64>
1864*9880d681SAndroid Build Coastguard Worker  %4 = xor <2 x i64> %2, %3
1865*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <2 x i64> %4 to <4 x float>
1866*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1867*9880d681SAndroid Build Coastguard Worker  %6 = fadd <4 x float> %5, <float 0x0, float 0x0, float 0x0, float 0x0>
1868*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %6
1869*9880d681SAndroid Build Coastguard Worker}
1870*9880d681SAndroid Build Coastguard Worker
1871*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @stack_fold_xorps_ymm(<8 x float> %a0, <8 x float> %a1) {
1872*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_xorps_ymm
1873*9880d681SAndroid Build Coastguard Worker  ;CHECK:       vxorps {{-?[0-9]*}}(%rsp), {{%ymm[0-9][0-9]*}}, {{%ymm[0-9][0-9]*}} {{.*#+}} 32-byte Folded Reload
1874*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}"()
1875*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <8 x float> %a0 to <4 x i64>
1876*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <8 x float> %a1 to <4 x i64>
1877*9880d681SAndroid Build Coastguard Worker  %4 = xor <4 x i64> %2, %3
1878*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <4 x i64> %4 to <8 x float>
1879*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1880*9880d681SAndroid Build Coastguard Worker  %6 = fadd <8 x float> %5, <float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0, float 0x0>
1881*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %6
1882*9880d681SAndroid Build Coastguard Worker}
1883