xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/stack-folding-fp-sse42.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O3 -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+sse4.2 < %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:       addpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
14*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
15*9880d681SAndroid Build Coastguard Worker  %2 = 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 float> @stack_fold_addps(<4 x float> %a0, <4 x float> %a1) {
20*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addps
21*9880d681SAndroid Build Coastguard Worker  ;CHECK:       addps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-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 float> %a0, %a1
24*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_addsd(double %a0, double %a1) {
28*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addsd
29*9880d681SAndroid Build Coastguard Worker  ;CHECK:       addsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-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 double %a0, %a1
32*9880d681SAndroid Build Coastguard Worker  ret double %2
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_addsd_int(<2 x double> %a0, <2 x double> %a1) {
36*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addsd_int
37*9880d681SAndroid Build Coastguard Worker  ;CHECK:       addsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-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 = call <2 x double> @llvm.x86.sse2.add.sd(<2 x double> %a0, <2 x double> %a1)
40*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
41*9880d681SAndroid Build Coastguard Worker}
42*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.add.sd(<2 x double>, <2 x double>) nounwind readnone
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_addss(float %a0, float %a1) {
45*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addss
46*9880d681SAndroid Build Coastguard Worker  ;CHECK:       addss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
47*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
48*9880d681SAndroid Build Coastguard Worker  %2 = fadd float %a0, %a1
49*9880d681SAndroid Build Coastguard Worker  ret float %2
50*9880d681SAndroid Build Coastguard Worker}
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_addss_int(<4 x float> %a0, <4 x float> %a1) {
53*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addss_int
54*9880d681SAndroid Build Coastguard Worker  ;CHECK:       addss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
55*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
56*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.add.ss(<4 x float> %a0, <4 x float> %a1)
57*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
58*9880d681SAndroid Build Coastguard Worker}
59*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.add.ss(<4 x float>, <4 x float>) nounwind readnone
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_addsubpd(<2 x double> %a0, <2 x double> %a1) {
62*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addsubpd
63*9880d681SAndroid Build Coastguard Worker  ;CHECK:       addsubpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
64*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
65*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse3.addsub.pd(<2 x double> %a0, <2 x double> %a1)
66*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
67*9880d681SAndroid Build Coastguard Worker}
68*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse3.addsub.pd(<2 x double>, <2 x double>) nounwind readnone
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_addsubps(<4 x float> %a0, <4 x float> %a1) {
71*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_addsubps
72*9880d681SAndroid Build Coastguard Worker  ;CHECK:       addsubps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
73*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
74*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse3.addsub.ps(<4 x float> %a0, <4 x float> %a1)
75*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
76*9880d681SAndroid Build Coastguard Worker}
77*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse3.addsub.ps(<4 x float>, <4 x float>) nounwind readnone
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_andnpd(<2 x double> %a0, <2 x double> %a1) {
80*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_andnpd
81*9880d681SAndroid Build Coastguard Worker  ;CHECK:       andnpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
82*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
83*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x double> %a0 to <2 x i64>
84*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x double> %a1 to <2 x i64>
85*9880d681SAndroid Build Coastguard Worker  %4 = xor <2 x i64> %2, <i64 -1, i64 -1>
86*9880d681SAndroid Build Coastguard Worker  %5 = and <2 x i64> %4, %3
87*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <2 x i64> %5 to <2 x double>
88*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
89*9880d681SAndroid Build Coastguard Worker  %7 = fadd <2 x double> %6, <double 0x0, double 0x0>
90*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %7
91*9880d681SAndroid Build Coastguard Worker}
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_andnps(<4 x float> %a0, <4 x float> %a1) {
94*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_andnps
95*9880d681SAndroid Build Coastguard Worker  ;CHECK:       andnps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
96*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
97*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x float> %a0 to <2 x i64>
98*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x float> %a1 to <2 x i64>
99*9880d681SAndroid Build Coastguard Worker  %4 = xor <2 x i64> %2, <i64 -1, i64 -1>
100*9880d681SAndroid Build Coastguard Worker  %5 = and <2 x i64> %4, %3
101*9880d681SAndroid Build Coastguard Worker  %6 = bitcast <2 x i64> %5 to <4 x float>
102*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
103*9880d681SAndroid Build Coastguard Worker  %7 = fadd <4 x float> %6, <float 0x0, float 0x0, float 0x0, float 0x0>
104*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %7
105*9880d681SAndroid Build Coastguard Worker}
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_andpd(<2 x double> %a0, <2 x double> %a1) {
108*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_andpd
109*9880d681SAndroid Build Coastguard Worker  ;CHECK:       andpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
110*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
111*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x double> %a0 to <2 x i64>
112*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x double> %a1 to <2 x i64>
113*9880d681SAndroid Build Coastguard Worker  %4 = and <2 x i64> %2, %3
114*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <2 x i64> %4 to <2 x double>
115*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
116*9880d681SAndroid Build Coastguard Worker  %6 = fadd <2 x double> %5, <double 0x0, double 0x0>
117*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %6
118*9880d681SAndroid Build Coastguard Worker}
119*9880d681SAndroid Build Coastguard Worker
120*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_andps(<4 x float> %a0, <4 x float> %a1) {
121*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_andps
122*9880d681SAndroid Build Coastguard Worker  ;CHECK:       andps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
123*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
124*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x float> %a0 to <2 x i64>
125*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x float> %a1 to <2 x i64>
126*9880d681SAndroid Build Coastguard Worker  %4 = and <2 x i64> %2, %3
127*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <2 x i64> %4 to <4 x float>
128*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
129*9880d681SAndroid Build Coastguard Worker  %6 = fadd <4 x float> %5, <float 0x0, float 0x0, float 0x0, float 0x0>
130*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %6
131*9880d681SAndroid Build Coastguard Worker}
132*9880d681SAndroid Build Coastguard Worker
133*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_blendpd(<2 x double> %a0, <2 x double> %a1) {
134*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_blendpd
135*9880d681SAndroid Build Coastguard Worker  ;CHECK:       blendpd $2, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
136*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
137*9880d681SAndroid Build Coastguard Worker  %2 = select <2 x i1> <i1 1, i1 0>, <2 x double> %a0, <2 x double> %a1
138*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
139*9880d681SAndroid Build Coastguard Worker}
140*9880d681SAndroid Build Coastguard Worker
141*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_blendps(<4 x float> %a0, <4 x float> %a1) {
142*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_blendps
143*9880d681SAndroid Build Coastguard Worker  ;CHECK:       blendps $6, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
144*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
145*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
146*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
147*9880d681SAndroid Build Coastguard Worker}
148*9880d681SAndroid Build Coastguard Worker
149*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %c) {
150*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_blendvpd
151*9880d681SAndroid Build Coastguard Worker  ;CHECK:       blendvpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
152*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}"()
153*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)
154*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
155*9880d681SAndroid Build Coastguard Worker}
156*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.blendvpd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone
157*9880d681SAndroid Build Coastguard Worker
158*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %c) {
159*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_blendvps
160*9880d681SAndroid Build Coastguard Worker  ;CHECK:       blendvps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
161*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}"()
162*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)
163*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
164*9880d681SAndroid Build Coastguard Worker}
165*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.blendvps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
166*9880d681SAndroid Build Coastguard Worker
167*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cmppd(<2 x double> %a0, <2 x double> %a1) {
168*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmppd
169*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cmpeqpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
170*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
171*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 0)
172*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
173*9880d681SAndroid Build Coastguard Worker}
174*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double>, <2 x double>, i8) nounwind readnone
175*9880d681SAndroid Build Coastguard Worker
176*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cmpps(<4 x float> %a0, <4 x float> %a1) {
177*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmpps
178*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cmpeqps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
179*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
180*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 0)
181*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
182*9880d681SAndroid Build Coastguard Worker}
183*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ps(<4 x float>, <4 x float>, i8) nounwind readnone
184*9880d681SAndroid Build Coastguard Worker
185*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cmpsd(double %a0, double %a1) {
186*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmpsd
187*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cmpeqsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
188*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
189*9880d681SAndroid Build Coastguard Worker  %2 = fcmp oeq double %a0, %a1
190*9880d681SAndroid Build Coastguard Worker  %3 = zext i1 %2 to i32
191*9880d681SAndroid Build Coastguard Worker  ret i32 %3
192*9880d681SAndroid Build Coastguard Worker}
193*9880d681SAndroid Build Coastguard Worker
194*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cmpsd_int(<2 x double> %a0, <2 x double> %a1) {
195*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmpsd_int
196*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cmpeqsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
197*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
198*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 0)
199*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
200*9880d681SAndroid Build Coastguard Worker}
201*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double>, <2 x double>, i8) nounwind readnone
202*9880d681SAndroid Build Coastguard Worker
203*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cmpss(float %a0, float %a1) {
204*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmpss
205*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cmpeqss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
206*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
207*9880d681SAndroid Build Coastguard Worker  %2 = fcmp oeq float %a0, %a1
208*9880d681SAndroid Build Coastguard Worker  %3 = zext i1 %2 to i32
209*9880d681SAndroid Build Coastguard Worker  ret i32 %3
210*9880d681SAndroid Build Coastguard Worker}
211*9880d681SAndroid Build Coastguard Worker
212*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cmpss_int(<4 x float> %a0, <4 x float> %a1) {
213*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cmpss_int
214*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cmpeqss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
215*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
216*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.cmp.ss(<4 x float> %a0, <4 x float> %a1, i8 0)
217*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
218*9880d681SAndroid Build Coastguard Worker}
219*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ss(<4 x float>, <4 x float>, i8) nounwind readnone
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_comisd
222*9880d681SAndroid Build Coastguard Worker
223*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_comisd_int(<2 x double> %a0, <2 x double> %a1) {
224*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_comisd_int
225*9880d681SAndroid Build Coastguard Worker  ;CHECK:       comisd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
226*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
227*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %a0, <2 x double> %a1)
228*9880d681SAndroid Build Coastguard Worker  ret i32 %2
229*9880d681SAndroid Build Coastguard Worker}
230*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comieq.sd(<2 x double>, <2 x double>) nounwind readnone
231*9880d681SAndroid Build Coastguard Worker
232*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_comiss
233*9880d681SAndroid Build Coastguard Worker
234*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_comiss_int(<4 x float> %a0, <4 x float> %a1) {
235*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_comiss_int
236*9880d681SAndroid Build Coastguard Worker  ;CHECK:       comiss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
237*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
238*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse.comieq.ss(<4 x float> %a0, <4 x float> %a1)
239*9880d681SAndroid Build Coastguard Worker  ret i32 %2
240*9880d681SAndroid Build Coastguard Worker}
241*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comieq.ss(<4 x float>, <4 x float>) nounwind readnone
242*9880d681SAndroid Build Coastguard Worker
243*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtdq2pd(<4 x i32> %a0) {
244*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtdq2pd
245*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtdq2pd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
246*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}"()
247*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x i32> %a0, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
248*9880d681SAndroid Build Coastguard Worker  %3 = sitofp <2 x i32> %2 to <2 x double>
249*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %3
250*9880d681SAndroid Build Coastguard Worker}
251*9880d681SAndroid Build Coastguard Worker
252*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtdq2pd_int(<4 x i32> %a0) {
253*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtdq2pd_int
254*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtdq2pd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
255*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}"()
256*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cvtdq2pd(<4 x i32> %a0)
257*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
258*9880d681SAndroid Build Coastguard Worker}
259*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtdq2pd(<4 x i32>) nounwind readnone
260*9880d681SAndroid Build Coastguard Worker
261*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cvtdq2ps(<4 x i32> %a0) {
262*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtdq2ps
263*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtdq2ps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
264*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}"()
265*9880d681SAndroid Build Coastguard Worker  %2 = sitofp <4 x i32> %a0 to <4 x float>
266*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
267*9880d681SAndroid Build Coastguard Worker}
268*9880d681SAndroid Build Coastguard Worker
269*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_cvtpd2dq(<2 x double> %a0) {
270*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtpd2dq
271*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtpd2dq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
272*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
273*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double> %a0)
274*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
275*9880d681SAndroid Build Coastguard Worker}
276*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double>) nounwind readnone
277*9880d681SAndroid Build Coastguard Worker
278*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @stack_fold_cvtpd2ps(<2 x double> %a0) {
279*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtpd2ps
280*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtpd2ps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
281*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
282*9880d681SAndroid Build Coastguard Worker  %2 = fptrunc <2 x double> %a0 to <2 x float>
283*9880d681SAndroid Build Coastguard Worker  ret <2 x float> %2
284*9880d681SAndroid Build Coastguard Worker}
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_cvtps2dq(<4 x float> %a0) {
287*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtps2dq
288*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtps2dq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
289*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}"()
290*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %a0)
291*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
292*9880d681SAndroid Build Coastguard Worker}
293*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float>) nounwind readnone
294*9880d681SAndroid Build Coastguard Worker
295*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtps2pd(<4 x float> %a0) {
296*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtps2pd
297*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtps2pd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
298*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}"()
299*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <4 x float> %a0, <4 x float> undef, <2 x i32> <i32 0, i32 1>
300*9880d681SAndroid Build Coastguard Worker  %3 = fpext <2 x float> %2 to <2 x double>
301*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %3
302*9880d681SAndroid Build Coastguard Worker}
303*9880d681SAndroid Build Coastguard Worker
304*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtps2pd_int(<4 x float> %a0) {
305*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtps2pd_int
306*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtps2pd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
307*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}"()
308*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cvtps2pd(<4 x float> %a0)
309*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
310*9880d681SAndroid Build Coastguard Worker}
311*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtps2pd(<4 x float>) nounwind readnone
312*9880d681SAndroid Build Coastguard Worker
313*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_cvtsd2si
314*9880d681SAndroid Build Coastguard Worker
315*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cvtsd2si_int(<2 x double> %a0) {
316*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsd2si_int
317*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtsd2si {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 16-byte Folded Reload
318*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}"()
319*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %a0)
320*9880d681SAndroid Build Coastguard Worker  ret i32 %2
321*9880d681SAndroid Build Coastguard Worker}
322*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvtsd2si(<2 x double>) nounwind readnone
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_cvtsd2si64
325*9880d681SAndroid Build Coastguard Worker
326*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_cvtsd2si64_int(<2 x double> %a0) {
327*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsd2si64_int
328*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtsd2si {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 16-byte Folded Reload
329*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}"()
330*9880d681SAndroid Build Coastguard Worker  %2 = call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %a0)
331*9880d681SAndroid Build Coastguard Worker  ret i64 %2
332*9880d681SAndroid Build Coastguard Worker}
333*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse2.cvtsd2si64(<2 x double>) nounwind readnone
334*9880d681SAndroid Build Coastguard Worker
335*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_cvtsd2ss(double %a0) minsize {
336*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsd2ss
337*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtsd2ss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
338*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}"()
339*9880d681SAndroid Build Coastguard Worker  %2 = fptrunc double %a0 to float
340*9880d681SAndroid Build Coastguard Worker  ret float %2
341*9880d681SAndroid Build Coastguard Worker}
342*9880d681SAndroid Build Coastguard Worker
343*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cvtsd2ss_int(<2 x double> %a0) optsize {
344*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsd2ss_int
345*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtsd2ss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
346*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}"()
347*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)
348*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
349*9880d681SAndroid Build Coastguard Worker}
350*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float>, <2 x double>) nounwind readnone
351*9880d681SAndroid Build Coastguard Worker
352*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_cvtsi2sd(i32 %a0) minsize {
353*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi2sd
354*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtsi2sdl {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
355*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}"()
356*9880d681SAndroid Build Coastguard Worker  %2 = sitofp i32 %a0 to double
357*9880d681SAndroid Build Coastguard Worker  ret double %2
358*9880d681SAndroid Build Coastguard Worker}
359*9880d681SAndroid Build Coastguard Worker
360*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtsi2sd_int(i32 %a0) {
361*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi2sd_int
362*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtsi2sdl {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
363*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}"()
364*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double> <double 0x0, double 0x0>, i32 %a0)
365*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
366*9880d681SAndroid Build Coastguard Worker}
367*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double>, i32) nounwind readnone
368*9880d681SAndroid Build Coastguard Worker
369*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_cvtsi642sd(i64 %a0) optsize {
370*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi642sd
371*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtsi2sdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
372*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}"()
373*9880d681SAndroid Build Coastguard Worker  %2 = sitofp i64 %a0 to double
374*9880d681SAndroid Build Coastguard Worker  ret double %2
375*9880d681SAndroid Build Coastguard Worker}
376*9880d681SAndroid Build Coastguard Worker
377*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtsi642sd_int(i64 %a0) {
378*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi642sd_int
379*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtsi2sdq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
380*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}"()
381*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cvtsi642sd(<2 x double> <double 0x0, double 0x0>, i64 %a0)
382*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
383*9880d681SAndroid Build Coastguard Worker}
384*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtsi642sd(<2 x double>, i64) nounwind readnone
385*9880d681SAndroid Build Coastguard Worker
386*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_cvtsi2ss(i32 %a0) minsize {
387*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi2ss
388*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtsi2ssl {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
389*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}"()
390*9880d681SAndroid Build Coastguard Worker  %2 = sitofp i32 %a0 to float
391*9880d681SAndroid Build Coastguard Worker  ret float %2
392*9880d681SAndroid Build Coastguard Worker}
393*9880d681SAndroid Build Coastguard Worker
394*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cvtsi2ss_int(i32 %a0) {
395*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi2ss_int
396*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsi2ssl {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
397*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}"()
398*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)
399*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
400*9880d681SAndroid Build Coastguard Worker}
401*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float>, i32) nounwind readnone
402*9880d681SAndroid Build Coastguard Worker
403*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_cvtsi642ss(i64 %a0) optsize {
404*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi642ss
405*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtsi2ssq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
406*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}"()
407*9880d681SAndroid Build Coastguard Worker  %2 = sitofp i64 %a0 to float
408*9880d681SAndroid Build Coastguard Worker  ret float %2
409*9880d681SAndroid Build Coastguard Worker}
410*9880d681SAndroid Build Coastguard Worker
411*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_cvtsi642ss_int(i64 %a0) {
412*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtsi642ss_int
413*9880d681SAndroid Build Coastguard Worker  ;CHECK:  cvtsi2ssq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
414*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}"()
415*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)
416*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
417*9880d681SAndroid Build Coastguard Worker}
418*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cvtsi642ss(<4 x float>, i64) nounwind readnone
419*9880d681SAndroid Build Coastguard Worker
420*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_cvtss2sd(float %a0) minsize {
421*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtss2sd
422*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtss2sd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
423*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}"()
424*9880d681SAndroid Build Coastguard Worker  %2 = fpext float %a0 to double
425*9880d681SAndroid Build Coastguard Worker  ret double %2
426*9880d681SAndroid Build Coastguard Worker}
427*9880d681SAndroid Build Coastguard Worker
428*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_cvtss2sd_int(<4 x float> %a0) optsize {
429*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtss2sd_int
430*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtss2sd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
431*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}"()
432*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.cvtss2sd(<2 x double> <double 0x0, double 0x0>, <4 x float> %a0)
433*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
434*9880d681SAndroid Build Coastguard Worker}
435*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtss2sd(<2 x double>, <4 x float>) nounwind readnone
436*9880d681SAndroid Build Coastguard Worker
437*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_cvtss2si
438*9880d681SAndroid Build Coastguard Worker
439*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cvtss2si_int(<4 x float> %a0) {
440*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtss2si_int
441*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtss2si {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 16-byte Folded Reload
442*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}"()
443*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse.cvtss2si(<4 x float> %a0)
444*9880d681SAndroid Build Coastguard Worker  ret i32 %2
445*9880d681SAndroid Build Coastguard Worker}
446*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvtss2si(<4 x float>) nounwind readnone
447*9880d681SAndroid Build Coastguard Worker
448*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_cvtss2si64
449*9880d681SAndroid Build Coastguard Worker
450*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_cvtss2si64_int(<4 x float> %a0) {
451*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvtss2si64_int
452*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvtss2si {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 16-byte Folded Reload
453*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}"()
454*9880d681SAndroid Build Coastguard Worker  %2 = call i64 @llvm.x86.sse.cvtss2si64(<4 x float> %a0)
455*9880d681SAndroid Build Coastguard Worker  ret i64 %2
456*9880d681SAndroid Build Coastguard Worker}
457*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse.cvtss2si64(<4 x float>) nounwind readnone
458*9880d681SAndroid Build Coastguard Worker
459*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_cvttpd2dq(<2 x double> %a0) {
460*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttpd2dq
461*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvttpd2dq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-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 = call <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double> %a0)
464*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
465*9880d681SAndroid Build Coastguard Worker}
466*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double>) nounwind readnone
467*9880d681SAndroid Build Coastguard Worker
468*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @stack_fold_cvttps2dq(<4 x float> %a0) {
469*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttps2dq
470*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvttps2dq {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
471*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}"()
472*9880d681SAndroid Build Coastguard Worker  %2 = fptosi <4 x float> %a0 to <4 x i32>
473*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %2
474*9880d681SAndroid Build Coastguard Worker}
475*9880d681SAndroid Build Coastguard Worker
476*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cvttsd2si(double %a0) {
477*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttsd2si
478*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvttsd2si {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 8-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 = fptosi double %a0 to i32
481*9880d681SAndroid Build Coastguard Worker  ret i32 %2
482*9880d681SAndroid Build Coastguard Worker}
483*9880d681SAndroid Build Coastguard Worker
484*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cvttsd2si_int(<2 x double> %a0) {
485*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttsd2si_int
486*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvttsd2si {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 16-byte Folded Reload
487*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}"()
488*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse2.cvttsd2si(<2 x double> %a0)
489*9880d681SAndroid Build Coastguard Worker  ret i32 %2
490*9880d681SAndroid Build Coastguard Worker}
491*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvttsd2si(<2 x double>) nounwind readnone
492*9880d681SAndroid Build Coastguard Worker
493*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_cvttsd2si64(double %a0) {
494*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttsd2si64
495*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvttsd2si {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 8-byte Folded Reload
496*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}"()
497*9880d681SAndroid Build Coastguard Worker  %2 = fptosi double %a0 to i64
498*9880d681SAndroid Build Coastguard Worker  ret i64 %2
499*9880d681SAndroid Build Coastguard Worker}
500*9880d681SAndroid Build Coastguard Worker
501*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_cvttsd2si64_int(<2 x double> %a0) {
502*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttsd2si64_int
503*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvttsd2si {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 16-byte Folded Reload
504*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}"()
505*9880d681SAndroid Build Coastguard Worker  %2 = call i64 @llvm.x86.sse2.cvttsd2si64(<2 x double> %a0)
506*9880d681SAndroid Build Coastguard Worker  ret i64 %2
507*9880d681SAndroid Build Coastguard Worker}
508*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse2.cvttsd2si64(<2 x double>) nounwind readnone
509*9880d681SAndroid Build Coastguard Worker
510*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cvttss2si(float %a0) {
511*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttss2si
512*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvttss2si {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 4-byte Folded Reload
513*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}"()
514*9880d681SAndroid Build Coastguard Worker  %2 = fptosi float %a0 to i32
515*9880d681SAndroid Build Coastguard Worker  ret i32 %2
516*9880d681SAndroid Build Coastguard Worker}
517*9880d681SAndroid Build Coastguard Worker
518*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_cvttss2si_int(<4 x float> %a0) {
519*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttss2si_int
520*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvttss2si {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 16-byte Folded Reload
521*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}"()
522*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse.cvttss2si(<4 x float> %a0)
523*9880d681SAndroid Build Coastguard Worker  ret i32 %2
524*9880d681SAndroid Build Coastguard Worker}
525*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvttss2si(<4 x float>) nounwind readnone
526*9880d681SAndroid Build Coastguard Worker
527*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_cvttss2si64(float %a0) {
528*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttss2si64
529*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvttss2si {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 4-byte Folded Reload
530*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}"()
531*9880d681SAndroid Build Coastguard Worker  %2 = fptosi float %a0 to i64
532*9880d681SAndroid Build Coastguard Worker  ret i64 %2
533*9880d681SAndroid Build Coastguard Worker}
534*9880d681SAndroid Build Coastguard Worker
535*9880d681SAndroid Build Coastguard Workerdefine i64 @stack_fold_cvttss2si64_int(<4 x float> %a0) {
536*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_cvttss2si64_int
537*9880d681SAndroid Build Coastguard Worker  ;CHECK:       cvttss2si {{-?[0-9]*}}(%rsp), %rax {{.*#+}} 16-byte Folded Reload
538*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}"()
539*9880d681SAndroid Build Coastguard Worker  %2 = call i64 @llvm.x86.sse.cvttss2si64(<4 x float> %a0)
540*9880d681SAndroid Build Coastguard Worker  ret i64 %2
541*9880d681SAndroid Build Coastguard Worker}
542*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse.cvttss2si64(<4 x float>) nounwind readnone
543*9880d681SAndroid Build Coastguard Worker
544*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_divpd(<2 x double> %a0, <2 x double> %a1) {
545*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divpd
546*9880d681SAndroid Build Coastguard Worker  ;CHECK:       divpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
547*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
548*9880d681SAndroid Build Coastguard Worker  %2 = fdiv <2 x double> %a0, %a1
549*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
550*9880d681SAndroid Build Coastguard Worker}
551*9880d681SAndroid Build Coastguard Worker
552*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_divps(<4 x float> %a0, <4 x float> %a1) {
553*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divps
554*9880d681SAndroid Build Coastguard Worker  ;CHECK:       divps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
555*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
556*9880d681SAndroid Build Coastguard Worker  %2 = fdiv <4 x float> %a0, %a1
557*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
558*9880d681SAndroid Build Coastguard Worker}
559*9880d681SAndroid Build Coastguard Worker
560*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_divsd(double %a0, double %a1) {
561*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divsd
562*9880d681SAndroid Build Coastguard Worker  ;CHECK:       divsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
563*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
564*9880d681SAndroid Build Coastguard Worker  %2 = fdiv double %a0, %a1
565*9880d681SAndroid Build Coastguard Worker  ret double %2
566*9880d681SAndroid Build Coastguard Worker}
567*9880d681SAndroid Build Coastguard Worker
568*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_divsd_int(<2 x double> %a0, <2 x double> %a1) {
569*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divsd_int
570*9880d681SAndroid Build Coastguard Worker  ;CHECK:       divsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
571*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
572*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.div.sd(<2 x double> %a0, <2 x double> %a1)
573*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
574*9880d681SAndroid Build Coastguard Worker}
575*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.div.sd(<2 x double>, <2 x double>) nounwind readnone
576*9880d681SAndroid Build Coastguard Worker
577*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_divss(float %a0, float %a1) {
578*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divss
579*9880d681SAndroid Build Coastguard Worker  ;CHECK:       divss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
580*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
581*9880d681SAndroid Build Coastguard Worker  %2 = fdiv float %a0, %a1
582*9880d681SAndroid Build Coastguard Worker  ret float %2
583*9880d681SAndroid Build Coastguard Worker}
584*9880d681SAndroid Build Coastguard Worker
585*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_divss_int(<4 x float> %a0, <4 x float> %a1) {
586*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_divss_int
587*9880d681SAndroid Build Coastguard Worker  ;CHECK:       divss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
588*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
589*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.div.ss(<4 x float> %a0, <4 x float> %a1)
590*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
591*9880d681SAndroid Build Coastguard Worker}
592*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.div.ss(<4 x float>, <4 x float>) nounwind readnone
593*9880d681SAndroid Build Coastguard Worker
594*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_dppd(<2 x double> %a0, <2 x double> %a1) {
595*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_dppd
596*9880d681SAndroid Build Coastguard Worker  ;CHECK:       dppd $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
597*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
598*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse41.dppd(<2 x double> %a0, <2 x double> %a1, i8 7)
599*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
600*9880d681SAndroid Build Coastguard Worker}
601*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.dppd(<2 x double>, <2 x double>, i8) nounwind readnone
602*9880d681SAndroid Build Coastguard Worker
603*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_dpps(<4 x float> %a0, <4 x float> %a1) {
604*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_dpps
605*9880d681SAndroid Build Coastguard Worker  ;CHECK:       dpps $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
606*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
607*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse41.dpps(<4 x float> %a0, <4 x float> %a1, i8 7)
608*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
609*9880d681SAndroid Build Coastguard Worker}
610*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.dpps(<4 x float>, <4 x float>, i8) nounwind readnone
611*9880d681SAndroid Build Coastguard Worker
612*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_extractps(<4 x float> %a0) {
613*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_extractps
614*9880d681SAndroid Build Coastguard Worker  ;CHECK:       extractps $1, {{%xmm[0-9][0-9]*}}, {{-?[0-9]*}}(%rsp) {{.*#+}} 4-byte Folded Spill
615*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movl    {{-?[0-9]*}}(%rsp), %eax {{.*#+}} 4-byte Reload
616*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <4 x float> %a0, i32 1
617*9880d681SAndroid Build Coastguard Worker  %2 = bitcast float %1 to i32
618*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}"()
619*9880d681SAndroid Build Coastguard Worker  ret i32 %2
620*9880d681SAndroid Build Coastguard Worker}
621*9880d681SAndroid Build Coastguard Worker
622*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_haddpd(<2 x double> %a0, <2 x double> %a1) {
623*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_haddpd
624*9880d681SAndroid Build Coastguard Worker  ;CHECK:       haddpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
625*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
626*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse3.hadd.pd(<2 x double> %a0, <2 x double> %a1)
627*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
628*9880d681SAndroid Build Coastguard Worker}
629*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse3.hadd.pd(<2 x double>, <2 x double>) nounwind readnone
630*9880d681SAndroid Build Coastguard Worker
631*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_haddps(<4 x float> %a0, <4 x float> %a1) {
632*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_haddps
633*9880d681SAndroid Build Coastguard Worker  ;CHECK:       haddps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
634*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
635*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse3.hadd.ps(<4 x float> %a0, <4 x float> %a1)
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.sse3.hadd.ps(<4 x float>, <4 x float>) nounwind readnone
639*9880d681SAndroid Build Coastguard Worker
640*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_hsubpd(<2 x double> %a0, <2 x double> %a1) {
641*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_hsubpd
642*9880d681SAndroid Build Coastguard Worker  ;CHECK:       hsubpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
643*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
644*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse3.hsub.pd(<2 x double> %a0, <2 x double> %a1)
645*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
646*9880d681SAndroid Build Coastguard Worker}
647*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse3.hsub.pd(<2 x double>, <2 x double>) nounwind readnone
648*9880d681SAndroid Build Coastguard Worker
649*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_hsubps(<4 x float> %a0, <4 x float> %a1) {
650*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_hsubps
651*9880d681SAndroid Build Coastguard Worker  ;CHECK:       hsubps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
652*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
653*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse3.hsub.ps(<4 x float> %a0, <4 x float> %a1)
654*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
655*9880d681SAndroid Build Coastguard Worker}
656*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse3.hsub.ps(<4 x float>, <4 x float>) nounwind readnone
657*9880d681SAndroid Build Coastguard Worker
658*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_insertps(<4 x float> %a0, <4 x float> %a1) {
659*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_insertps
660*9880d681SAndroid Build Coastguard Worker  ;CHECK:       insertps $17, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
661*9880d681SAndroid Build Coastguard Worker  ;CHECK-NEXT:                                                        {{.*#+}} xmm0 = zero,mem[0],xmm0[2,3]
662*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
663*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %a0, <4 x float> %a1, i8 209)
664*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
665*9880d681SAndroid Build Coastguard Worker}
666*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.insertps(<4 x float>, <4 x float>, i8) nounwind readnone
667*9880d681SAndroid Build Coastguard Worker
668*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_maxpd(<2 x double> %a0, <2 x double> %a1) {
669*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxpd
670*9880d681SAndroid Build Coastguard Worker  ;CHECK:       maxpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
671*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
672*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.max.pd(<2 x double> %a0, <2 x double> %a1)
673*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
674*9880d681SAndroid Build Coastguard Worker}
675*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.pd(<2 x double>, <2 x double>) nounwind readnone
676*9880d681SAndroid Build Coastguard Worker
677*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_maxps(<4 x float> %a0, <4 x float> %a1) {
678*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxps
679*9880d681SAndroid Build Coastguard Worker  ;CHECK:       maxps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
680*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
681*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %a0, <4 x float> %a1)
682*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
683*9880d681SAndroid Build Coastguard Worker}
684*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.max.ps(<4 x float>, <4 x float>) nounwind readnone
685*9880d681SAndroid Build Coastguard Worker
686*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_maxsd(double %a0, double %a1) {
687*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxsd
688*9880d681SAndroid Build Coastguard Worker  ;CHECK:       maxsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
689*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
690*9880d681SAndroid Build Coastguard Worker  %2 = fcmp ogt double %a0, %a1
691*9880d681SAndroid Build Coastguard Worker  %3 = select i1 %2, double %a0, double %a1
692*9880d681SAndroid Build Coastguard Worker  ret double %3
693*9880d681SAndroid Build Coastguard Worker}
694*9880d681SAndroid Build Coastguard Worker
695*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_maxsd_int(<2 x double> %a0, <2 x double> %a1) {
696*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxsd_int
697*9880d681SAndroid Build Coastguard Worker  ;CHECK:       maxsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
698*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
699*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %a0, <2 x double> %a1)
700*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
701*9880d681SAndroid Build Coastguard Worker}
702*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.sd(<2 x double>, <2 x double>) nounwind readnone
703*9880d681SAndroid Build Coastguard Worker
704*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_maxss(float %a0, float %a1) {
705*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxss
706*9880d681SAndroid Build Coastguard Worker  ;CHECK:       maxss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
707*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
708*9880d681SAndroid Build Coastguard Worker  %2 = fcmp ogt float %a0, %a1
709*9880d681SAndroid Build Coastguard Worker  %3 = select i1 %2, float %a0, float %a1
710*9880d681SAndroid Build Coastguard Worker  ret float %3
711*9880d681SAndroid Build Coastguard Worker}
712*9880d681SAndroid Build Coastguard Worker
713*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_maxss_int(<4 x float> %a0, <4 x float> %a1) {
714*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_maxss_int
715*9880d681SAndroid Build Coastguard Worker  ;CHECK:       maxss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
716*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
717*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.max.ss(<4 x float> %a0, <4 x float> %a1)
718*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
719*9880d681SAndroid Build Coastguard Worker}
720*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.max.ss(<4 x float>, <4 x float>) nounwind readnone
721*9880d681SAndroid Build Coastguard Worker
722*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_minpd(<2 x double> %a0, <2 x double> %a1) {
723*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minpd
724*9880d681SAndroid Build Coastguard Worker  ;CHECK:       minpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
725*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
726*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.min.pd(<2 x double> %a0, <2 x double> %a1)
727*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
728*9880d681SAndroid Build Coastguard Worker}
729*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.pd(<2 x double>, <2 x double>) nounwind readnone
730*9880d681SAndroid Build Coastguard Worker
731*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_minps(<4 x float> %a0, <4 x float> %a1) {
732*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minps
733*9880d681SAndroid Build Coastguard Worker  ;CHECK:       minps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
734*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
735*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %a0, <4 x float> %a1)
736*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
737*9880d681SAndroid Build Coastguard Worker}
738*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.min.ps(<4 x float>, <4 x float>) nounwind readnone
739*9880d681SAndroid Build Coastguard Worker
740*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_minsd(double %a0, double %a1) {
741*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minsd
742*9880d681SAndroid Build Coastguard Worker  ;CHECK:       minsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
743*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
744*9880d681SAndroid Build Coastguard Worker  %2 = fcmp olt double %a0, %a1
745*9880d681SAndroid Build Coastguard Worker  %3 = select i1 %2, double %a0, double %a1
746*9880d681SAndroid Build Coastguard Worker  ret double %3
747*9880d681SAndroid Build Coastguard Worker}
748*9880d681SAndroid Build Coastguard Worker
749*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_minsd_int(<2 x double> %a0, <2 x double> %a1) {
750*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minsd_int
751*9880d681SAndroid Build Coastguard Worker  ;CHECK:       minsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
752*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
753*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %a0, <2 x double> %a1)
754*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
755*9880d681SAndroid Build Coastguard Worker}
756*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.sd(<2 x double>, <2 x double>) nounwind readnone
757*9880d681SAndroid Build Coastguard Worker
758*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_minss(float %a0, float %a1) {
759*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minss
760*9880d681SAndroid Build Coastguard Worker  ;CHECK:       minss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
761*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
762*9880d681SAndroid Build Coastguard Worker  %2 = fcmp olt float %a0, %a1
763*9880d681SAndroid Build Coastguard Worker  %3 = select i1 %2, float %a0, float %a1
764*9880d681SAndroid Build Coastguard Worker  ret float %3
765*9880d681SAndroid Build Coastguard Worker}
766*9880d681SAndroid Build Coastguard Worker
767*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_minss_int(<4 x float> %a0, <4 x float> %a1) {
768*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_minss_int
769*9880d681SAndroid Build Coastguard Worker  ;CHECK:       minss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
770*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
771*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.min.ss(<4 x float> %a0, <4 x float> %a1)
772*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
773*9880d681SAndroid Build Coastguard Worker}
774*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.min.ss(<4 x float>, <4 x float>) nounwind readnone
775*9880d681SAndroid Build Coastguard Worker
776*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_movddup(<2 x double> %a0) {
777*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movddup
778*9880d681SAndroid Build Coastguard Worker  ;CHECK:   movddup {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
779*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}"()
780*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x double> %a0, <2 x double> undef, <2 x i32> <i32 0, i32 0>
781*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
782*9880d681SAndroid Build Coastguard Worker}
783*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_movhpd (load / store)
784*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_movhps (load / store)
785*9880d681SAndroid Build Coastguard Worker
786*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_movlpd (load / store)
787*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_movlps (load / store)
788*9880d681SAndroid Build Coastguard Worker
789*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_movshdup(<4 x float> %a0) {
790*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movshdup
791*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movshdup {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
792*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}"()
793*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>
794*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
795*9880d681SAndroid Build Coastguard Worker}
796*9880d681SAndroid Build Coastguard Worker
797*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_movsldup(<4 x float> %a0) {
798*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_movsldup
799*9880d681SAndroid Build Coastguard Worker  ;CHECK:       movsldup {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
800*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}"()
801*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>
802*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
803*9880d681SAndroid Build Coastguard Worker}
804*9880d681SAndroid Build Coastguard Worker
805*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_mulpd(<2 x double> %a0, <2 x double> %a1) {
806*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulpd
807*9880d681SAndroid Build Coastguard Worker  ;CHECK:       mulpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
808*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
809*9880d681SAndroid Build Coastguard Worker  %2 = fmul <2 x double> %a0, %a1
810*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
811*9880d681SAndroid Build Coastguard Worker}
812*9880d681SAndroid Build Coastguard Worker
813*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_mulps(<4 x float> %a0, <4 x float> %a1) {
814*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulps
815*9880d681SAndroid Build Coastguard Worker  ;CHECK:       mulps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
816*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
817*9880d681SAndroid Build Coastguard Worker  %2 = fmul <4 x float> %a0, %a1
818*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
819*9880d681SAndroid Build Coastguard Worker}
820*9880d681SAndroid Build Coastguard Worker
821*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_mulsd(double %a0, double %a1) {
822*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulsd
823*9880d681SAndroid Build Coastguard Worker  ;CHECK:       mulsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
824*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
825*9880d681SAndroid Build Coastguard Worker  %2 = fmul double %a0, %a1
826*9880d681SAndroid Build Coastguard Worker  ret double %2
827*9880d681SAndroid Build Coastguard Worker}
828*9880d681SAndroid Build Coastguard Worker
829*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_mulsd_int(<2 x double> %a0, <2 x double> %a1) {
830*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulsd_int
831*9880d681SAndroid Build Coastguard Worker  ;CHECK:       mulsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
832*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
833*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.mul.sd(<2 x double> %a0, <2 x double> %a1)
834*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
835*9880d681SAndroid Build Coastguard Worker}
836*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.mul.sd(<2 x double>, <2 x double>) nounwind readnone
837*9880d681SAndroid Build Coastguard Worker
838*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_mulss(float %a0, float %a1) {
839*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulss
840*9880d681SAndroid Build Coastguard Worker  ;CHECK:       mulss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
841*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
842*9880d681SAndroid Build Coastguard Worker  %2 = fmul float %a0, %a1
843*9880d681SAndroid Build Coastguard Worker  ret float %2
844*9880d681SAndroid Build Coastguard Worker}
845*9880d681SAndroid Build Coastguard Worker
846*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_mulss_int(<4 x float> %a0, <4 x float> %a1) {
847*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_mulss_int
848*9880d681SAndroid Build Coastguard Worker  ;CHECK:       mulss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
849*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
850*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.mul.ss(<4 x float> %a0, <4 x float> %a1)
851*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
852*9880d681SAndroid Build Coastguard Worker}
853*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.mul.ss(<4 x float>, <4 x float>) nounwind readnone
854*9880d681SAndroid Build Coastguard Worker
855*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_orpd(<2 x double> %a0, <2 x double> %a1) {
856*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_orpd
857*9880d681SAndroid Build Coastguard Worker  ;CHECK:       orpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
858*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
859*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x double> %a0 to <2 x i64>
860*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x double> %a1 to <2 x i64>
861*9880d681SAndroid Build Coastguard Worker  %4 = or <2 x i64> %2, %3
862*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <2 x i64> %4 to <2 x double>
863*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
864*9880d681SAndroid Build Coastguard Worker  %6 = fadd <2 x double> %5, <double 0x0, double 0x0>
865*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %6
866*9880d681SAndroid Build Coastguard Worker}
867*9880d681SAndroid Build Coastguard Worker
868*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_orps(<4 x float> %a0, <4 x float> %a1) {
869*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_orps
870*9880d681SAndroid Build Coastguard Worker  ;CHECK:       orps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
871*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
872*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x float> %a0 to <2 x i64>
873*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x float> %a1 to <2 x i64>
874*9880d681SAndroid Build Coastguard Worker  %4 = or <2 x i64> %2, %3
875*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <2 x i64> %4 to <4 x float>
876*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
877*9880d681SAndroid Build Coastguard Worker  %6 = fadd <4 x float> %5, <float 0x0, float 0x0, float 0x0, float 0x0>
878*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %6
879*9880d681SAndroid Build Coastguard Worker}
880*9880d681SAndroid Build Coastguard Worker
881*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_rcpps
882*9880d681SAndroid Build Coastguard Worker
883*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_rcpps_int(<4 x float> %a0) {
884*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_rcpps_int
885*9880d681SAndroid Build Coastguard Worker  ;CHECK:       rcpps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
886*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
887*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.rcp.ps(<4 x float> %a0)
888*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
889*9880d681SAndroid Build Coastguard Worker}
890*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rcp.ps(<4 x float>) nounwind readnone
891*9880d681SAndroid Build Coastguard Worker
892*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_rcpss
893*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_rcpss_int
894*9880d681SAndroid Build Coastguard Worker
895*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_roundpd(<2 x double> %a0) {
896*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_roundpd
897*9880d681SAndroid Build Coastguard Worker  ;CHECK:       roundpd $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
898*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}"()
899*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse41.round.pd(<2 x double> %a0, i32 7)
900*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
901*9880d681SAndroid Build Coastguard Worker}
902*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.round.pd(<2 x double>, i32) nounwind readnone
903*9880d681SAndroid Build Coastguard Worker
904*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_roundps(<4 x float> %a0) {
905*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_roundps
906*9880d681SAndroid Build Coastguard Worker  ;CHECK:       roundps $7, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
907*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}"()
908*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse41.round.ps(<4 x float> %a0, i32 7)
909*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
910*9880d681SAndroid Build Coastguard Worker}
911*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.round.ps(<4 x float>, i32) nounwind readnone
912*9880d681SAndroid Build Coastguard Worker
913*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_roundsd(double %a0) optsize {
914*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_roundsd
915*9880d681SAndroid Build Coastguard Worker  ;CHECK:       roundsd $9, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
916*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}"()
917*9880d681SAndroid Build Coastguard Worker  %2 = call double @llvm.floor.f64(double %a0)
918*9880d681SAndroid Build Coastguard Worker  ret double %2
919*9880d681SAndroid Build Coastguard Worker}
920*9880d681SAndroid Build Coastguard Workerdeclare double @llvm.floor.f64(double) nounwind readnone
921*9880d681SAndroid Build Coastguard Worker
922*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_roundsd_int
923*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.round.sd(<2 x double>, <2 x double>, i32) nounwind readnone
924*9880d681SAndroid Build Coastguard Worker
925*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_roundss(float %a0) minsize {
926*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_roundss
927*9880d681SAndroid Build Coastguard Worker  ;CHECK:       roundss $9, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
928*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}"()
929*9880d681SAndroid Build Coastguard Worker  %2 = call float @llvm.floor.f32(float %a0)
930*9880d681SAndroid Build Coastguard Worker  ret float %2
931*9880d681SAndroid Build Coastguard Worker}
932*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.floor.f32(float) nounwind readnone
933*9880d681SAndroid Build Coastguard Worker
934*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_roundss_int
935*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.round.ss(<4 x float>, <4 x float>, i32) nounwind readnone
936*9880d681SAndroid Build Coastguard Worker
937*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_rsqrtps
938*9880d681SAndroid Build Coastguard Worker
939*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_rsqrtps_int(<4 x float> %a0) {
940*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_rsqrtps_int
941*9880d681SAndroid Build Coastguard Worker  ;CHECK:       rsqrtps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
942*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}"()
943*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float> %a0)
944*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
945*9880d681SAndroid Build Coastguard Worker}
946*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float>) nounwind readnone
947*9880d681SAndroid Build Coastguard Worker
948*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_rsqrtss
949*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_rsqrtss_int
950*9880d681SAndroid Build Coastguard Worker
951*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_shufpd(<2 x double> %a0, <2 x double> %a1) {
952*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_shufpd
953*9880d681SAndroid Build Coastguard Worker  ;CHECK:       shufpd $1, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
954*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
955*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 1, i32 2>
956*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
957*9880d681SAndroid Build Coastguard Worker}
958*9880d681SAndroid Build Coastguard Worker
959*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_shufps(<4 x float> %a0, <4 x float> %a1) {
960*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_shufps
961*9880d681SAndroid Build Coastguard Worker  ;CHECK:       shufps $200, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
962*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
963*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>
964*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
965*9880d681SAndroid Build Coastguard Worker}
966*9880d681SAndroid Build Coastguard Worker
967*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_sqrtpd(<2 x double> %a0) {
968*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_sqrtpd
969*9880d681SAndroid Build Coastguard Worker  ;CHECK:       sqrtpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
970*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}"()
971*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double> %a0)
972*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
973*9880d681SAndroid Build Coastguard Worker}
974*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double>) nounwind readnone
975*9880d681SAndroid Build Coastguard Worker
976*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_sqrtps(<4 x float> %a0) {
977*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_sqrtps
978*9880d681SAndroid Build Coastguard Worker  ;CHECK:       sqrtps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
979*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}"()
980*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float> %a0)
981*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
982*9880d681SAndroid Build Coastguard Worker}
983*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float>) nounwind readnone
984*9880d681SAndroid Build Coastguard Worker
985*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_sqrtsd(double %a0) optsize {
986*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_sqrtsd
987*9880d681SAndroid Build Coastguard Worker  ;CHECK:       sqrtsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
988*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}"()
989*9880d681SAndroid Build Coastguard Worker  %2 = call double @llvm.sqrt.f64(double %a0)
990*9880d681SAndroid Build Coastguard Worker  ret double %2
991*9880d681SAndroid Build Coastguard Worker}
992*9880d681SAndroid Build Coastguard Workerdeclare double @llvm.sqrt.f64(double) nounwind readnone
993*9880d681SAndroid Build Coastguard Worker
994*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_sqrtsd_int
995*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double>) nounwind readnone
996*9880d681SAndroid Build Coastguard Worker
997*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_sqrtss(float %a0) minsize {
998*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_sqrtss
999*9880d681SAndroid Build Coastguard Worker  ;CHECK:       sqrtss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
1000*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}"()
1001*9880d681SAndroid Build Coastguard Worker  %2 = call float @llvm.sqrt.f32(float %a0)
1002*9880d681SAndroid Build Coastguard Worker  ret float %2
1003*9880d681SAndroid Build Coastguard Worker}
1004*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.sqrt.f32(float) nounwind readnone
1005*9880d681SAndroid Build Coastguard Worker
1006*9880d681SAndroid Build Coastguard Worker; TODO stack_fold_sqrtss_int
1007*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float>) nounwind readnone
1008*9880d681SAndroid Build Coastguard Worker
1009*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_subpd(<2 x double> %a0, <2 x double> %a1) {
1010*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subpd
1011*9880d681SAndroid Build Coastguard Worker  ;CHECK:       subpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1012*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1013*9880d681SAndroid Build Coastguard Worker  %2 = fsub <2 x double> %a0, %a1
1014*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1015*9880d681SAndroid Build Coastguard Worker}
1016*9880d681SAndroid Build Coastguard Worker
1017*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_subps(<4 x float> %a0, <4 x float> %a1) {
1018*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subps
1019*9880d681SAndroid Build Coastguard Worker  ;CHECK:       subps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1020*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1021*9880d681SAndroid Build Coastguard Worker  %2 = fsub <4 x float> %a0, %a1
1022*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1023*9880d681SAndroid Build Coastguard Worker}
1024*9880d681SAndroid Build Coastguard Worker
1025*9880d681SAndroid Build Coastguard Workerdefine double @stack_fold_subsd(double %a0, double %a1) {
1026*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subsd
1027*9880d681SAndroid Build Coastguard Worker  ;CHECK:       subsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
1028*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1029*9880d681SAndroid Build Coastguard Worker  %2 = fsub double %a0, %a1
1030*9880d681SAndroid Build Coastguard Worker  ret double %2
1031*9880d681SAndroid Build Coastguard Worker}
1032*9880d681SAndroid Build Coastguard Worker
1033*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_subsd_int(<2 x double> %a0, <2 x double> %a1) {
1034*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subsd_int
1035*9880d681SAndroid Build Coastguard Worker  ;CHECK:       subsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1036*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1037*9880d681SAndroid Build Coastguard Worker  %2 = call <2 x double> @llvm.x86.sse2.sub.sd(<2 x double> %a0, <2 x double> %a1)
1038*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %2
1039*9880d681SAndroid Build Coastguard Worker}
1040*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sub.sd(<2 x double>, <2 x double>) nounwind readnone
1041*9880d681SAndroid Build Coastguard Worker
1042*9880d681SAndroid Build Coastguard Workerdefine float @stack_fold_subss(float %a0, float %a1) {
1043*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subss
1044*9880d681SAndroid Build Coastguard Worker  ;CHECK:       subss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
1045*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1046*9880d681SAndroid Build Coastguard Worker  %2 = fsub float %a0, %a1
1047*9880d681SAndroid Build Coastguard Worker  ret float %2
1048*9880d681SAndroid Build Coastguard Worker}
1049*9880d681SAndroid Build Coastguard Worker
1050*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_subss_int(<4 x float> %a0, <4 x float> %a1) {
1051*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_subss_int
1052*9880d681SAndroid Build Coastguard Worker  ;CHECK:       subss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1053*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1054*9880d681SAndroid Build Coastguard Worker  %2 = call <4 x float> @llvm.x86.sse.sub.ss(<4 x float> %a0, <4 x float> %a1)
1055*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %2
1056*9880d681SAndroid Build Coastguard Worker}
1057*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sub.ss(<4 x float>, <4 x float>) nounwind readnone
1058*9880d681SAndroid Build Coastguard Worker
1059*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_ucomisd(double %a0, double %a1) {
1060*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_ucomisd
1061*9880d681SAndroid Build Coastguard Worker  ;CHECK:       ucomisd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload
1062*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1063*9880d681SAndroid Build Coastguard Worker  %2 = fcmp ueq double %a0, %a1
1064*9880d681SAndroid Build Coastguard Worker  %3 = select i1 %2, i32 1, i32 -1
1065*9880d681SAndroid Build Coastguard Worker  ret i32 %3
1066*9880d681SAndroid Build Coastguard Worker}
1067*9880d681SAndroid Build Coastguard Worker
1068*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_ucomisd_int(<2 x double> %a0, <2 x double> %a1) {
1069*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_ucomisd_int
1070*9880d681SAndroid Build Coastguard Worker  ;CHECK:       ucomisd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1071*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1072*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %a0, <2 x double> %a1)
1073*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1074*9880d681SAndroid Build Coastguard Worker}
1075*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomieq.sd(<2 x double>, <2 x double>) nounwind readnone
1076*9880d681SAndroid Build Coastguard Worker
1077*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_ucomiss(float %a0, float %a1) {
1078*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_ucomiss
1079*9880d681SAndroid Build Coastguard Worker  ;CHECK:       ucomiss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload
1080*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1081*9880d681SAndroid Build Coastguard Worker  %2 = fcmp ueq float %a0, %a1
1082*9880d681SAndroid Build Coastguard Worker  %3 = select i1 %2, i32 1, i32 -1
1083*9880d681SAndroid Build Coastguard Worker  ret i32 %3
1084*9880d681SAndroid Build Coastguard Worker}
1085*9880d681SAndroid Build Coastguard Worker
1086*9880d681SAndroid Build Coastguard Workerdefine i32 @stack_fold_ucomiss_int(<4 x float> %a0, <4 x float> %a1) {
1087*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_ucomiss_int
1088*9880d681SAndroid Build Coastguard Worker  ;CHECK:       ucomiss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1089*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1090*9880d681SAndroid Build Coastguard Worker  %2 = call i32 @llvm.x86.sse.ucomieq.ss(<4 x float> %a0, <4 x float> %a1)
1091*9880d681SAndroid Build Coastguard Worker  ret i32 %2
1092*9880d681SAndroid Build Coastguard Worker}
1093*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomieq.ss(<4 x float>, <4 x float>) nounwind readnone
1094*9880d681SAndroid Build Coastguard Worker
1095*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_unpckhpd(<2 x double> %a0, <2 x double> %a1) {
1096*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_unpckhpd
1097*9880d681SAndroid Build Coastguard Worker  ;CHECK:       unpckhpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1098*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1099*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 1, i32 3>
1100*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1101*9880d681SAndroid Build Coastguard Worker  %3 = fadd <2 x double> %2, <double 0x0, double 0x0>
1102*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %3
1103*9880d681SAndroid Build Coastguard Worker}
1104*9880d681SAndroid Build Coastguard Worker
1105*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_unpckhps(<4 x float> %a0, <4 x float> %a1) {
1106*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_unpckhps
1107*9880d681SAndroid Build Coastguard Worker  ;CHECK:       unpckhps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1108*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1109*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>
1110*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1111*9880d681SAndroid Build Coastguard Worker  %3 = fadd <4 x float> %2, <float 0x0, float 0x0, float 0x0, float 0x0>
1112*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %3
1113*9880d681SAndroid Build Coastguard Worker}
1114*9880d681SAndroid Build Coastguard Worker
1115*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_unpcklpd(<2 x double> %a0, <2 x double> %a1) {
1116*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_unpcklpd
1117*9880d681SAndroid Build Coastguard Worker  ;CHECK:       unpcklpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1118*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1119*9880d681SAndroid Build Coastguard Worker  %2 = shufflevector <2 x double> %a0, <2 x double> %a1, <2 x i32> <i32 0, i32 2>
1120*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1121*9880d681SAndroid Build Coastguard Worker  %3 = fadd <2 x double> %2, <double 0x0, double 0x0>
1122*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %3
1123*9880d681SAndroid Build Coastguard Worker}
1124*9880d681SAndroid Build Coastguard Worker
1125*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_unpcklps(<4 x float> %a0, <4 x float> %a1) {
1126*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_unpcklps
1127*9880d681SAndroid Build Coastguard Worker  ;CHECK:       unpcklps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1128*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1129*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>
1130*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1131*9880d681SAndroid Build Coastguard Worker  %3 = fadd <4 x float> %2, <float 0x0, float 0x0, float 0x0, float 0x0>
1132*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %3
1133*9880d681SAndroid Build Coastguard Worker}
1134*9880d681SAndroid Build Coastguard Worker
1135*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @stack_fold_xorpd(<2 x double> %a0, <2 x double> %a1) {
1136*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_xorpd
1137*9880d681SAndroid Build Coastguard Worker  ;CHECK:       xorpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1138*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1139*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x double> %a0 to <2 x i64>
1140*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x double> %a1 to <2 x i64>
1141*9880d681SAndroid Build Coastguard Worker  %4 = xor <2 x i64> %2, %3
1142*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <2 x i64> %4 to <2 x double>
1143*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1144*9880d681SAndroid Build Coastguard Worker  %6 = fadd <2 x double> %5, <double 0x0, double 0x0>
1145*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %6
1146*9880d681SAndroid Build Coastguard Worker}
1147*9880d681SAndroid Build Coastguard Worker
1148*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @stack_fold_xorps(<4 x float> %a0, <4 x float> %a1) {
1149*9880d681SAndroid Build Coastguard Worker  ;CHECK-LABEL: stack_fold_xorps
1150*9880d681SAndroid Build Coastguard Worker  ;CHECK:       xorps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
1151*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
1152*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x float> %a0 to <2 x i64>
1153*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x float> %a1 to <2 x i64>
1154*9880d681SAndroid Build Coastguard Worker  %4 = xor <2 x i64> %2, %3
1155*9880d681SAndroid Build Coastguard Worker  %5 = bitcast <2 x i64> %4 to <4 x float>
1156*9880d681SAndroid Build Coastguard Worker  ; fadd forces execution domain
1157*9880d681SAndroid Build Coastguard Worker  %6 = fadd <4 x float> %5, <float 0x0, float 0x0, float 0x0, float 0x0>
1158*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %6
1159*9880d681SAndroid Build Coastguard Worker}
1160