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