1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by update_llc_test_checks.py 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=-avx,+sse | FileCheck %s --check-prefix=SSE 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i386-apple-darwin -mcpu=knl | FileCheck %s --check-prefix=KNL 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_add_ss(<4 x float> %a0, <4 x float> %a1) { 6*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_add_ss: 7*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 8*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: addss %xmm1, %xmm0 9*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 10*9880d681SAndroid Build Coastguard Worker; 11*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_add_ss: 12*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 13*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vaddss %xmm1, %xmm0, %xmm0 14*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 15*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.add.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1] 16*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.add.ss(<4 x float>, <4 x float>) nounwind readnone 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cmp_ps(<4 x float> %a0, <4 x float> %a1) { 22*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_cmp_ps: 23*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 24*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: cmpordps %xmm1, %xmm0 25*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 26*9880d681SAndroid Build Coastguard Worker; 27*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_cmp_ps: 28*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 29*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcmpordps %xmm1, %xmm0, %xmm0 30*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 31*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1] 32*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ps(<4 x float>, <4 x float>, i8) nounwind readnone 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cmp_ss(<4 x float> %a0, <4 x float> %a1) { 38*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_cmp_ss: 39*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 40*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: cmpordss %xmm1, %xmm0 41*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 42*9880d681SAndroid Build Coastguard Worker; 43*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_cmp_ss: 44*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 45*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcmpordss %xmm1, %xmm0, %xmm0 46*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 47*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.cmp.ss(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1] 48*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ss(<4 x float>, <4 x float>, i8) nounwind readnone 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comieq_ss(<4 x float> %a0, <4 x float> %a1) { 54*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_comieq_ss: 55*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 56*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: comiss %xmm1, %xmm0 57*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: setnp %al 58*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: sete %cl 59*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: andb %al, %cl 60*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: movzbl %cl, %eax 61*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 62*9880d681SAndroid Build Coastguard Worker; 63*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_comieq_ss: 64*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 65*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcomiss %xmm1, %xmm0 66*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: setnp %al 67*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: sete %cl 68*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: andb %al, %cl 69*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movzbl %cl, %eax 70*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 71*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.comieq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 72*9880d681SAndroid Build Coastguard Worker ret i32 %res 73*9880d681SAndroid Build Coastguard Worker} 74*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comieq.ss(<4 x float>, <4 x float>) nounwind readnone 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comige_ss(<4 x float> %a0, <4 x float> %a1) { 78*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_comige_ss: 79*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 80*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: xorl %eax, %eax 81*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: comiss %xmm1, %xmm0 82*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: setae %al 83*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 84*9880d681SAndroid Build Coastguard Worker; 85*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_comige_ss: 86*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 87*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: xorl %eax, %eax 88*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcomiss %xmm1, %xmm0 89*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: setae %al 90*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 91*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.comige.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 92*9880d681SAndroid Build Coastguard Worker ret i32 %res 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comige.ss(<4 x float>, <4 x float>) nounwind readnone 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comigt_ss(<4 x float> %a0, <4 x float> %a1) { 98*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_comigt_ss: 99*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 100*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: xorl %eax, %eax 101*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: comiss %xmm1, %xmm0 102*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: seta %al 103*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 104*9880d681SAndroid Build Coastguard Worker; 105*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_comigt_ss: 106*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 107*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: xorl %eax, %eax 108*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcomiss %xmm1, %xmm0 109*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: seta %al 110*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 111*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.comigt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 112*9880d681SAndroid Build Coastguard Worker ret i32 %res 113*9880d681SAndroid Build Coastguard Worker} 114*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comigt.ss(<4 x float>, <4 x float>) nounwind readnone 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comile_ss(<4 x float> %a0, <4 x float> %a1) { 118*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_comile_ss: 119*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 120*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: xorl %eax, %eax 121*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: comiss %xmm0, %xmm1 122*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: setae %al 123*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 124*9880d681SAndroid Build Coastguard Worker; 125*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_comile_ss: 126*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 127*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: xorl %eax, %eax 128*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcomiss %xmm0, %xmm1 129*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: setae %al 130*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 131*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.comile.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 132*9880d681SAndroid Build Coastguard Worker ret i32 %res 133*9880d681SAndroid Build Coastguard Worker} 134*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comile.ss(<4 x float>, <4 x float>) nounwind readnone 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Worker 137*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comilt_ss(<4 x float> %a0, <4 x float> %a1) { 138*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_comilt_ss: 139*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 140*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: xorl %eax, %eax 141*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: comiss %xmm0, %xmm1 142*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: seta %al 143*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 144*9880d681SAndroid Build Coastguard Worker; 145*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_comilt_ss: 146*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 147*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: xorl %eax, %eax 148*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcomiss %xmm0, %xmm1 149*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: seta %al 150*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 151*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.comilt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 152*9880d681SAndroid Build Coastguard Worker ret i32 %res 153*9880d681SAndroid Build Coastguard Worker} 154*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comilt.ss(<4 x float>, <4 x float>) nounwind readnone 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comineq_ss(<4 x float> %a0, <4 x float> %a1) { 158*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_comineq_ss: 159*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 160*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: comiss %xmm1, %xmm0 161*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: setp %al 162*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: setne %cl 163*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: orb %al, %cl 164*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: movzbl %cl, %eax 165*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 166*9880d681SAndroid Build Coastguard Worker; 167*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_comineq_ss: 168*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 169*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcomiss %xmm1, %xmm0 170*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: setp %al 171*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: setne %cl 172*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: orb %al, %cl 173*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movzbl %cl, %eax 174*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 175*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.comineq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 176*9880d681SAndroid Build Coastguard Worker ret i32 %res 177*9880d681SAndroid Build Coastguard Worker} 178*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comineq.ss(<4 x float>, <4 x float>) nounwind readnone 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Worker 181*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cvtsi2ss(<4 x float> %a0) { 182*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_cvtsi2ss: 183*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 184*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: movl $7, %eax 185*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: cvtsi2ssl %eax, %xmm0 186*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 187*9880d681SAndroid Build Coastguard Worker; 188*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_cvtsi2ss: 189*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 190*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movl $7, %eax 191*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcvtsi2ssl %eax, %xmm0, %xmm0 192*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 193*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1] 194*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 195*9880d681SAndroid Build Coastguard Worker} 196*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float>, i32) nounwind readnone 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Worker 199*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_cvtss2si(<4 x float> %a0) { 200*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_cvtss2si: 201*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 202*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: cvtss2si %xmm0, %eax 203*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 204*9880d681SAndroid Build Coastguard Worker; 205*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_cvtss2si: 206*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 207*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcvtss2si %xmm0, %eax 208*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 209*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.cvtss2si(<4 x float> %a0) ; <i32> [#uses=1] 210*9880d681SAndroid Build Coastguard Worker ret i32 %res 211*9880d681SAndroid Build Coastguard Worker} 212*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvtss2si(<4 x float>) nounwind readnone 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Worker 215*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_cvttss2si(<4 x float> %a0) { 216*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_cvttss2si: 217*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 218*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: cvttss2si %xmm0, %eax 219*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 220*9880d681SAndroid Build Coastguard Worker; 221*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_cvttss2si: 222*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 223*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcvttss2si %xmm0, %eax 224*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 225*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.cvttss2si(<4 x float> %a0) ; <i32> [#uses=1] 226*9880d681SAndroid Build Coastguard Worker ret i32 %res 227*9880d681SAndroid Build Coastguard Worker} 228*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvttss2si(<4 x float>) nounwind readnone 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Worker 231*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_div_ss(<4 x float> %a0, <4 x float> %a1) { 232*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_div_ss: 233*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 234*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: divss %xmm1, %xmm0 235*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 236*9880d681SAndroid Build Coastguard Worker; 237*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_div_ss: 238*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 239*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vdivss %xmm1, %xmm0, %xmm0 240*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 241*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.div.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1] 242*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 243*9880d681SAndroid Build Coastguard Worker} 244*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.div.ss(<4 x float>, <4 x float>) nounwind readnone 245*9880d681SAndroid Build Coastguard Worker 246*9880d681SAndroid Build Coastguard Worker 247*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_sse_ldmxcsr(i8* %a0) { 248*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ldmxcsr: 249*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 250*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax 251*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: ldmxcsr (%eax) 252*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 253*9880d681SAndroid Build Coastguard Worker; 254*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ldmxcsr: 255*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 256*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movl {{[0-9]+}}(%esp), %eax 257*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vldmxcsr (%eax) 258*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 259*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.sse.ldmxcsr(i8* %a0) 260*9880d681SAndroid Build Coastguard Worker ret void 261*9880d681SAndroid Build Coastguard Worker} 262*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse.ldmxcsr(i8*) nounwind 263*9880d681SAndroid Build Coastguard Worker 264*9880d681SAndroid Build Coastguard Worker 265*9880d681SAndroid Build Coastguard Worker 266*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_max_ps(<4 x float> %a0, <4 x float> %a1) { 267*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_max_ps: 268*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 269*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: maxps %xmm1, %xmm0 270*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 271*9880d681SAndroid Build Coastguard Worker; 272*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_max_ps: 273*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 274*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmaxps %xmm1, %xmm0, %xmm0 275*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 276*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1] 277*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 278*9880d681SAndroid Build Coastguard Worker} 279*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.max.ps(<4 x float>, <4 x float>) nounwind readnone 280*9880d681SAndroid Build Coastguard Worker 281*9880d681SAndroid Build Coastguard Worker 282*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_max_ss(<4 x float> %a0, <4 x float> %a1) { 283*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_max_ss: 284*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 285*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: maxss %xmm1, %xmm0 286*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 287*9880d681SAndroid Build Coastguard Worker; 288*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_max_ss: 289*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 290*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmaxss %xmm1, %xmm0, %xmm0 291*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 292*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.max.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1] 293*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 294*9880d681SAndroid Build Coastguard Worker} 295*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.max.ss(<4 x float>, <4 x float>) nounwind readnone 296*9880d681SAndroid Build Coastguard Worker 297*9880d681SAndroid Build Coastguard Worker 298*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_min_ps(<4 x float> %a0, <4 x float> %a1) { 299*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_min_ps: 300*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 301*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: minps %xmm1, %xmm0 302*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 303*9880d681SAndroid Build Coastguard Worker; 304*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_min_ps: 305*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 306*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vminps %xmm1, %xmm0, %xmm0 307*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 308*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1] 309*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 310*9880d681SAndroid Build Coastguard Worker} 311*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.min.ps(<4 x float>, <4 x float>) nounwind readnone 312*9880d681SAndroid Build Coastguard Worker 313*9880d681SAndroid Build Coastguard Worker 314*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_min_ss(<4 x float> %a0, <4 x float> %a1) { 315*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_min_ss: 316*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 317*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: minss %xmm1, %xmm0 318*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 319*9880d681SAndroid Build Coastguard Worker; 320*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_min_ss: 321*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 322*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vminss %xmm1, %xmm0, %xmm0 323*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 324*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.min.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1] 325*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 326*9880d681SAndroid Build Coastguard Worker} 327*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.min.ss(<4 x float>, <4 x float>) nounwind readnone 328*9880d681SAndroid Build Coastguard Worker 329*9880d681SAndroid Build Coastguard Worker 330*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_movmsk_ps(<4 x float> %a0) { 331*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_movmsk_ps: 332*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 333*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: movmskps %xmm0, %eax 334*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 335*9880d681SAndroid Build Coastguard Worker; 336*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_movmsk_ps: 337*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 338*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovmskps %xmm0, %eax 339*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 340*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.movmsk.ps(<4 x float> %a0) ; <i32> [#uses=1] 341*9880d681SAndroid Build Coastguard Worker ret i32 %res 342*9880d681SAndroid Build Coastguard Worker} 343*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.movmsk.ps(<4 x float>) nounwind readnone 344*9880d681SAndroid Build Coastguard Worker 345*9880d681SAndroid Build Coastguard Worker 346*9880d681SAndroid Build Coastguard Worker 347*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_mul_ss(<4 x float> %a0, <4 x float> %a1) { 348*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_mul_ss: 349*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 350*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: mulss %xmm1, %xmm0 351*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 352*9880d681SAndroid Build Coastguard Worker; 353*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_mul_ss: 354*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 355*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmulss %xmm1, %xmm0, %xmm0 356*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 357*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.mul.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1] 358*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 359*9880d681SAndroid Build Coastguard Worker} 360*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.mul.ss(<4 x float>, <4 x float>) nounwind readnone 361*9880d681SAndroid Build Coastguard Worker 362*9880d681SAndroid Build Coastguard Worker 363*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rcp_ps(<4 x float> %a0) { 364*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_rcp_ps: 365*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 366*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: rcpps %xmm0, %xmm0 367*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 368*9880d681SAndroid Build Coastguard Worker; 369*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_rcp_ps: 370*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 371*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vrcpps %xmm0, %xmm0 372*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 373*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.rcp.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1] 374*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 375*9880d681SAndroid Build Coastguard Worker} 376*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rcp.ps(<4 x float>) nounwind readnone 377*9880d681SAndroid Build Coastguard Worker 378*9880d681SAndroid Build Coastguard Worker 379*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rcp_ss(<4 x float> %a0) { 380*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_rcp_ss: 381*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 382*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: rcpss %xmm0, %xmm0 383*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 384*9880d681SAndroid Build Coastguard Worker; 385*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_rcp_ss: 386*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 387*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vrcpss %xmm0, %xmm0, %xmm0 388*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 389*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.rcp.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1] 390*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 391*9880d681SAndroid Build Coastguard Worker} 392*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rcp.ss(<4 x float>) nounwind readnone 393*9880d681SAndroid Build Coastguard Worker 394*9880d681SAndroid Build Coastguard Worker 395*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rsqrt_ps(<4 x float> %a0) { 396*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_rsqrt_ps: 397*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 398*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: rsqrtps %xmm0, %xmm0 399*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 400*9880d681SAndroid Build Coastguard Worker; 401*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_rsqrt_ps: 402*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 403*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vrsqrtps %xmm0, %xmm0 404*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 405*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1] 406*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 407*9880d681SAndroid Build Coastguard Worker} 408*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float>) nounwind readnone 409*9880d681SAndroid Build Coastguard Worker 410*9880d681SAndroid Build Coastguard Worker 411*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rsqrt_ss(<4 x float> %a0) { 412*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_rsqrt_ss: 413*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 414*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: rsqrtss %xmm0, %xmm0 415*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 416*9880d681SAndroid Build Coastguard Worker; 417*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_rsqrt_ss: 418*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 419*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vrsqrtss %xmm0, %xmm0, %xmm0 420*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 421*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1] 422*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 423*9880d681SAndroid Build Coastguard Worker} 424*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float>) nounwind readnone 425*9880d681SAndroid Build Coastguard Worker 426*9880d681SAndroid Build Coastguard Worker 427*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_sqrt_ps(<4 x float> %a0) { 428*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_sqrt_ps: 429*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 430*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: sqrtps %xmm0, %xmm0 431*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 432*9880d681SAndroid Build Coastguard Worker; 433*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_sqrt_ps: 434*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 435*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vsqrtps %xmm0, %xmm0 436*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 437*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1] 438*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 439*9880d681SAndroid Build Coastguard Worker} 440*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float>) nounwind readnone 441*9880d681SAndroid Build Coastguard Worker 442*9880d681SAndroid Build Coastguard Worker 443*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_sqrt_ss(<4 x float> %a0) { 444*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_sqrt_ss: 445*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 446*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: sqrtss %xmm0, %xmm0 447*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 448*9880d681SAndroid Build Coastguard Worker; 449*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_sqrt_ss: 450*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 451*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vsqrtss %xmm0, %xmm0, %xmm0 452*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 453*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1] 454*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 455*9880d681SAndroid Build Coastguard Worker} 456*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float>) nounwind readnone 457*9880d681SAndroid Build Coastguard Worker 458*9880d681SAndroid Build Coastguard Worker 459*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_sse_stmxcsr(i8* %a0) { 460*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_stmxcsr: 461*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 462*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax 463*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: stmxcsr (%eax) 464*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 465*9880d681SAndroid Build Coastguard Worker; 466*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_stmxcsr: 467*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 468*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movl {{[0-9]+}}(%esp), %eax 469*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vstmxcsr (%eax) 470*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 471*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.sse.stmxcsr(i8* %a0) 472*9880d681SAndroid Build Coastguard Worker ret void 473*9880d681SAndroid Build Coastguard Worker} 474*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse.stmxcsr(i8*) nounwind 475*9880d681SAndroid Build Coastguard Worker 476*9880d681SAndroid Build Coastguard Worker 477*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_sub_ss(<4 x float> %a0, <4 x float> %a1) { 478*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_sub_ss: 479*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 480*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: subss %xmm1, %xmm0 481*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 482*9880d681SAndroid Build Coastguard Worker; 483*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_sub_ss: 484*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 485*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vsubss %xmm1, %xmm0, %xmm0 486*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 487*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.sub.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1] 488*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 489*9880d681SAndroid Build Coastguard Worker} 490*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sub.ss(<4 x float>, <4 x float>) nounwind readnone 491*9880d681SAndroid Build Coastguard Worker 492*9880d681SAndroid Build Coastguard Worker 493*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomieq_ss(<4 x float> %a0, <4 x float> %a1) { 494*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ucomieq_ss: 495*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 496*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: ucomiss %xmm1, %xmm0 497*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: setnp %al 498*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: sete %cl 499*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: andb %al, %cl 500*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: movzbl %cl, %eax 501*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 502*9880d681SAndroid Build Coastguard Worker; 503*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ucomieq_ss: 504*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 505*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vucomiss %xmm1, %xmm0 506*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: setnp %al 507*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: sete %cl 508*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: andb %al, %cl 509*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movzbl %cl, %eax 510*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 511*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.ucomieq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 512*9880d681SAndroid Build Coastguard Worker ret i32 %res 513*9880d681SAndroid Build Coastguard Worker} 514*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomieq.ss(<4 x float>, <4 x float>) nounwind readnone 515*9880d681SAndroid Build Coastguard Worker 516*9880d681SAndroid Build Coastguard Worker 517*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomige_ss(<4 x float> %a0, <4 x float> %a1) { 518*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ucomige_ss: 519*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 520*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: xorl %eax, %eax 521*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: ucomiss %xmm1, %xmm0 522*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: setae %al 523*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 524*9880d681SAndroid Build Coastguard Worker; 525*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ucomige_ss: 526*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 527*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: xorl %eax, %eax 528*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vucomiss %xmm1, %xmm0 529*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: setae %al 530*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 531*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.ucomige.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 532*9880d681SAndroid Build Coastguard Worker ret i32 %res 533*9880d681SAndroid Build Coastguard Worker} 534*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomige.ss(<4 x float>, <4 x float>) nounwind readnone 535*9880d681SAndroid Build Coastguard Worker 536*9880d681SAndroid Build Coastguard Worker 537*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomigt_ss(<4 x float> %a0, <4 x float> %a1) { 538*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ucomigt_ss: 539*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 540*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: xorl %eax, %eax 541*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: ucomiss %xmm1, %xmm0 542*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: seta %al 543*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 544*9880d681SAndroid Build Coastguard Worker; 545*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ucomigt_ss: 546*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 547*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: xorl %eax, %eax 548*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vucomiss %xmm1, %xmm0 549*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: seta %al 550*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 551*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.ucomigt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 552*9880d681SAndroid Build Coastguard Worker ret i32 %res 553*9880d681SAndroid Build Coastguard Worker} 554*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomigt.ss(<4 x float>, <4 x float>) nounwind readnone 555*9880d681SAndroid Build Coastguard Worker 556*9880d681SAndroid Build Coastguard Worker 557*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomile_ss(<4 x float> %a0, <4 x float> %a1) { 558*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ucomile_ss: 559*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 560*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: xorl %eax, %eax 561*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: ucomiss %xmm0, %xmm1 562*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: setae %al 563*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 564*9880d681SAndroid Build Coastguard Worker; 565*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ucomile_ss: 566*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 567*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: xorl %eax, %eax 568*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vucomiss %xmm0, %xmm1 569*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: setae %al 570*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 571*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.ucomile.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 572*9880d681SAndroid Build Coastguard Worker ret i32 %res 573*9880d681SAndroid Build Coastguard Worker} 574*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomile.ss(<4 x float>, <4 x float>) nounwind readnone 575*9880d681SAndroid Build Coastguard Worker 576*9880d681SAndroid Build Coastguard Worker 577*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomilt_ss(<4 x float> %a0, <4 x float> %a1) { 578*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ucomilt_ss: 579*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 580*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: xorl %eax, %eax 581*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: ucomiss %xmm0, %xmm1 582*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: seta %al 583*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 584*9880d681SAndroid Build Coastguard Worker; 585*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ucomilt_ss: 586*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 587*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: xorl %eax, %eax 588*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vucomiss %xmm0, %xmm1 589*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: seta %al 590*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 591*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.ucomilt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 592*9880d681SAndroid Build Coastguard Worker ret i32 %res 593*9880d681SAndroid Build Coastguard Worker} 594*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomilt.ss(<4 x float>, <4 x float>) nounwind readnone 595*9880d681SAndroid Build Coastguard Worker 596*9880d681SAndroid Build Coastguard Worker 597*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomineq_ss(<4 x float> %a0, <4 x float> %a1) { 598*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_x86_sse_ucomineq_ss: 599*9880d681SAndroid Build Coastguard Worker; SSE: ## BB#0: 600*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: ucomiss %xmm1, %xmm0 601*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: setp %al 602*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: setne %cl 603*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: orb %al, %cl 604*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: movzbl %cl, %eax 605*9880d681SAndroid Build Coastguard Worker; SSE-NEXT: retl 606*9880d681SAndroid Build Coastguard Worker; 607*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_x86_sse_ucomineq_ss: 608*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 609*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vucomiss %xmm1, %xmm0 610*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: setp %al 611*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: setne %cl 612*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: orb %al, %cl 613*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movzbl %cl, %eax 614*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retl 615*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.ucomineq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 616*9880d681SAndroid Build Coastguard Worker ret i32 %res 617*9880d681SAndroid Build Coastguard Worker} 618*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomineq.ss(<4 x float>, <4 x float>) nounwind readnone 619