1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i686-apple-darwin -mattr=avx,aes,pclmul | FileCheck %s --check-prefix=AVX 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i686-apple-darwin -mattr=avx512vl,aes,pclmul | FileCheck %s --check-prefix=AVX512VL 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_aesni_aesdec(<2 x i64> %a0, <2 x i64> %a1) { 6*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_aesni_aesdec: 7*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 8*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaesdec %xmm1, %xmm0, %xmm0 9*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 10*9880d681SAndroid Build Coastguard Worker; 11*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_aesni_aesdec: 12*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 13*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaesdec %xmm1, %xmm0, %xmm0 14*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 15*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.aesni.aesdec(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1] 16*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesdec(<2 x i64>, <2 x i64>) nounwind readnone 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_aesni_aesdeclast(<2 x i64> %a0, <2 x i64> %a1) { 22*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_aesni_aesdeclast: 23*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 24*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaesdeclast %xmm1, %xmm0, %xmm0 25*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 26*9880d681SAndroid Build Coastguard Worker; 27*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_aesni_aesdeclast: 28*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 29*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaesdeclast %xmm1, %xmm0, %xmm0 30*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 31*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.aesni.aesdeclast(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1] 32*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesdeclast(<2 x i64>, <2 x i64>) nounwind readnone 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_aesni_aesenc(<2 x i64> %a0, <2 x i64> %a1) { 38*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_aesni_aesenc: 39*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 40*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaesenc %xmm1, %xmm0, %xmm0 41*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 42*9880d681SAndroid Build Coastguard Worker; 43*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_aesni_aesenc: 44*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 45*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaesenc %xmm1, %xmm0, %xmm0 46*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 47*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.aesni.aesenc(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1] 48*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesenc(<2 x i64>, <2 x i64>) nounwind readnone 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_aesni_aesenclast(<2 x i64> %a0, <2 x i64> %a1) { 54*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_aesni_aesenclast: 55*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 56*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaesenclast %xmm1, %xmm0, %xmm0 57*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 58*9880d681SAndroid Build Coastguard Worker; 59*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_aesni_aesenclast: 60*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 61*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaesenclast %xmm1, %xmm0, %xmm0 62*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 63*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.aesni.aesenclast(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1] 64*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 65*9880d681SAndroid Build Coastguard Worker} 66*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesenclast(<2 x i64>, <2 x i64>) nounwind readnone 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_aesni_aesimc(<2 x i64> %a0) { 70*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_aesni_aesimc: 71*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 72*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaesimc %xmm0, %xmm0 73*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 74*9880d681SAndroid Build Coastguard Worker; 75*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_aesni_aesimc: 76*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 77*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaesimc %xmm0, %xmm0 78*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 79*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.aesni.aesimc(<2 x i64> %a0) ; <<2 x i64>> [#uses=1] 80*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 81*9880d681SAndroid Build Coastguard Worker} 82*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aesimc(<2 x i64>) nounwind readnone 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_aesni_aeskeygenassist(<2 x i64> %a0) { 86*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_aesni_aeskeygenassist: 87*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 88*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaeskeygenassist $7, %xmm0, %xmm0 89*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 90*9880d681SAndroid Build Coastguard Worker; 91*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_aesni_aeskeygenassist: 92*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 93*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaeskeygenassist $7, %xmm0, %xmm0 94*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 95*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.aesni.aeskeygenassist(<2 x i64> %a0, i8 7) ; <<2 x i64>> [#uses=1] 96*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 97*9880d681SAndroid Build Coastguard Worker} 98*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.aesni.aeskeygenassist(<2 x i64>, i8) nounwind readnone 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_add_sd(<2 x double> %a0, <2 x double> %a1) { 102*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_add_sd: 103*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 104*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaddsd %xmm1, %xmm0, %xmm0 105*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 106*9880d681SAndroid Build Coastguard Worker; 107*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_add_sd: 108*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 109*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaddsd %xmm1, %xmm0, %xmm0 110*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 111*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.add.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1] 112*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 113*9880d681SAndroid Build Coastguard Worker} 114*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.add.sd(<2 x double>, <2 x double>) nounwind readnone 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cmp_pd(<2 x double> %a0, <2 x double> %a1) { 118*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cmp_pd: 119*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 120*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpordpd %xmm1, %xmm0, %xmm0 121*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 122*9880d681SAndroid Build Coastguard Worker; 123*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cmp_pd: 124*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 125*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpordpd %xmm1, %xmm0, %xmm0 126*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 127*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 7) ; <<2 x double>> [#uses=1] 128*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 129*9880d681SAndroid Build Coastguard Worker} 130*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double>, <2 x double>, i8) nounwind readnone 131*9880d681SAndroid Build Coastguard Worker 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cmp_sd(<2 x double> %a0, <2 x double> %a1) { 134*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cmp_sd: 135*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 136*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpordsd %xmm1, %xmm0, %xmm0 137*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 138*9880d681SAndroid Build Coastguard Worker; 139*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cmp_sd: 140*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 141*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpordsd %xmm1, %xmm0, %xmm0 142*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 143*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 7) ; <<2 x double>> [#uses=1] 144*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 145*9880d681SAndroid Build Coastguard Worker} 146*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double>, <2 x double>, i8) nounwind readnone 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comieq_sd(<2 x double> %a0, <2 x double> %a1) { 150*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_comieq_sd: 151*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 152*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcomisd %xmm1, %xmm0 153*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setnp %al 154*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sete %cl 155*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: andb %al, %cl 156*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movzbl %cl, %eax 157*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 158*9880d681SAndroid Build Coastguard Worker; 159*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_comieq_sd: 160*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 161*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcomisd %xmm1, %xmm0 162*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setnp %al 163*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sete %cl 164*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: andb %al, %cl 165*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movzbl %cl, %eax 166*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 167*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 168*9880d681SAndroid Build Coastguard Worker ret i32 %res 169*9880d681SAndroid Build Coastguard Worker} 170*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comieq.sd(<2 x double>, <2 x double>) nounwind readnone 171*9880d681SAndroid Build Coastguard Worker 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comige_sd(<2 x double> %a0, <2 x double> %a1) { 174*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_comige_sd: 175*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 176*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 177*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcomisd %xmm1, %xmm0 178*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setae %al 179*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 180*9880d681SAndroid Build Coastguard Worker; 181*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_comige_sd: 182*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 183*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 184*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcomisd %xmm1, %xmm0 185*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setae %al 186*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 187*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.comige.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 188*9880d681SAndroid Build Coastguard Worker ret i32 %res 189*9880d681SAndroid Build Coastguard Worker} 190*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comige.sd(<2 x double>, <2 x double>) nounwind readnone 191*9880d681SAndroid Build Coastguard Worker 192*9880d681SAndroid Build Coastguard Worker 193*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comigt_sd(<2 x double> %a0, <2 x double> %a1) { 194*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_comigt_sd: 195*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 196*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 197*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcomisd %xmm1, %xmm0 198*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 199*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 200*9880d681SAndroid Build Coastguard Worker; 201*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_comigt_sd: 202*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 203*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 204*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcomisd %xmm1, %xmm0 205*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 206*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 207*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.comigt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 208*9880d681SAndroid Build Coastguard Worker ret i32 %res 209*9880d681SAndroid Build Coastguard Worker} 210*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comigt.sd(<2 x double>, <2 x double>) nounwind readnone 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Worker 213*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comile_sd(<2 x double> %a0, <2 x double> %a1) { 214*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_comile_sd: 215*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 216*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 217*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcomisd %xmm0, %xmm1 218*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setae %al 219*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 220*9880d681SAndroid Build Coastguard Worker; 221*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_comile_sd: 222*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 223*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 224*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcomisd %xmm0, %xmm1 225*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setae %al 226*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 227*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.comile.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 228*9880d681SAndroid Build Coastguard Worker ret i32 %res 229*9880d681SAndroid Build Coastguard Worker} 230*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comile.sd(<2 x double>, <2 x double>) nounwind readnone 231*9880d681SAndroid Build Coastguard Worker 232*9880d681SAndroid Build Coastguard Worker 233*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comilt_sd(<2 x double> %a0, <2 x double> %a1) { 234*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_comilt_sd: 235*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 236*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 237*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcomisd %xmm0, %xmm1 238*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 239*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 240*9880d681SAndroid Build Coastguard Worker; 241*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_comilt_sd: 242*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 243*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 244*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcomisd %xmm0, %xmm1 245*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 246*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 247*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.comilt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 248*9880d681SAndroid Build Coastguard Worker ret i32 %res 249*9880d681SAndroid Build Coastguard Worker} 250*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comilt.sd(<2 x double>, <2 x double>) nounwind readnone 251*9880d681SAndroid Build Coastguard Worker 252*9880d681SAndroid Build Coastguard Worker 253*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_comineq_sd(<2 x double> %a0, <2 x double> %a1) { 254*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_comineq_sd: 255*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 256*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcomisd %xmm1, %xmm0 257*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setp %al 258*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setne %cl 259*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: orb %al, %cl 260*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movzbl %cl, %eax 261*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 262*9880d681SAndroid Build Coastguard Worker; 263*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_comineq_sd: 264*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 265*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcomisd %xmm1, %xmm0 266*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setp %al 267*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setne %cl 268*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: orb %al, %cl 269*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movzbl %cl, %eax 270*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 271*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.comineq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 272*9880d681SAndroid Build Coastguard Worker ret i32 %res 273*9880d681SAndroid Build Coastguard Worker} 274*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.comineq.sd(<2 x double>, <2 x double>) nounwind readnone 275*9880d681SAndroid Build Coastguard Worker 276*9880d681SAndroid Build Coastguard Worker 277*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse2_cvtdq2ps(<4 x i32> %a0) { 278*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtdq2ps: 279*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 280*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtdq2ps %xmm0, %xmm0 281*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 282*9880d681SAndroid Build Coastguard Worker; 283*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtdq2ps: 284*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 285*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtdq2ps %xmm0, %xmm0 286*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 287*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32> %a0) ; <<4 x float>> [#uses=1] 288*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 289*9880d681SAndroid Build Coastguard Worker} 290*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32>) nounwind readnone 291*9880d681SAndroid Build Coastguard Worker 292*9880d681SAndroid Build Coastguard Worker 293*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_cvtpd2dq(<2 x double> %a0) { 294*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtpd2dq: 295*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 296*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtpd2dq %xmm0, %xmm0 297*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 298*9880d681SAndroid Build Coastguard Worker; 299*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtpd2dq: 300*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 301*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtpd2dq %xmm0, %xmm0 302*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 303*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double> %a0) ; <<4 x i32>> [#uses=1] 304*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 305*9880d681SAndroid Build Coastguard Worker} 306*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double>) nounwind readnone 307*9880d681SAndroid Build Coastguard Worker 308*9880d681SAndroid Build Coastguard Worker 309*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse2_cvtpd2ps(<2 x double> %a0) { 310*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtpd2ps: 311*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 312*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtpd2ps %xmm0, %xmm0 313*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 314*9880d681SAndroid Build Coastguard Worker; 315*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtpd2ps: 316*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 317*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtpd2ps %xmm0, %xmm0 318*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 319*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double> %a0) ; <<4 x float>> [#uses=1] 320*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 321*9880d681SAndroid Build Coastguard Worker} 322*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double>) nounwind readnone 323*9880d681SAndroid Build Coastguard Worker 324*9880d681SAndroid Build Coastguard Worker 325*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_cvtps2dq(<4 x float> %a0) { 326*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtps2dq: 327*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 328*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtps2dq %xmm0, %xmm0 329*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 330*9880d681SAndroid Build Coastguard Worker; 331*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtps2dq: 332*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 333*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtps2dq %xmm0, %xmm0 334*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 335*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %a0) ; <<4 x i32>> [#uses=1] 336*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 337*9880d681SAndroid Build Coastguard Worker} 338*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float>) nounwind readnone 339*9880d681SAndroid Build Coastguard Worker 340*9880d681SAndroid Build Coastguard Worker 341*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_cvtsd2si(<2 x double> %a0) { 342*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtsd2si: 343*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 344*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtsd2si %xmm0, %eax 345*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 346*9880d681SAndroid Build Coastguard Worker; 347*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtsd2si: 348*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 349*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtsd2si %xmm0, %eax 350*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 351*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %a0) ; <i32> [#uses=1] 352*9880d681SAndroid Build Coastguard Worker ret i32 %res 353*9880d681SAndroid Build Coastguard Worker} 354*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvtsd2si(<2 x double>) nounwind readnone 355*9880d681SAndroid Build Coastguard Worker 356*9880d681SAndroid Build Coastguard Worker 357*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse2_cvtsd2ss(<4 x float> %a0, <2 x double> %a1) { 358*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtsd2ss: 359*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 360*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtsd2ss %xmm1, %xmm0, %xmm0 361*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 362*9880d681SAndroid Build Coastguard Worker; 363*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtsd2ss: 364*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 365*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtsd2ss %xmm1, %xmm0, %xmm0 366*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 367*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float> %a0, <2 x double> %a1) ; <<4 x float>> [#uses=1] 368*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 369*9880d681SAndroid Build Coastguard Worker} 370*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float>, <2 x double>) nounwind readnone 371*9880d681SAndroid Build Coastguard Worker 372*9880d681SAndroid Build Coastguard Worker 373*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cvtsi2sd(<2 x double> %a0, i32 %a1) { 374*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtsi2sd: 375*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 376*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtsi2sdl {{[0-9]+}}(%esp), %xmm0, %xmm0 377*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 378*9880d681SAndroid Build Coastguard Worker; 379*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtsi2sd: 380*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 381*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtsi2sdl {{[0-9]+}}(%esp), %xmm0, %xmm0 382*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 383*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double> %a0, i32 %a1) ; <<2 x double>> [#uses=1] 384*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 385*9880d681SAndroid Build Coastguard Worker} 386*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double>, i32) nounwind readnone 387*9880d681SAndroid Build Coastguard Worker 388*9880d681SAndroid Build Coastguard Worker 389*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_cvtss2sd(<2 x double> %a0, <4 x float> %a1) { 390*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvtss2sd: 391*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 392*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtss2sd %xmm1, %xmm0, %xmm0 393*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 394*9880d681SAndroid Build Coastguard Worker; 395*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvtss2sd: 396*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 397*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtss2sd %xmm1, %xmm0, %xmm0 398*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 399*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.cvtss2sd(<2 x double> %a0, <4 x float> %a1) ; <<2 x double>> [#uses=1] 400*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 401*9880d681SAndroid Build Coastguard Worker} 402*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.cvtss2sd(<2 x double>, <4 x float>) nounwind readnone 403*9880d681SAndroid Build Coastguard Worker 404*9880d681SAndroid Build Coastguard Worker 405*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_cvttpd2dq(<2 x double> %a0) { 406*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvttpd2dq: 407*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 408*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvttpd2dq %xmm0, %xmm0 409*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 410*9880d681SAndroid Build Coastguard Worker; 411*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvttpd2dq: 412*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 413*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvttpd2dq %xmm0, %xmm0 414*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 415*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double> %a0) ; <<4 x i32>> [#uses=1] 416*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 417*9880d681SAndroid Build Coastguard Worker} 418*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double>) nounwind readnone 419*9880d681SAndroid Build Coastguard Worker 420*9880d681SAndroid Build Coastguard Worker 421*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_cvttps2dq(<4 x float> %a0) { 422*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvttps2dq: 423*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 424*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvttps2dq %xmm0, %xmm0 425*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 426*9880d681SAndroid Build Coastguard Worker; 427*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvttps2dq: 428*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 429*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvttps2dq %xmm0, %xmm0 430*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 431*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float> %a0) ; <<4 x i32>> [#uses=1] 432*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 433*9880d681SAndroid Build Coastguard Worker} 434*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float>) nounwind readnone 435*9880d681SAndroid Build Coastguard Worker 436*9880d681SAndroid Build Coastguard Worker 437*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_cvttsd2si(<2 x double> %a0) { 438*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_cvttsd2si: 439*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 440*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvttsd2si %xmm0, %eax 441*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 442*9880d681SAndroid Build Coastguard Worker; 443*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_cvttsd2si: 444*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 445*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvttsd2si %xmm0, %eax 446*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 447*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.cvttsd2si(<2 x double> %a0) ; <i32> [#uses=1] 448*9880d681SAndroid Build Coastguard Worker ret i32 %res 449*9880d681SAndroid Build Coastguard Worker} 450*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvttsd2si(<2 x double>) nounwind readnone 451*9880d681SAndroid Build Coastguard Worker 452*9880d681SAndroid Build Coastguard Worker 453*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_div_sd(<2 x double> %a0, <2 x double> %a1) { 454*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_div_sd: 455*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 456*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vdivsd %xmm1, %xmm0, %xmm0 457*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 458*9880d681SAndroid Build Coastguard Worker; 459*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_div_sd: 460*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 461*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vdivsd %xmm1, %xmm0, %xmm0 462*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 463*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.div.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1] 464*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 465*9880d681SAndroid Build Coastguard Worker} 466*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.div.sd(<2 x double>, <2 x double>) nounwind readnone 467*9880d681SAndroid Build Coastguard Worker 468*9880d681SAndroid Build Coastguard Worker 469*9880d681SAndroid Build Coastguard Worker 470*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_max_pd(<2 x double> %a0, <2 x double> %a1) { 471*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_max_pd: 472*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 473*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaxpd %xmm1, %xmm0, %xmm0 474*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 475*9880d681SAndroid Build Coastguard Worker; 476*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_max_pd: 477*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 478*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaxpd %xmm1, %xmm0, %xmm0 479*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 480*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.max.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1] 481*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 482*9880d681SAndroid Build Coastguard Worker} 483*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.pd(<2 x double>, <2 x double>) nounwind readnone 484*9880d681SAndroid Build Coastguard Worker 485*9880d681SAndroid Build Coastguard Worker 486*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_max_sd(<2 x double> %a0, <2 x double> %a1) { 487*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_max_sd: 488*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 489*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaxsd %xmm1, %xmm0, %xmm0 490*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 491*9880d681SAndroid Build Coastguard Worker; 492*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_max_sd: 493*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 494*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaxsd %xmm1, %xmm0, %xmm0 495*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 496*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1] 497*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 498*9880d681SAndroid Build Coastguard Worker} 499*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.max.sd(<2 x double>, <2 x double>) nounwind readnone 500*9880d681SAndroid Build Coastguard Worker 501*9880d681SAndroid Build Coastguard Worker 502*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_min_pd(<2 x double> %a0, <2 x double> %a1) { 503*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_min_pd: 504*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 505*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vminpd %xmm1, %xmm0, %xmm0 506*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 507*9880d681SAndroid Build Coastguard Worker; 508*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_min_pd: 509*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 510*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vminpd %xmm1, %xmm0, %xmm0 511*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 512*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.min.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1] 513*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 514*9880d681SAndroid Build Coastguard Worker} 515*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.pd(<2 x double>, <2 x double>) nounwind readnone 516*9880d681SAndroid Build Coastguard Worker 517*9880d681SAndroid Build Coastguard Worker 518*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_min_sd(<2 x double> %a0, <2 x double> %a1) { 519*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_min_sd: 520*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 521*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vminsd %xmm1, %xmm0, %xmm0 522*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 523*9880d681SAndroid Build Coastguard Worker; 524*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_min_sd: 525*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 526*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vminsd %xmm1, %xmm0, %xmm0 527*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 528*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1] 529*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 530*9880d681SAndroid Build Coastguard Worker} 531*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.min.sd(<2 x double>, <2 x double>) nounwind readnone 532*9880d681SAndroid Build Coastguard Worker 533*9880d681SAndroid Build Coastguard Worker 534*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_movmsk_pd(<2 x double> %a0) { 535*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_movmsk_pd: 536*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 537*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmovmskpd %xmm0, %eax 538*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 539*9880d681SAndroid Build Coastguard Worker; 540*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_movmsk_pd: 541*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 542*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovmskpd %xmm0, %eax 543*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 544*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.movmsk.pd(<2 x double> %a0) ; <i32> [#uses=1] 545*9880d681SAndroid Build Coastguard Worker ret i32 %res 546*9880d681SAndroid Build Coastguard Worker} 547*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.movmsk.pd(<2 x double>) nounwind readnone 548*9880d681SAndroid Build Coastguard Worker 549*9880d681SAndroid Build Coastguard Worker 550*9880d681SAndroid Build Coastguard Worker 551*9880d681SAndroid Build Coastguard Worker 552*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_mul_sd(<2 x double> %a0, <2 x double> %a1) { 553*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_mul_sd: 554*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 555*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmulsd %xmm1, %xmm0, %xmm0 556*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 557*9880d681SAndroid Build Coastguard Worker; 558*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_mul_sd: 559*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 560*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmulsd %xmm1, %xmm0, %xmm0 561*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 562*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.mul.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1] 563*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 564*9880d681SAndroid Build Coastguard Worker} 565*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.mul.sd(<2 x double>, <2 x double>) nounwind readnone 566*9880d681SAndroid Build Coastguard Worker 567*9880d681SAndroid Build Coastguard Worker 568*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_packssdw_128(<4 x i32> %a0, <4 x i32> %a1) { 569*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_packssdw_128: 570*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 571*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpackssdw %xmm1, %xmm0, %xmm0 572*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 573*9880d681SAndroid Build Coastguard Worker; 574*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_packssdw_128: 575*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 576*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpackssdw %xmm1, %xmm0, %xmm0 577*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 578*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %a0, <4 x i32> %a1) ; <<8 x i16>> [#uses=1] 579*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 580*9880d681SAndroid Build Coastguard Worker} 581*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32>, <4 x i32>) nounwind readnone 582*9880d681SAndroid Build Coastguard Worker 583*9880d681SAndroid Build Coastguard Worker 584*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_packsswb_128(<8 x i16> %a0, <8 x i16> %a1) { 585*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_packsswb_128: 586*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 587*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 588*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 589*9880d681SAndroid Build Coastguard Worker; 590*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_packsswb_128: 591*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 592*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpacksswb %xmm1, %xmm0, %xmm0 593*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 594*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16> %a0, <8 x i16> %a1) ; <<16 x i8>> [#uses=1] 595*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 596*9880d681SAndroid Build Coastguard Worker} 597*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16>, <8 x i16>) nounwind readnone 598*9880d681SAndroid Build Coastguard Worker 599*9880d681SAndroid Build Coastguard Worker 600*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_packuswb_128(<8 x i16> %a0, <8 x i16> %a1) { 601*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_packuswb_128: 602*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 603*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpackuswb %xmm1, %xmm0, %xmm0 604*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 605*9880d681SAndroid Build Coastguard Worker; 606*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_packuswb_128: 607*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 608*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpackuswb %xmm1, %xmm0, %xmm0 609*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 610*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16> %a0, <8 x i16> %a1) ; <<16 x i8>> [#uses=1] 611*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 612*9880d681SAndroid Build Coastguard Worker} 613*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>) nounwind readnone 614*9880d681SAndroid Build Coastguard Worker 615*9880d681SAndroid Build Coastguard Worker 616*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_padds_b(<16 x i8> %a0, <16 x i8> %a1) { 617*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_padds_b: 618*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 619*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpaddsb %xmm1, %xmm0, %xmm0 620*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 621*9880d681SAndroid Build Coastguard Worker; 622*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_padds_b: 623*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 624*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpaddsb %xmm1, %xmm0, %xmm0 625*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 626*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 627*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 628*9880d681SAndroid Build Coastguard Worker} 629*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8>, <16 x i8>) nounwind readnone 630*9880d681SAndroid Build Coastguard Worker 631*9880d681SAndroid Build Coastguard Worker 632*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_padds_w(<8 x i16> %a0, <8 x i16> %a1) { 633*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_padds_w: 634*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 635*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpaddsw %xmm1, %xmm0, %xmm0 636*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 637*9880d681SAndroid Build Coastguard Worker; 638*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_padds_w: 639*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 640*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpaddsw %xmm1, %xmm0, %xmm0 641*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 642*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 643*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 644*9880d681SAndroid Build Coastguard Worker} 645*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16>, <8 x i16>) nounwind readnone 646*9880d681SAndroid Build Coastguard Worker 647*9880d681SAndroid Build Coastguard Worker 648*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_paddus_b(<16 x i8> %a0, <16 x i8> %a1) { 649*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_paddus_b: 650*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 651*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpaddusb %xmm1, %xmm0, %xmm0 652*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 653*9880d681SAndroid Build Coastguard Worker; 654*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_paddus_b: 655*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 656*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpaddusb %xmm1, %xmm0, %xmm0 657*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 658*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 659*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 660*9880d681SAndroid Build Coastguard Worker} 661*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8>, <16 x i8>) nounwind readnone 662*9880d681SAndroid Build Coastguard Worker 663*9880d681SAndroid Build Coastguard Worker 664*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_paddus_w(<8 x i16> %a0, <8 x i16> %a1) { 665*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_paddus_w: 666*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 667*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpaddusw %xmm1, %xmm0, %xmm0 668*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 669*9880d681SAndroid Build Coastguard Worker; 670*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_paddus_w: 671*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 672*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpaddusw %xmm1, %xmm0, %xmm0 673*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 674*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 675*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 676*9880d681SAndroid Build Coastguard Worker} 677*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16>, <8 x i16>) nounwind readnone 678*9880d681SAndroid Build Coastguard Worker 679*9880d681SAndroid Build Coastguard Worker 680*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_pavg_b(<16 x i8> %a0, <16 x i8> %a1) { 681*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pavg_b: 682*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 683*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpavgb %xmm1, %xmm0, %xmm0 684*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 685*9880d681SAndroid Build Coastguard Worker; 686*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pavg_b: 687*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 688*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpavgb %xmm1, %xmm0, %xmm0 689*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 690*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 691*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 692*9880d681SAndroid Build Coastguard Worker} 693*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8>, <16 x i8>) nounwind readnone 694*9880d681SAndroid Build Coastguard Worker 695*9880d681SAndroid Build Coastguard Worker 696*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pavg_w(<8 x i16> %a0, <8 x i16> %a1) { 697*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pavg_w: 698*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 699*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpavgw %xmm1, %xmm0, %xmm0 700*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 701*9880d681SAndroid Build Coastguard Worker; 702*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pavg_w: 703*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 704*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpavgw %xmm1, %xmm0, %xmm0 705*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 706*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 707*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 708*9880d681SAndroid Build Coastguard Worker} 709*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16>, <8 x i16>) nounwind readnone 710*9880d681SAndroid Build Coastguard Worker 711*9880d681SAndroid Build Coastguard Worker 712*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_pmadd_wd(<8 x i16> %a0, <8 x i16> %a1) { 713*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmadd_wd: 714*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 715*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmaddwd %xmm1, %xmm0, %xmm0 716*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 717*9880d681SAndroid Build Coastguard Worker; 718*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmadd_wd: 719*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 720*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaddwd %xmm1, %xmm0, %xmm0 721*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 722*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16> %a0, <8 x i16> %a1) ; <<4 x i32>> [#uses=1] 723*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 724*9880d681SAndroid Build Coastguard Worker} 725*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16>, <8 x i16>) nounwind readnone 726*9880d681SAndroid Build Coastguard Worker 727*9880d681SAndroid Build Coastguard Worker 728*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pmaxs_w(<8 x i16> %a0, <8 x i16> %a1) { 729*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmaxs_w: 730*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 731*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmaxsw %xmm1, %xmm0, %xmm0 732*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 733*9880d681SAndroid Build Coastguard Worker; 734*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmaxs_w: 735*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 736*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaxsw %xmm1, %xmm0, %xmm0 737*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 738*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.pmaxs.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 739*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 740*9880d681SAndroid Build Coastguard Worker} 741*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmaxs.w(<8 x i16>, <8 x i16>) nounwind readnone 742*9880d681SAndroid Build Coastguard Worker 743*9880d681SAndroid Build Coastguard Worker 744*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_pmaxu_b(<16 x i8> %a0, <16 x i8> %a1) { 745*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmaxu_b: 746*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 747*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmaxub %xmm1, %xmm0, %xmm0 748*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 749*9880d681SAndroid Build Coastguard Worker; 750*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmaxu_b: 751*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 752*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaxub %xmm1, %xmm0, %xmm0 753*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 754*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.pmaxu.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 755*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 756*9880d681SAndroid Build Coastguard Worker} 757*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pmaxu.b(<16 x i8>, <16 x i8>) nounwind readnone 758*9880d681SAndroid Build Coastguard Worker 759*9880d681SAndroid Build Coastguard Worker 760*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pmins_w(<8 x i16> %a0, <8 x i16> %a1) { 761*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmins_w: 762*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 763*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpminsw %xmm1, %xmm0, %xmm0 764*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 765*9880d681SAndroid Build Coastguard Worker; 766*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmins_w: 767*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 768*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpminsw %xmm1, %xmm0, %xmm0 769*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 770*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.pmins.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 771*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 772*9880d681SAndroid Build Coastguard Worker} 773*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmins.w(<8 x i16>, <8 x i16>) nounwind readnone 774*9880d681SAndroid Build Coastguard Worker 775*9880d681SAndroid Build Coastguard Worker 776*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_pminu_b(<16 x i8> %a0, <16 x i8> %a1) { 777*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pminu_b: 778*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 779*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpminub %xmm1, %xmm0, %xmm0 780*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 781*9880d681SAndroid Build Coastguard Worker; 782*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pminu_b: 783*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 784*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpminub %xmm1, %xmm0, %xmm0 785*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 786*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.pminu.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 787*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 788*9880d681SAndroid Build Coastguard Worker} 789*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.pminu.b(<16 x i8>, <16 x i8>) nounwind readnone 790*9880d681SAndroid Build Coastguard Worker 791*9880d681SAndroid Build Coastguard Worker 792*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_pmovmskb_128(<16 x i8> %a0) { 793*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmovmskb_128: 794*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 795*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmovmskb %xmm0, %eax 796*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 797*9880d681SAndroid Build Coastguard Worker; 798*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmovmskb_128: 799*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 800*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmovmskb %xmm0, %eax 801*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 802*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8> %a0) ; <i32> [#uses=1] 803*9880d681SAndroid Build Coastguard Worker ret i32 %res 804*9880d681SAndroid Build Coastguard Worker} 805*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8>) nounwind readnone 806*9880d681SAndroid Build Coastguard Worker 807*9880d681SAndroid Build Coastguard Worker 808*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pmulh_w(<8 x i16> %a0, <8 x i16> %a1) { 809*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmulh_w: 810*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 811*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmulhw %xmm1, %xmm0, %xmm0 812*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 813*9880d681SAndroid Build Coastguard Worker; 814*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmulh_w: 815*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 816*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmulhw %xmm1, %xmm0, %xmm0 817*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 818*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 819*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 820*9880d681SAndroid Build Coastguard Worker} 821*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16>, <8 x i16>) nounwind readnone 822*9880d681SAndroid Build Coastguard Worker 823*9880d681SAndroid Build Coastguard Worker 824*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pmulhu_w(<8 x i16> %a0, <8 x i16> %a1) { 825*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmulhu_w: 826*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 827*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmulhuw %xmm1, %xmm0, %xmm0 828*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 829*9880d681SAndroid Build Coastguard Worker; 830*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmulhu_w: 831*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 832*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmulhuw %xmm1, %xmm0, %xmm0 833*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 834*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 835*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 836*9880d681SAndroid Build Coastguard Worker} 837*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16>, <8 x i16>) nounwind readnone 838*9880d681SAndroid Build Coastguard Worker 839*9880d681SAndroid Build Coastguard Worker 840*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_pmulu_dq(<4 x i32> %a0, <4 x i32> %a1) { 841*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pmulu_dq: 842*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 843*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmuludq %xmm1, %xmm0, %xmm0 844*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 845*9880d681SAndroid Build Coastguard Worker; 846*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pmulu_dq: 847*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 848*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmuludq %xmm1, %xmm0, %xmm0 849*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 850*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32> %a0, <4 x i32> %a1) ; <<2 x i64>> [#uses=1] 851*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 852*9880d681SAndroid Build Coastguard Worker} 853*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32>, <4 x i32>) nounwind readnone 854*9880d681SAndroid Build Coastguard Worker 855*9880d681SAndroid Build Coastguard Worker 856*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_psad_bw(<16 x i8> %a0, <16 x i8> %a1) { 857*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psad_bw: 858*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 859*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsadbw %xmm1, %xmm0, %xmm0 860*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 861*9880d681SAndroid Build Coastguard Worker; 862*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psad_bw: 863*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 864*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsadbw %xmm1, %xmm0, %xmm0 865*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 866*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %a0, <16 x i8> %a1) ; <<2 x i64>> [#uses=1] 867*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 868*9880d681SAndroid Build Coastguard Worker} 869*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8>, <16 x i8>) nounwind readnone 870*9880d681SAndroid Build Coastguard Worker 871*9880d681SAndroid Build Coastguard Worker 872*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psll_d(<4 x i32> %a0, <4 x i32> %a1) { 873*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psll_d: 874*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 875*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpslld %xmm1, %xmm0, %xmm0 876*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 877*9880d681SAndroid Build Coastguard Worker; 878*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psll_d: 879*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 880*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpslld %xmm1, %xmm0, %xmm0 881*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 882*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 883*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 884*9880d681SAndroid Build Coastguard Worker} 885*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32>, <4 x i32>) nounwind readnone 886*9880d681SAndroid Build Coastguard Worker 887*9880d681SAndroid Build Coastguard Worker 888*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_psll_q(<2 x i64> %a0, <2 x i64> %a1) { 889*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psll_q: 890*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 891*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsllq %xmm1, %xmm0, %xmm0 892*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 893*9880d681SAndroid Build Coastguard Worker; 894*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psll_q: 895*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 896*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsllq %xmm1, %xmm0, %xmm0 897*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 898*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1] 899*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 900*9880d681SAndroid Build Coastguard Worker} 901*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64>, <2 x i64>) nounwind readnone 902*9880d681SAndroid Build Coastguard Worker 903*9880d681SAndroid Build Coastguard Worker 904*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psll_w(<8 x i16> %a0, <8 x i16> %a1) { 905*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psll_w: 906*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 907*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsllw %xmm1, %xmm0, %xmm0 908*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 909*9880d681SAndroid Build Coastguard Worker; 910*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psll_w: 911*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 912*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsllw %xmm1, %xmm0, %xmm0 913*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 914*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 915*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 916*9880d681SAndroid Build Coastguard Worker} 917*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16>, <8 x i16>) nounwind readnone 918*9880d681SAndroid Build Coastguard Worker 919*9880d681SAndroid Build Coastguard Worker 920*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_pslli_d(<4 x i32> %a0) { 921*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pslli_d: 922*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 923*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpslld $7, %xmm0, %xmm0 924*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 925*9880d681SAndroid Build Coastguard Worker; 926*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pslli_d: 927*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 928*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpslld $7, %xmm0, %xmm0 929*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 930*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32> %a0, i32 7) ; <<4 x i32>> [#uses=1] 931*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 932*9880d681SAndroid Build Coastguard Worker} 933*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32>, i32) nounwind readnone 934*9880d681SAndroid Build Coastguard Worker 935*9880d681SAndroid Build Coastguard Worker 936*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_pslli_q(<2 x i64> %a0) { 937*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pslli_q: 938*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 939*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsllq $7, %xmm0, %xmm0 940*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 941*9880d681SAndroid Build Coastguard Worker; 942*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pslli_q: 943*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 944*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsllq $7, %xmm0, %xmm0 945*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 946*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %a0, i32 7) ; <<2 x i64>> [#uses=1] 947*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 948*9880d681SAndroid Build Coastguard Worker} 949*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64>, i32) nounwind readnone 950*9880d681SAndroid Build Coastguard Worker 951*9880d681SAndroid Build Coastguard Worker 952*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_pslli_w(<8 x i16> %a0) { 953*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_pslli_w: 954*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 955*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsllw $7, %xmm0, %xmm0 956*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 957*9880d681SAndroid Build Coastguard Worker; 958*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_pslli_w: 959*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 960*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsllw $7, %xmm0, %xmm0 961*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 962*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16> %a0, i32 7) ; <<8 x i16>> [#uses=1] 963*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 964*9880d681SAndroid Build Coastguard Worker} 965*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16>, i32) nounwind readnone 966*9880d681SAndroid Build Coastguard Worker 967*9880d681SAndroid Build Coastguard Worker 968*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psra_d(<4 x i32> %a0, <4 x i32> %a1) { 969*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psra_d: 970*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 971*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsrad %xmm1, %xmm0, %xmm0 972*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 973*9880d681SAndroid Build Coastguard Worker; 974*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psra_d: 975*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 976*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrad %xmm1, %xmm0, %xmm0 977*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 978*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 979*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 980*9880d681SAndroid Build Coastguard Worker} 981*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32>, <4 x i32>) nounwind readnone 982*9880d681SAndroid Build Coastguard Worker 983*9880d681SAndroid Build Coastguard Worker 984*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psra_w(<8 x i16> %a0, <8 x i16> %a1) { 985*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psra_w: 986*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 987*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsraw %xmm1, %xmm0, %xmm0 988*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 989*9880d681SAndroid Build Coastguard Worker; 990*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psra_w: 991*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 992*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsraw %xmm1, %xmm0, %xmm0 993*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 994*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 995*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 996*9880d681SAndroid Build Coastguard Worker} 997*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16>, <8 x i16>) nounwind readnone 998*9880d681SAndroid Build Coastguard Worker 999*9880d681SAndroid Build Coastguard Worker 1000*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psrai_d(<4 x i32> %a0) { 1001*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrai_d: 1002*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1003*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsrad $7, %xmm0, %xmm0 1004*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1005*9880d681SAndroid Build Coastguard Worker; 1006*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrai_d: 1007*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1008*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrad $7, %xmm0, %xmm0 1009*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1010*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32> %a0, i32 7) ; <<4 x i32>> [#uses=1] 1011*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1012*9880d681SAndroid Build Coastguard Worker} 1013*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32>, i32) nounwind readnone 1014*9880d681SAndroid Build Coastguard Worker 1015*9880d681SAndroid Build Coastguard Worker 1016*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psrai_w(<8 x i16> %a0) { 1017*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrai_w: 1018*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1019*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsraw $7, %xmm0, %xmm0 1020*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1021*9880d681SAndroid Build Coastguard Worker; 1022*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrai_w: 1023*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1024*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsraw $7, %xmm0, %xmm0 1025*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1026*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16> %a0, i32 7) ; <<8 x i16>> [#uses=1] 1027*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 1028*9880d681SAndroid Build Coastguard Worker} 1029*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16>, i32) nounwind readnone 1030*9880d681SAndroid Build Coastguard Worker 1031*9880d681SAndroid Build Coastguard Worker 1032*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psrl_d(<4 x i32> %a0, <4 x i32> %a1) { 1033*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrl_d: 1034*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1035*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsrld %xmm1, %xmm0, %xmm0 1036*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1037*9880d681SAndroid Build Coastguard Worker; 1038*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrl_d: 1039*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1040*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrld %xmm1, %xmm0, %xmm0 1041*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1042*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 1043*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1044*9880d681SAndroid Build Coastguard Worker} 1045*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32>, <4 x i32>) nounwind readnone 1046*9880d681SAndroid Build Coastguard Worker 1047*9880d681SAndroid Build Coastguard Worker 1048*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_psrl_q(<2 x i64> %a0, <2 x i64> %a1) { 1049*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrl_q: 1050*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1051*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsrlq %xmm1, %xmm0, %xmm0 1052*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1053*9880d681SAndroid Build Coastguard Worker; 1054*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrl_q: 1055*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1056*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrlq %xmm1, %xmm0, %xmm0 1057*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1058*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1] 1059*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1060*9880d681SAndroid Build Coastguard Worker} 1061*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64>, <2 x i64>) nounwind readnone 1062*9880d681SAndroid Build Coastguard Worker 1063*9880d681SAndroid Build Coastguard Worker 1064*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psrl_w(<8 x i16> %a0, <8 x i16> %a1) { 1065*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrl_w: 1066*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1067*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsrlw %xmm1, %xmm0, %xmm0 1068*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1069*9880d681SAndroid Build Coastguard Worker; 1070*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrl_w: 1071*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1072*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrlw %xmm1, %xmm0, %xmm0 1073*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1074*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 1075*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 1076*9880d681SAndroid Build Coastguard Worker} 1077*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16>, <8 x i16>) nounwind readnone 1078*9880d681SAndroid Build Coastguard Worker 1079*9880d681SAndroid Build Coastguard Worker 1080*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse2_psrli_d(<4 x i32> %a0) { 1081*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrli_d: 1082*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1083*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsrld $7, %xmm0, %xmm0 1084*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1085*9880d681SAndroid Build Coastguard Worker; 1086*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrli_d: 1087*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1088*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrld $7, %xmm0, %xmm0 1089*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1090*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32> %a0, i32 7) ; <<4 x i32>> [#uses=1] 1091*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1092*9880d681SAndroid Build Coastguard Worker} 1093*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32>, i32) nounwind readnone 1094*9880d681SAndroid Build Coastguard Worker 1095*9880d681SAndroid Build Coastguard Worker 1096*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse2_psrli_q(<2 x i64> %a0) { 1097*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrli_q: 1098*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1099*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsrlq $7, %xmm0, %xmm0 1100*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1101*9880d681SAndroid Build Coastguard Worker; 1102*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrli_q: 1103*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1104*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrlq $7, %xmm0, %xmm0 1105*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1106*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %a0, i32 7) ; <<2 x i64>> [#uses=1] 1107*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1108*9880d681SAndroid Build Coastguard Worker} 1109*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64>, i32) nounwind readnone 1110*9880d681SAndroid Build Coastguard Worker 1111*9880d681SAndroid Build Coastguard Worker 1112*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psrli_w(<8 x i16> %a0) { 1113*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psrli_w: 1114*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1115*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsrlw $7, %xmm0, %xmm0 1116*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1117*9880d681SAndroid Build Coastguard Worker; 1118*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psrli_w: 1119*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1120*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrlw $7, %xmm0, %xmm0 1121*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1122*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16> %a0, i32 7) ; <<8 x i16>> [#uses=1] 1123*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 1124*9880d681SAndroid Build Coastguard Worker} 1125*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16>, i32) nounwind readnone 1126*9880d681SAndroid Build Coastguard Worker 1127*9880d681SAndroid Build Coastguard Worker 1128*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_psubs_b(<16 x i8> %a0, <16 x i8> %a1) { 1129*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psubs_b: 1130*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1131*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsubsb %xmm1, %xmm0, %xmm0 1132*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1133*9880d681SAndroid Build Coastguard Worker; 1134*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psubs_b: 1135*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1136*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsubsb %xmm1, %xmm0, %xmm0 1137*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1138*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 1139*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 1140*9880d681SAndroid Build Coastguard Worker} 1141*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8>, <16 x i8>) nounwind readnone 1142*9880d681SAndroid Build Coastguard Worker 1143*9880d681SAndroid Build Coastguard Worker 1144*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psubs_w(<8 x i16> %a0, <8 x i16> %a1) { 1145*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psubs_w: 1146*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1147*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsubsw %xmm1, %xmm0, %xmm0 1148*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1149*9880d681SAndroid Build Coastguard Worker; 1150*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psubs_w: 1151*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1152*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsubsw %xmm1, %xmm0, %xmm0 1153*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1154*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 1155*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 1156*9880d681SAndroid Build Coastguard Worker} 1157*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16>, <8 x i16>) nounwind readnone 1158*9880d681SAndroid Build Coastguard Worker 1159*9880d681SAndroid Build Coastguard Worker 1160*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse2_psubus_b(<16 x i8> %a0, <16 x i8> %a1) { 1161*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psubus_b: 1162*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1163*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsubusb %xmm1, %xmm0, %xmm0 1164*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1165*9880d681SAndroid Build Coastguard Worker; 1166*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psubus_b: 1167*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1168*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsubusb %xmm1, %xmm0, %xmm0 1169*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1170*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 1171*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 1172*9880d681SAndroid Build Coastguard Worker} 1173*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8>, <16 x i8>) nounwind readnone 1174*9880d681SAndroid Build Coastguard Worker 1175*9880d681SAndroid Build Coastguard Worker 1176*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse2_psubus_w(<8 x i16> %a0, <8 x i16> %a1) { 1177*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_psubus_w: 1178*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1179*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsubusw %xmm1, %xmm0, %xmm0 1180*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1181*9880d681SAndroid Build Coastguard Worker; 1182*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_psubus_w: 1183*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1184*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsubusw %xmm1, %xmm0, %xmm0 1185*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1186*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 1187*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 1188*9880d681SAndroid Build Coastguard Worker} 1189*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16>, <8 x i16>) nounwind readnone 1190*9880d681SAndroid Build Coastguard Worker 1191*9880d681SAndroid Build Coastguard Worker 1192*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_sqrt_pd(<2 x double> %a0) { 1193*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_sqrt_pd: 1194*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1195*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vsqrtpd %xmm0, %xmm0 1196*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1197*9880d681SAndroid Build Coastguard Worker; 1198*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_sqrt_pd: 1199*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1200*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vsqrtpd %xmm0, %xmm0 1201*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1202*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double> %a0) ; <<2 x double>> [#uses=1] 1203*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1204*9880d681SAndroid Build Coastguard Worker} 1205*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double>) nounwind readnone 1206*9880d681SAndroid Build Coastguard Worker 1207*9880d681SAndroid Build Coastguard Worker 1208*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_sqrt_sd(<2 x double> %a0) { 1209*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_sqrt_sd: 1210*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1211*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vsqrtsd %xmm0, %xmm0, %xmm0 1212*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1213*9880d681SAndroid Build Coastguard Worker; 1214*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_sqrt_sd: 1215*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1216*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vsqrtsd %xmm0, %xmm0, %xmm0 1217*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1218*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double> %a0) ; <<2 x double>> [#uses=1] 1219*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1220*9880d681SAndroid Build Coastguard Worker} 1221*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double>) nounwind readnone 1222*9880d681SAndroid Build Coastguard Worker 1223*9880d681SAndroid Build Coastguard Worker 1224*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse2_sub_sd(<2 x double> %a0, <2 x double> %a1) { 1225*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_sub_sd: 1226*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1227*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vsubsd %xmm1, %xmm0, %xmm0 1228*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1229*9880d681SAndroid Build Coastguard Worker; 1230*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_sub_sd: 1231*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1232*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vsubsd %xmm1, %xmm0, %xmm0 1233*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1234*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse2.sub.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1] 1235*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1236*9880d681SAndroid Build Coastguard Worker} 1237*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse2.sub.sd(<2 x double>, <2 x double>) nounwind readnone 1238*9880d681SAndroid Build Coastguard Worker 1239*9880d681SAndroid Build Coastguard Worker 1240*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomieq_sd(<2 x double> %a0, <2 x double> %a1) { 1241*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_ucomieq_sd: 1242*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1243*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vucomisd %xmm1, %xmm0 1244*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setnp %al 1245*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sete %cl 1246*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: andb %al, %cl 1247*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movzbl %cl, %eax 1248*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1249*9880d681SAndroid Build Coastguard Worker; 1250*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_ucomieq_sd: 1251*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1252*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vucomisd %xmm1, %xmm0 1253*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setnp %al 1254*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sete %cl 1255*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: andb %al, %cl 1256*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movzbl %cl, %eax 1257*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1258*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 1259*9880d681SAndroid Build Coastguard Worker ret i32 %res 1260*9880d681SAndroid Build Coastguard Worker} 1261*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomieq.sd(<2 x double>, <2 x double>) nounwind readnone 1262*9880d681SAndroid Build Coastguard Worker 1263*9880d681SAndroid Build Coastguard Worker 1264*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomige_sd(<2 x double> %a0, <2 x double> %a1) { 1265*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_ucomige_sd: 1266*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1267*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 1268*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vucomisd %xmm1, %xmm0 1269*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setae %al 1270*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1271*9880d681SAndroid Build Coastguard Worker; 1272*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_ucomige_sd: 1273*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1274*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 1275*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vucomisd %xmm1, %xmm0 1276*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setae %al 1277*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1278*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.ucomige.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 1279*9880d681SAndroid Build Coastguard Worker ret i32 %res 1280*9880d681SAndroid Build Coastguard Worker} 1281*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomige.sd(<2 x double>, <2 x double>) nounwind readnone 1282*9880d681SAndroid Build Coastguard Worker 1283*9880d681SAndroid Build Coastguard Worker 1284*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomigt_sd(<2 x double> %a0, <2 x double> %a1) { 1285*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_ucomigt_sd: 1286*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1287*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 1288*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vucomisd %xmm1, %xmm0 1289*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 1290*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1291*9880d681SAndroid Build Coastguard Worker; 1292*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_ucomigt_sd: 1293*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1294*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 1295*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vucomisd %xmm1, %xmm0 1296*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 1297*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1298*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 1299*9880d681SAndroid Build Coastguard Worker ret i32 %res 1300*9880d681SAndroid Build Coastguard Worker} 1301*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomigt.sd(<2 x double>, <2 x double>) nounwind readnone 1302*9880d681SAndroid Build Coastguard Worker 1303*9880d681SAndroid Build Coastguard Worker 1304*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomile_sd(<2 x double> %a0, <2 x double> %a1) { 1305*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_ucomile_sd: 1306*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1307*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 1308*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vucomisd %xmm0, %xmm1 1309*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setae %al 1310*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1311*9880d681SAndroid Build Coastguard Worker; 1312*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_ucomile_sd: 1313*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1314*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 1315*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vucomisd %xmm0, %xmm1 1316*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setae %al 1317*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1318*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.ucomile.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 1319*9880d681SAndroid Build Coastguard Worker ret i32 %res 1320*9880d681SAndroid Build Coastguard Worker} 1321*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomile.sd(<2 x double>, <2 x double>) nounwind readnone 1322*9880d681SAndroid Build Coastguard Worker 1323*9880d681SAndroid Build Coastguard Worker 1324*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomilt_sd(<2 x double> %a0, <2 x double> %a1) { 1325*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_ucomilt_sd: 1326*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1327*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 1328*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vucomisd %xmm0, %xmm1 1329*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 1330*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1331*9880d681SAndroid Build Coastguard Worker; 1332*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_ucomilt_sd: 1333*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1334*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 1335*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vucomisd %xmm0, %xmm1 1336*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 1337*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1338*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 1339*9880d681SAndroid Build Coastguard Worker ret i32 %res 1340*9880d681SAndroid Build Coastguard Worker} 1341*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomilt.sd(<2 x double>, <2 x double>) nounwind readnone 1342*9880d681SAndroid Build Coastguard Worker 1343*9880d681SAndroid Build Coastguard Worker 1344*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse2_ucomineq_sd(<2 x double> %a0, <2 x double> %a1) { 1345*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse2_ucomineq_sd: 1346*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1347*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vucomisd %xmm1, %xmm0 1348*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setp %al 1349*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setne %cl 1350*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: orb %al, %cl 1351*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movzbl %cl, %eax 1352*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1353*9880d681SAndroid Build Coastguard Worker; 1354*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse2_ucomineq_sd: 1355*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1356*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vucomisd %xmm1, %xmm0 1357*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setp %al 1358*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setne %cl 1359*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: orb %al, %cl 1360*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movzbl %cl, %eax 1361*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1362*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 1363*9880d681SAndroid Build Coastguard Worker ret i32 %res 1364*9880d681SAndroid Build Coastguard Worker} 1365*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.ucomineq.sd(<2 x double>, <2 x double>) nounwind readnone 1366*9880d681SAndroid Build Coastguard Worker 1367*9880d681SAndroid Build Coastguard Worker 1368*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse3_addsub_pd(<2 x double> %a0, <2 x double> %a1) { 1369*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_addsub_pd: 1370*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1371*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaddsubpd %xmm1, %xmm0, %xmm0 1372*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1373*9880d681SAndroid Build Coastguard Worker; 1374*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_addsub_pd: 1375*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1376*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaddsubpd %xmm1, %xmm0, %xmm0 1377*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1378*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse3.addsub.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1] 1379*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1380*9880d681SAndroid Build Coastguard Worker} 1381*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse3.addsub.pd(<2 x double>, <2 x double>) nounwind readnone 1382*9880d681SAndroid Build Coastguard Worker 1383*9880d681SAndroid Build Coastguard Worker 1384*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse3_addsub_ps(<4 x float> %a0, <4 x float> %a1) { 1385*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_addsub_ps: 1386*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1387*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaddsubps %xmm1, %xmm0, %xmm0 1388*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1389*9880d681SAndroid Build Coastguard Worker; 1390*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_addsub_ps: 1391*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1392*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaddsubps %xmm1, %xmm0, %xmm0 1393*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1394*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse3.addsub.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1] 1395*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1396*9880d681SAndroid Build Coastguard Worker} 1397*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse3.addsub.ps(<4 x float>, <4 x float>) nounwind readnone 1398*9880d681SAndroid Build Coastguard Worker 1399*9880d681SAndroid Build Coastguard Worker 1400*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse3_hadd_pd(<2 x double> %a0, <2 x double> %a1) { 1401*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_hadd_pd: 1402*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1403*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vhaddpd %xmm1, %xmm0, %xmm0 1404*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1405*9880d681SAndroid Build Coastguard Worker; 1406*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_hadd_pd: 1407*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1408*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vhaddpd %xmm1, %xmm0, %xmm0 1409*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1410*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse3.hadd.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1] 1411*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1412*9880d681SAndroid Build Coastguard Worker} 1413*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse3.hadd.pd(<2 x double>, <2 x double>) nounwind readnone 1414*9880d681SAndroid Build Coastguard Worker 1415*9880d681SAndroid Build Coastguard Worker 1416*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse3_hadd_ps(<4 x float> %a0, <4 x float> %a1) { 1417*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_hadd_ps: 1418*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1419*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vhaddps %xmm1, %xmm0, %xmm0 1420*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1421*9880d681SAndroid Build Coastguard Worker; 1422*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_hadd_ps: 1423*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1424*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vhaddps %xmm1, %xmm0, %xmm0 1425*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1426*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse3.hadd.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1] 1427*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1428*9880d681SAndroid Build Coastguard Worker} 1429*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse3.hadd.ps(<4 x float>, <4 x float>) nounwind readnone 1430*9880d681SAndroid Build Coastguard Worker 1431*9880d681SAndroid Build Coastguard Worker 1432*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse3_hsub_pd(<2 x double> %a0, <2 x double> %a1) { 1433*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_hsub_pd: 1434*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1435*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vhsubpd %xmm1, %xmm0, %xmm0 1436*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1437*9880d681SAndroid Build Coastguard Worker; 1438*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_hsub_pd: 1439*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1440*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vhsubpd %xmm1, %xmm0, %xmm0 1441*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1442*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse3.hsub.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1] 1443*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1444*9880d681SAndroid Build Coastguard Worker} 1445*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse3.hsub.pd(<2 x double>, <2 x double>) nounwind readnone 1446*9880d681SAndroid Build Coastguard Worker 1447*9880d681SAndroid Build Coastguard Worker 1448*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse3_hsub_ps(<4 x float> %a0, <4 x float> %a1) { 1449*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_hsub_ps: 1450*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1451*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vhsubps %xmm1, %xmm0, %xmm0 1452*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1453*9880d681SAndroid Build Coastguard Worker; 1454*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_hsub_ps: 1455*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1456*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vhsubps %xmm1, %xmm0, %xmm0 1457*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1458*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse3.hsub.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1] 1459*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1460*9880d681SAndroid Build Coastguard Worker} 1461*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse3.hsub.ps(<4 x float>, <4 x float>) nounwind readnone 1462*9880d681SAndroid Build Coastguard Worker 1463*9880d681SAndroid Build Coastguard Worker 1464*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse3_ldu_dq(i8* %a0) { 1465*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse3_ldu_dq: 1466*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1467*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 1468*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vlddqu (%eax), %xmm0 1469*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1470*9880d681SAndroid Build Coastguard Worker; 1471*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse3_ldu_dq: 1472*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1473*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1474*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vlddqu (%eax), %xmm0 1475*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1476*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse3.ldu.dq(i8* %a0) ; <<16 x i8>> [#uses=1] 1477*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 1478*9880d681SAndroid Build Coastguard Worker} 1479*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse3.ldu.dq(i8*) nounwind readonly 1480*9880d681SAndroid Build Coastguard Worker 1481*9880d681SAndroid Build Coastguard Worker 1482*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse41_blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) { 1483*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_blendvpd: 1484*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1485*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0 1486*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1487*9880d681SAndroid Build Coastguard Worker; 1488*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_blendvpd: 1489*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1490*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vblendvpd %xmm2, %xmm1, %xmm0, %xmm0 1491*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1492*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse41.blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) ; <<2 x double>> [#uses=1] 1493*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1494*9880d681SAndroid Build Coastguard Worker} 1495*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.blendvpd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone 1496*9880d681SAndroid Build Coastguard Worker 1497*9880d681SAndroid Build Coastguard Worker 1498*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) { 1499*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_blendvps: 1500*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1501*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vblendvps %xmm2, %xmm1, %xmm0, %xmm0 1502*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1503*9880d681SAndroid Build Coastguard Worker; 1504*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_blendvps: 1505*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1506*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vblendvps %xmm2, %xmm1, %xmm0, %xmm0 1507*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1508*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse41.blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) ; <<4 x float>> [#uses=1] 1509*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1510*9880d681SAndroid Build Coastguard Worker} 1511*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.blendvps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone 1512*9880d681SAndroid Build Coastguard Worker 1513*9880d681SAndroid Build Coastguard Worker 1514*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse41_dppd(<2 x double> %a0, <2 x double> %a1) { 1515*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_dppd: 1516*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1517*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vdppd $7, %xmm1, %xmm0, %xmm0 1518*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1519*9880d681SAndroid Build Coastguard Worker; 1520*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_dppd: 1521*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1522*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vdppd $7, %xmm1, %xmm0, %xmm0 1523*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1524*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse41.dppd(<2 x double> %a0, <2 x double> %a1, i8 7) ; <<2 x double>> [#uses=1] 1525*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1526*9880d681SAndroid Build Coastguard Worker} 1527*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.dppd(<2 x double>, <2 x double>, i8) nounwind readnone 1528*9880d681SAndroid Build Coastguard Worker 1529*9880d681SAndroid Build Coastguard Worker 1530*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_dpps(<4 x float> %a0, <4 x float> %a1) { 1531*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_dpps: 1532*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1533*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vdpps $7, %xmm1, %xmm0, %xmm0 1534*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1535*9880d681SAndroid Build Coastguard Worker; 1536*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_dpps: 1537*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1538*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vdpps $7, %xmm1, %xmm0, %xmm0 1539*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1540*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse41.dpps(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1] 1541*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1542*9880d681SAndroid Build Coastguard Worker} 1543*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.dpps(<4 x float>, <4 x float>, i8) nounwind readnone 1544*9880d681SAndroid Build Coastguard Worker 1545*9880d681SAndroid Build Coastguard Worker 1546*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_insertps(<4 x float> %a0, <4 x float> %a1) { 1547*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_insertps: 1548*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1549*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vinsertps {{.*#+}} xmm0 = zero,xmm1[0],zero,xmm0[3] 1550*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1551*9880d681SAndroid Build Coastguard Worker; 1552*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_insertps: 1553*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1554*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vinsertps {{.*#+}} xmm0 = zero,xmm1[0],zero,xmm0[3] 1555*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1556*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %a0, <4 x float> %a1, i8 21) ; <<4 x float>> [#uses=1] 1557*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1558*9880d681SAndroid Build Coastguard Worker} 1559*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.insertps(<4 x float>, <4 x float>, i8) nounwind readnone 1560*9880d681SAndroid Build Coastguard Worker 1561*9880d681SAndroid Build Coastguard Worker 1562*9880d681SAndroid Build Coastguard Worker 1563*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_mpsadbw(<16 x i8> %a0, <16 x i8> %a1) { 1564*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_mpsadbw: 1565*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1566*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmpsadbw $7, %xmm1, %xmm0, %xmm0 1567*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1568*9880d681SAndroid Build Coastguard Worker; 1569*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_mpsadbw: 1570*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1571*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmpsadbw $7, %xmm1, %xmm0, %xmm0 1572*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1573*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <<8 x i16>> [#uses=1] 1574*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 1575*9880d681SAndroid Build Coastguard Worker} 1576*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8>, <16 x i8>, i8) nounwind readnone 1577*9880d681SAndroid Build Coastguard Worker 1578*9880d681SAndroid Build Coastguard Worker 1579*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_packusdw(<4 x i32> %a0, <4 x i32> %a1) { 1580*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_packusdw: 1581*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1582*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpackusdw %xmm1, %xmm0, %xmm0 1583*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1584*9880d681SAndroid Build Coastguard Worker; 1585*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_packusdw: 1586*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1587*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpackusdw %xmm1, %xmm0, %xmm0 1588*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1589*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32> %a0, <4 x i32> %a1) ; <<8 x i16>> [#uses=1] 1590*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 1591*9880d681SAndroid Build Coastguard Worker} 1592*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32>, <4 x i32>) nounwind readnone 1593*9880d681SAndroid Build Coastguard Worker 1594*9880d681SAndroid Build Coastguard Worker 1595*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse41_pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) { 1596*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pblendvb: 1597*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1598*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpblendvb %xmm2, %xmm1, %xmm0, %xmm0 1599*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1600*9880d681SAndroid Build Coastguard Worker; 1601*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pblendvb: 1602*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1603*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpblendvb %xmm2, %xmm1, %xmm0, %xmm0 1604*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1605*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) ; <<16 x i8>> [#uses=1] 1606*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 1607*9880d681SAndroid Build Coastguard Worker} 1608*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone 1609*9880d681SAndroid Build Coastguard Worker 1610*9880d681SAndroid Build Coastguard Worker 1611*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_phminposuw(<8 x i16> %a0) { 1612*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_phminposuw: 1613*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1614*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vphminposuw %xmm0, %xmm0 1615*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1616*9880d681SAndroid Build Coastguard Worker; 1617*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_phminposuw: 1618*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1619*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphminposuw %xmm0, %xmm0 1620*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1621*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16> %a0) ; <<8 x i16>> [#uses=1] 1622*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 1623*9880d681SAndroid Build Coastguard Worker} 1624*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16>) nounwind readnone 1625*9880d681SAndroid Build Coastguard Worker 1626*9880d681SAndroid Build Coastguard Worker 1627*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse41_pmaxsb(<16 x i8> %a0, <16 x i8> %a1) { 1628*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pmaxsb: 1629*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1630*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmaxsb %xmm1, %xmm0, %xmm0 1631*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1632*9880d681SAndroid Build Coastguard Worker; 1633*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pmaxsb: 1634*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1635*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaxsb %xmm1, %xmm0, %xmm0 1636*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1637*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 1638*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 1639*9880d681SAndroid Build Coastguard Worker} 1640*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8>, <16 x i8>) nounwind readnone 1641*9880d681SAndroid Build Coastguard Worker 1642*9880d681SAndroid Build Coastguard Worker 1643*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse41_pmaxsd(<4 x i32> %a0, <4 x i32> %a1) { 1644*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pmaxsd: 1645*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1646*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmaxsd %xmm1, %xmm0, %xmm0 1647*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1648*9880d681SAndroid Build Coastguard Worker; 1649*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pmaxsd: 1650*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1651*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaxsd %xmm1, %xmm0, %xmm0 1652*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1653*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 1654*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1655*9880d681SAndroid Build Coastguard Worker} 1656*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32>, <4 x i32>) nounwind readnone 1657*9880d681SAndroid Build Coastguard Worker 1658*9880d681SAndroid Build Coastguard Worker 1659*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse41_pmaxud(<4 x i32> %a0, <4 x i32> %a1) { 1660*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pmaxud: 1661*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1662*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmaxud %xmm1, %xmm0, %xmm0 1663*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1664*9880d681SAndroid Build Coastguard Worker; 1665*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pmaxud: 1666*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1667*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaxud %xmm1, %xmm0, %xmm0 1668*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1669*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 1670*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1671*9880d681SAndroid Build Coastguard Worker} 1672*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32>, <4 x i32>) nounwind readnone 1673*9880d681SAndroid Build Coastguard Worker 1674*9880d681SAndroid Build Coastguard Worker 1675*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_pmaxuw(<8 x i16> %a0, <8 x i16> %a1) { 1676*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pmaxuw: 1677*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1678*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmaxuw %xmm1, %xmm0, %xmm0 1679*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1680*9880d681SAndroid Build Coastguard Worker; 1681*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pmaxuw: 1682*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1683*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaxuw %xmm1, %xmm0, %xmm0 1684*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1685*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 1686*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 1687*9880d681SAndroid Build Coastguard Worker} 1688*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16>, <8 x i16>) nounwind readnone 1689*9880d681SAndroid Build Coastguard Worker 1690*9880d681SAndroid Build Coastguard Worker 1691*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse41_pminsb(<16 x i8> %a0, <16 x i8> %a1) { 1692*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pminsb: 1693*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1694*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpminsb %xmm1, %xmm0, %xmm0 1695*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1696*9880d681SAndroid Build Coastguard Worker; 1697*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pminsb: 1698*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1699*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpminsb %xmm1, %xmm0, %xmm0 1700*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1701*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 1702*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 1703*9880d681SAndroid Build Coastguard Worker} 1704*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8>, <16 x i8>) nounwind readnone 1705*9880d681SAndroid Build Coastguard Worker 1706*9880d681SAndroid Build Coastguard Worker 1707*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse41_pminsd(<4 x i32> %a0, <4 x i32> %a1) { 1708*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pminsd: 1709*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1710*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpminsd %xmm1, %xmm0, %xmm0 1711*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1712*9880d681SAndroid Build Coastguard Worker; 1713*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pminsd: 1714*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1715*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpminsd %xmm1, %xmm0, %xmm0 1716*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1717*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 1718*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1719*9880d681SAndroid Build Coastguard Worker} 1720*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32>, <4 x i32>) nounwind readnone 1721*9880d681SAndroid Build Coastguard Worker 1722*9880d681SAndroid Build Coastguard Worker 1723*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_sse41_pminud(<4 x i32> %a0, <4 x i32> %a1) { 1724*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pminud: 1725*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1726*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpminud %xmm1, %xmm0, %xmm0 1727*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1728*9880d681SAndroid Build Coastguard Worker; 1729*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pminud: 1730*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1731*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpminud %xmm1, %xmm0, %xmm0 1732*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1733*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.sse41.pminud(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 1734*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1735*9880d681SAndroid Build Coastguard Worker} 1736*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.sse41.pminud(<4 x i32>, <4 x i32>) nounwind readnone 1737*9880d681SAndroid Build Coastguard Worker 1738*9880d681SAndroid Build Coastguard Worker 1739*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_sse41_pminuw(<8 x i16> %a0, <8 x i16> %a1) { 1740*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pminuw: 1741*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1742*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpminuw %xmm1, %xmm0, %xmm0 1743*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1744*9880d681SAndroid Build Coastguard Worker; 1745*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pminuw: 1746*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1747*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpminuw %xmm1, %xmm0, %xmm0 1748*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1749*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 1750*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 1751*9880d681SAndroid Build Coastguard Worker} 1752*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16>, <8 x i16>) nounwind readnone 1753*9880d681SAndroid Build Coastguard Worker 1754*9880d681SAndroid Build Coastguard Worker 1755*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_sse41_pmuldq(<4 x i32> %a0, <4 x i32> %a1) { 1756*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_pmuldq: 1757*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1758*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmuldq %xmm1, %xmm0, %xmm0 1759*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1760*9880d681SAndroid Build Coastguard Worker; 1761*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_pmuldq: 1762*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1763*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmuldq %xmm1, %xmm0, %xmm0 1764*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1765*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32> %a0, <4 x i32> %a1) ; <<2 x i64>> [#uses=1] 1766*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1767*9880d681SAndroid Build Coastguard Worker} 1768*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32>, <4 x i32>) nounwind readnone 1769*9880d681SAndroid Build Coastguard Worker 1770*9880d681SAndroid Build Coastguard Worker 1771*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse41_ptestc(<2 x i64> %a0, <2 x i64> %a1) { 1772*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_ptestc: 1773*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1774*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vptest %xmm1, %xmm0 1775*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sbbl %eax, %eax 1776*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: andl $1, %eax 1777*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1778*9880d681SAndroid Build Coastguard Worker; 1779*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_ptestc: 1780*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1781*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vptest %xmm1, %xmm0 1782*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sbbl %eax, %eax 1783*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: andl $1, %eax 1784*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1785*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse41.ptestc(<2 x i64> %a0, <2 x i64> %a1) ; <i32> [#uses=1] 1786*9880d681SAndroid Build Coastguard Worker ret i32 %res 1787*9880d681SAndroid Build Coastguard Worker} 1788*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse41.ptestc(<2 x i64>, <2 x i64>) nounwind readnone 1789*9880d681SAndroid Build Coastguard Worker 1790*9880d681SAndroid Build Coastguard Worker 1791*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse41_ptestnzc(<2 x i64> %a0, <2 x i64> %a1) { 1792*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_ptestnzc: 1793*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1794*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 1795*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vptest %xmm1, %xmm0 1796*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 1797*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1798*9880d681SAndroid Build Coastguard Worker; 1799*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_ptestnzc: 1800*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1801*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 1802*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vptest %xmm1, %xmm0 1803*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 1804*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1805*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse41.ptestnzc(<2 x i64> %a0, <2 x i64> %a1) ; <i32> [#uses=1] 1806*9880d681SAndroid Build Coastguard Worker ret i32 %res 1807*9880d681SAndroid Build Coastguard Worker} 1808*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse41.ptestnzc(<2 x i64>, <2 x i64>) nounwind readnone 1809*9880d681SAndroid Build Coastguard Worker 1810*9880d681SAndroid Build Coastguard Worker 1811*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse41_ptestz(<2 x i64> %a0, <2 x i64> %a1) { 1812*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_ptestz: 1813*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1814*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 1815*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vptest %xmm1, %xmm0 1816*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sete %al 1817*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1818*9880d681SAndroid Build Coastguard Worker; 1819*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_ptestz: 1820*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1821*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 1822*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vptest %xmm1, %xmm0 1823*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sete %al 1824*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1825*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse41.ptestz(<2 x i64> %a0, <2 x i64> %a1) ; <i32> [#uses=1] 1826*9880d681SAndroid Build Coastguard Worker ret i32 %res 1827*9880d681SAndroid Build Coastguard Worker} 1828*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse41.ptestz(<2 x i64>, <2 x i64>) nounwind readnone 1829*9880d681SAndroid Build Coastguard Worker 1830*9880d681SAndroid Build Coastguard Worker 1831*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse41_round_pd(<2 x double> %a0) { 1832*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_round_pd: 1833*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1834*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vroundpd $7, %xmm0, %xmm0 1835*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1836*9880d681SAndroid Build Coastguard Worker; 1837*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_round_pd: 1838*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1839*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vroundpd $7, %xmm0, %xmm0 1840*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1841*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse41.round.pd(<2 x double> %a0, i32 7) ; <<2 x double>> [#uses=1] 1842*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1843*9880d681SAndroid Build Coastguard Worker} 1844*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.round.pd(<2 x double>, i32) nounwind readnone 1845*9880d681SAndroid Build Coastguard Worker 1846*9880d681SAndroid Build Coastguard Worker 1847*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_round_ps(<4 x float> %a0) { 1848*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_round_ps: 1849*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1850*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vroundps $7, %xmm0, %xmm0 1851*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1852*9880d681SAndroid Build Coastguard Worker; 1853*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_round_ps: 1854*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1855*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vroundps $7, %xmm0, %xmm0 1856*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1857*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse41.round.ps(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1] 1858*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1859*9880d681SAndroid Build Coastguard Worker} 1860*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.round.ps(<4 x float>, i32) nounwind readnone 1861*9880d681SAndroid Build Coastguard Worker 1862*9880d681SAndroid Build Coastguard Worker 1863*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_sse41_round_sd(<2 x double> %a0, <2 x double> %a1) { 1864*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_round_sd: 1865*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1866*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vroundsd $7, %xmm1, %xmm0, %xmm0 1867*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1868*9880d681SAndroid Build Coastguard Worker; 1869*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_round_sd: 1870*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1871*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vroundsd $7, %xmm1, %xmm0, %xmm0 1872*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1873*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.sse41.round.sd(<2 x double> %a0, <2 x double> %a1, i32 7) ; <<2 x double>> [#uses=1] 1874*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1875*9880d681SAndroid Build Coastguard Worker} 1876*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.sse41.round.sd(<2 x double>, <2 x double>, i32) nounwind readnone 1877*9880d681SAndroid Build Coastguard Worker 1878*9880d681SAndroid Build Coastguard Worker 1879*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse41_round_ss(<4 x float> %a0, <4 x float> %a1) { 1880*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse41_round_ss: 1881*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1882*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vroundss $7, %xmm1, %xmm0, %xmm0 1883*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1884*9880d681SAndroid Build Coastguard Worker; 1885*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse41_round_ss: 1886*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1887*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vroundss $7, %xmm1, %xmm0, %xmm0 1888*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1889*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse41.round.ss(<4 x float> %a0, <4 x float> %a1, i32 7) ; <<4 x float>> [#uses=1] 1890*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1891*9880d681SAndroid Build Coastguard Worker} 1892*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse41.round.ss(<4 x float>, <4 x float>, i32) nounwind readnone 1893*9880d681SAndroid Build Coastguard Worker 1894*9880d681SAndroid Build Coastguard Worker 1895*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestri128(<16 x i8> %a0, <16 x i8> %a2) { 1896*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestri128: 1897*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1898*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %eax 1899*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %edx 1900*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpestri $7, %xmm1, %xmm0 1901*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl %ecx, %eax 1902*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1903*9880d681SAndroid Build Coastguard Worker; 1904*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestri128: 1905*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1906*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %eax 1907*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %edx 1908*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpestri $7, %xmm1, %xmm0 1909*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl %ecx, %eax 1910*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1911*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestri128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1] 1912*9880d681SAndroid Build Coastguard Worker ret i32 %res 1913*9880d681SAndroid Build Coastguard Worker} 1914*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestri128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 1915*9880d681SAndroid Build Coastguard Worker 1916*9880d681SAndroid Build Coastguard Worker 1917*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestri128_load(<16 x i8>* %a0, <16 x i8>* %a2) { 1918*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestri128_load: 1919*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1920*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx 1921*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 1922*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmovdqa (%eax), %xmm0 1923*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %eax 1924*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %edx 1925*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpestri $7, (%ecx), %xmm0 1926*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl %ecx, %eax 1927*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1928*9880d681SAndroid Build Coastguard Worker; 1929*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestri128_load: 1930*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1931*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %ecx 1932*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1933*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovdqa64 (%eax), %xmm0 1934*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %eax 1935*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %edx 1936*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpestri $7, (%ecx), %xmm0 1937*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl %ecx, %eax 1938*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1939*9880d681SAndroid Build Coastguard Worker %1 = load <16 x i8>, <16 x i8>* %a0 1940*9880d681SAndroid Build Coastguard Worker %2 = load <16 x i8>, <16 x i8>* %a2 1941*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestri128(<16 x i8> %1, i32 7, <16 x i8> %2, i32 7, i8 7) ; <i32> [#uses=1] 1942*9880d681SAndroid Build Coastguard Worker ret i32 %res 1943*9880d681SAndroid Build Coastguard Worker} 1944*9880d681SAndroid Build Coastguard Worker 1945*9880d681SAndroid Build Coastguard Worker 1946*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestria128(<16 x i8> %a0, <16 x i8> %a2) nounwind { 1947*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestria128: 1948*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1949*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: pushl %ebx 1950*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %eax 1951*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %edx 1952*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %ebx, %ebx 1953*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpestri $7, %xmm1, %xmm0 1954*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %bl 1955*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl %ebx, %eax 1956*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: popl %ebx 1957*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1958*9880d681SAndroid Build Coastguard Worker; 1959*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestria128: 1960*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1961*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: pushl %ebx 1962*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %eax 1963*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %edx 1964*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %ebx, %ebx 1965*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpestri $7, %xmm1, %xmm0 1966*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %bl 1967*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl %ebx, %eax 1968*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: popl %ebx 1969*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1970*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestria128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1] 1971*9880d681SAndroid Build Coastguard Worker ret i32 %res 1972*9880d681SAndroid Build Coastguard Worker} 1973*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestria128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 1974*9880d681SAndroid Build Coastguard Worker 1975*9880d681SAndroid Build Coastguard Worker 1976*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestric128(<16 x i8> %a0, <16 x i8> %a2) { 1977*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestric128: 1978*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 1979*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %eax 1980*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %edx 1981*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpestri $7, %xmm1, %xmm0 1982*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sbbl %eax, %eax 1983*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: andl $1, %eax 1984*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 1985*9880d681SAndroid Build Coastguard Worker; 1986*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestric128: 1987*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1988*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %eax 1989*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %edx 1990*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpestri $7, %xmm1, %xmm0 1991*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sbbl %eax, %eax 1992*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: andl $1, %eax 1993*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1994*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestric128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1] 1995*9880d681SAndroid Build Coastguard Worker ret i32 %res 1996*9880d681SAndroid Build Coastguard Worker} 1997*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestric128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 1998*9880d681SAndroid Build Coastguard Worker 1999*9880d681SAndroid Build Coastguard Worker 2000*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestrio128(<16 x i8> %a0, <16 x i8> %a2) nounwind { 2001*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestrio128: 2002*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2003*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: pushl %ebx 2004*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %eax 2005*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %edx 2006*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %ebx, %ebx 2007*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpestri $7, %xmm1, %xmm0 2008*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seto %bl 2009*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl %ebx, %eax 2010*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: popl %ebx 2011*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2012*9880d681SAndroid Build Coastguard Worker; 2013*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestrio128: 2014*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2015*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: pushl %ebx 2016*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %eax 2017*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %edx 2018*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %ebx, %ebx 2019*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpestri $7, %xmm1, %xmm0 2020*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seto %bl 2021*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl %ebx, %eax 2022*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: popl %ebx 2023*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2024*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestrio128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1] 2025*9880d681SAndroid Build Coastguard Worker ret i32 %res 2026*9880d681SAndroid Build Coastguard Worker} 2027*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestrio128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 2028*9880d681SAndroid Build Coastguard Worker 2029*9880d681SAndroid Build Coastguard Worker 2030*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestris128(<16 x i8> %a0, <16 x i8> %a2) nounwind { 2031*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestris128: 2032*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2033*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: pushl %ebx 2034*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %eax 2035*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %edx 2036*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %ebx, %ebx 2037*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpestri $7, %xmm1, %xmm0 2038*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sets %bl 2039*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl %ebx, %eax 2040*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: popl %ebx 2041*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2042*9880d681SAndroid Build Coastguard Worker; 2043*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestris128: 2044*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2045*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: pushl %ebx 2046*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %eax 2047*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %edx 2048*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %ebx, %ebx 2049*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpestri $7, %xmm1, %xmm0 2050*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sets %bl 2051*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl %ebx, %eax 2052*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: popl %ebx 2053*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2054*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestris128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1] 2055*9880d681SAndroid Build Coastguard Worker ret i32 %res 2056*9880d681SAndroid Build Coastguard Worker} 2057*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestris128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 2058*9880d681SAndroid Build Coastguard Worker 2059*9880d681SAndroid Build Coastguard Worker 2060*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpestriz128(<16 x i8> %a0, <16 x i8> %a2) nounwind { 2061*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestriz128: 2062*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2063*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: pushl %ebx 2064*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %eax 2065*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %edx 2066*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %ebx, %ebx 2067*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpestri $7, %xmm1, %xmm0 2068*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sete %bl 2069*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl %ebx, %eax 2070*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: popl %ebx 2071*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2072*9880d681SAndroid Build Coastguard Worker; 2073*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestriz128: 2074*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2075*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: pushl %ebx 2076*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %eax 2077*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %edx 2078*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %ebx, %ebx 2079*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpestri $7, %xmm1, %xmm0 2080*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sete %bl 2081*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl %ebx, %eax 2082*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: popl %ebx 2083*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2084*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpestriz128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1] 2085*9880d681SAndroid Build Coastguard Worker ret i32 %res 2086*9880d681SAndroid Build Coastguard Worker} 2087*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpestriz128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 2088*9880d681SAndroid Build Coastguard Worker 2089*9880d681SAndroid Build Coastguard Worker 2090*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse42_pcmpestrm128(<16 x i8> %a0, <16 x i8> %a2) { 2091*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestrm128: 2092*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2093*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %eax 2094*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %edx 2095*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpestrm $7, %xmm1, %xmm0 2096*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2097*9880d681SAndroid Build Coastguard Worker; 2098*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestrm128: 2099*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2100*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %eax 2101*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %edx 2102*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpestrm $7, %xmm1, %xmm0 2103*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2104*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <<16 x i8>> [#uses=1] 2105*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 2106*9880d681SAndroid Build Coastguard Worker} 2107*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone 2108*9880d681SAndroid Build Coastguard Worker 2109*9880d681SAndroid Build Coastguard Worker 2110*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse42_pcmpestrm128_load(<16 x i8> %a0, <16 x i8>* %a2) { 2111*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpestrm128_load: 2112*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2113*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx 2114*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %eax 2115*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %edx 2116*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpestrm $7, (%ecx), %xmm0 2117*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2118*9880d681SAndroid Build Coastguard Worker; 2119*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpestrm128_load: 2120*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2121*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %ecx 2122*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %eax 2123*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %edx 2124*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpestrm $7, (%ecx), %xmm0 2125*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2126*9880d681SAndroid Build Coastguard Worker %1 = load <16 x i8>, <16 x i8>* %a2 2127*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8> %a0, i32 7, <16 x i8> %1, i32 7, i8 7) ; <<16 x i8>> [#uses=1] 2128*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 2129*9880d681SAndroid Build Coastguard Worker} 2130*9880d681SAndroid Build Coastguard Worker 2131*9880d681SAndroid Build Coastguard Worker 2132*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistri128(<16 x i8> %a0, <16 x i8> %a1) { 2133*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistri128: 2134*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2135*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpistri $7, %xmm1, %xmm0 2136*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl %ecx, %eax 2137*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2138*9880d681SAndroid Build Coastguard Worker; 2139*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistri128: 2140*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2141*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpistri $7, %xmm1, %xmm0 2142*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl %ecx, %eax 2143*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2144*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1] 2145*9880d681SAndroid Build Coastguard Worker ret i32 %res 2146*9880d681SAndroid Build Coastguard Worker} 2147*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistri128(<16 x i8>, <16 x i8>, i8) nounwind readnone 2148*9880d681SAndroid Build Coastguard Worker 2149*9880d681SAndroid Build Coastguard Worker 2150*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistri128_load(<16 x i8>* %a0, <16 x i8>* %a1) { 2151*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistri128_load: 2152*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2153*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 2154*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx 2155*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmovdqa (%ecx), %xmm0 2156*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpistri $7, (%eax), %xmm0 2157*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl %ecx, %eax 2158*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2159*9880d681SAndroid Build Coastguard Worker; 2160*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistri128_load: 2161*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2162*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 2163*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %ecx 2164*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovdqa64 (%ecx), %xmm0 2165*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpistri $7, (%eax), %xmm0 2166*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl %ecx, %eax 2167*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2168*9880d681SAndroid Build Coastguard Worker %1 = load <16 x i8>, <16 x i8>* %a0 2169*9880d681SAndroid Build Coastguard Worker %2 = load <16 x i8>, <16 x i8>* %a1 2170*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %1, <16 x i8> %2, i8 7) ; <i32> [#uses=1] 2171*9880d681SAndroid Build Coastguard Worker ret i32 %res 2172*9880d681SAndroid Build Coastguard Worker} 2173*9880d681SAndroid Build Coastguard Worker 2174*9880d681SAndroid Build Coastguard Worker 2175*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistria128(<16 x i8> %a0, <16 x i8> %a1) { 2176*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistria128: 2177*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2178*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 2179*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpistri $7, %xmm1, %xmm0 2180*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 2181*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2182*9880d681SAndroid Build Coastguard Worker; 2183*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistria128: 2184*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2185*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 2186*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpistri $7, %xmm1, %xmm0 2187*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 2188*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2189*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistria128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1] 2190*9880d681SAndroid Build Coastguard Worker ret i32 %res 2191*9880d681SAndroid Build Coastguard Worker} 2192*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistria128(<16 x i8>, <16 x i8>, i8) nounwind readnone 2193*9880d681SAndroid Build Coastguard Worker 2194*9880d681SAndroid Build Coastguard Worker 2195*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistric128(<16 x i8> %a0, <16 x i8> %a1) { 2196*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistric128: 2197*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2198*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpistri $7, %xmm1, %xmm0 2199*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sbbl %eax, %eax 2200*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: andl $1, %eax 2201*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2202*9880d681SAndroid Build Coastguard Worker; 2203*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistric128: 2204*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2205*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpistri $7, %xmm1, %xmm0 2206*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sbbl %eax, %eax 2207*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: andl $1, %eax 2208*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2209*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistric128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1] 2210*9880d681SAndroid Build Coastguard Worker ret i32 %res 2211*9880d681SAndroid Build Coastguard Worker} 2212*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistric128(<16 x i8>, <16 x i8>, i8) nounwind readnone 2213*9880d681SAndroid Build Coastguard Worker 2214*9880d681SAndroid Build Coastguard Worker 2215*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistrio128(<16 x i8> %a0, <16 x i8> %a1) { 2216*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistrio128: 2217*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2218*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 2219*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpistri $7, %xmm1, %xmm0 2220*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seto %al 2221*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2222*9880d681SAndroid Build Coastguard Worker; 2223*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistrio128: 2224*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2225*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 2226*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpistri $7, %xmm1, %xmm0 2227*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seto %al 2228*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2229*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistrio128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1] 2230*9880d681SAndroid Build Coastguard Worker ret i32 %res 2231*9880d681SAndroid Build Coastguard Worker} 2232*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistrio128(<16 x i8>, <16 x i8>, i8) nounwind readnone 2233*9880d681SAndroid Build Coastguard Worker 2234*9880d681SAndroid Build Coastguard Worker 2235*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistris128(<16 x i8> %a0, <16 x i8> %a1) { 2236*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistris128: 2237*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2238*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 2239*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpistri $7, %xmm1, %xmm0 2240*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sets %al 2241*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2242*9880d681SAndroid Build Coastguard Worker; 2243*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistris128: 2244*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2245*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 2246*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpistri $7, %xmm1, %xmm0 2247*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sets %al 2248*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2249*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistris128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1] 2250*9880d681SAndroid Build Coastguard Worker ret i32 %res 2251*9880d681SAndroid Build Coastguard Worker} 2252*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistris128(<16 x i8>, <16 x i8>, i8) nounwind readnone 2253*9880d681SAndroid Build Coastguard Worker 2254*9880d681SAndroid Build Coastguard Worker 2255*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse42_pcmpistriz128(<16 x i8> %a0, <16 x i8> %a1) { 2256*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistriz128: 2257*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2258*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 2259*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpistri $7, %xmm1, %xmm0 2260*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sete %al 2261*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2262*9880d681SAndroid Build Coastguard Worker; 2263*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistriz128: 2264*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2265*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 2266*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpistri $7, %xmm1, %xmm0 2267*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sete %al 2268*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2269*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse42.pcmpistriz128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1] 2270*9880d681SAndroid Build Coastguard Worker ret i32 %res 2271*9880d681SAndroid Build Coastguard Worker} 2272*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.pcmpistriz128(<16 x i8>, <16 x i8>, i8) nounwind readnone 2273*9880d681SAndroid Build Coastguard Worker 2274*9880d681SAndroid Build Coastguard Worker 2275*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse42_pcmpistrm128(<16 x i8> %a0, <16 x i8> %a1) { 2276*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistrm128: 2277*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2278*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpistrm $7, %xmm1, %xmm0 2279*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2280*9880d681SAndroid Build Coastguard Worker; 2281*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistrm128: 2282*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2283*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpistrm $7, %xmm1, %xmm0 2284*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2285*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <<16 x i8>> [#uses=1] 2286*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 2287*9880d681SAndroid Build Coastguard Worker} 2288*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8>, <16 x i8>, i8) nounwind readnone 2289*9880d681SAndroid Build Coastguard Worker 2290*9880d681SAndroid Build Coastguard Worker 2291*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_sse42_pcmpistrm128_load(<16 x i8> %a0, <16 x i8>* %a1) { 2292*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse42_pcmpistrm128_load: 2293*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2294*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 2295*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpcmpistrm $7, (%eax), %xmm0 2296*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2297*9880d681SAndroid Build Coastguard Worker; 2298*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse42_pcmpistrm128_load: 2299*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2300*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 2301*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpcmpistrm $7, (%eax), %xmm0 2302*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2303*9880d681SAndroid Build Coastguard Worker %1 = load <16 x i8>, <16 x i8>* %a1 2304*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8> %a0, <16 x i8> %1, i8 7) ; <<16 x i8>> [#uses=1] 2305*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 2306*9880d681SAndroid Build Coastguard Worker} 2307*9880d681SAndroid Build Coastguard Worker 2308*9880d681SAndroid Build Coastguard Worker 2309*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_add_ss(<4 x float> %a0, <4 x float> %a1) { 2310*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_add_ss: 2311*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2312*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaddss %xmm1, %xmm0, %xmm0 2313*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2314*9880d681SAndroid Build Coastguard Worker; 2315*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_add_ss: 2316*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2317*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaddss %xmm1, %xmm0, %xmm0 2318*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2319*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] 2320*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2321*9880d681SAndroid Build Coastguard Worker} 2322*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.add.ss(<4 x float>, <4 x float>) nounwind readnone 2323*9880d681SAndroid Build Coastguard Worker 2324*9880d681SAndroid Build Coastguard Worker 2325*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cmp_ps(<4 x float> %a0, <4 x float> %a1) { 2326*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_cmp_ps: 2327*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2328*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpordps %xmm1, %xmm0, %xmm0 2329*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2330*9880d681SAndroid Build Coastguard Worker; 2331*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_cmp_ps: 2332*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2333*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpordps %xmm1, %xmm0, %xmm0 2334*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2335*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] 2336*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2337*9880d681SAndroid Build Coastguard Worker} 2338*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ps(<4 x float>, <4 x float>, i8) nounwind readnone 2339*9880d681SAndroid Build Coastguard Worker 2340*9880d681SAndroid Build Coastguard Worker 2341*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cmp_ss(<4 x float> %a0, <4 x float> %a1) { 2342*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_cmp_ss: 2343*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2344*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpordss %xmm1, %xmm0, %xmm0 2345*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2346*9880d681SAndroid Build Coastguard Worker; 2347*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_cmp_ss: 2348*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2349*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpordss %xmm1, %xmm0, %xmm0 2350*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2351*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] 2352*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2353*9880d681SAndroid Build Coastguard Worker} 2354*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cmp.ss(<4 x float>, <4 x float>, i8) nounwind readnone 2355*9880d681SAndroid Build Coastguard Worker 2356*9880d681SAndroid Build Coastguard Worker 2357*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comieq_ss(<4 x float> %a0, <4 x float> %a1) { 2358*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_comieq_ss: 2359*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2360*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcomiss %xmm1, %xmm0 2361*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setnp %al 2362*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sete %cl 2363*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: andb %al, %cl 2364*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movzbl %cl, %eax 2365*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2366*9880d681SAndroid Build Coastguard Worker; 2367*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_comieq_ss: 2368*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2369*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcomiss %xmm1, %xmm0 2370*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setnp %al 2371*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sete %cl 2372*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: andb %al, %cl 2373*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movzbl %cl, %eax 2374*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2375*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.comieq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 2376*9880d681SAndroid Build Coastguard Worker ret i32 %res 2377*9880d681SAndroid Build Coastguard Worker} 2378*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comieq.ss(<4 x float>, <4 x float>) nounwind readnone 2379*9880d681SAndroid Build Coastguard Worker 2380*9880d681SAndroid Build Coastguard Worker 2381*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comige_ss(<4 x float> %a0, <4 x float> %a1) { 2382*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_comige_ss: 2383*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2384*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 2385*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcomiss %xmm1, %xmm0 2386*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setae %al 2387*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2388*9880d681SAndroid Build Coastguard Worker; 2389*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_comige_ss: 2390*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2391*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 2392*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcomiss %xmm1, %xmm0 2393*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setae %al 2394*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2395*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.comige.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 2396*9880d681SAndroid Build Coastguard Worker ret i32 %res 2397*9880d681SAndroid Build Coastguard Worker} 2398*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comige.ss(<4 x float>, <4 x float>) nounwind readnone 2399*9880d681SAndroid Build Coastguard Worker 2400*9880d681SAndroid Build Coastguard Worker 2401*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comigt_ss(<4 x float> %a0, <4 x float> %a1) { 2402*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_comigt_ss: 2403*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2404*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 2405*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcomiss %xmm1, %xmm0 2406*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 2407*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2408*9880d681SAndroid Build Coastguard Worker; 2409*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_comigt_ss: 2410*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2411*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 2412*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcomiss %xmm1, %xmm0 2413*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 2414*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2415*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.comigt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 2416*9880d681SAndroid Build Coastguard Worker ret i32 %res 2417*9880d681SAndroid Build Coastguard Worker} 2418*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comigt.ss(<4 x float>, <4 x float>) nounwind readnone 2419*9880d681SAndroid Build Coastguard Worker 2420*9880d681SAndroid Build Coastguard Worker 2421*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comile_ss(<4 x float> %a0, <4 x float> %a1) { 2422*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_comile_ss: 2423*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2424*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 2425*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcomiss %xmm0, %xmm1 2426*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setae %al 2427*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2428*9880d681SAndroid Build Coastguard Worker; 2429*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_comile_ss: 2430*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2431*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 2432*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcomiss %xmm0, %xmm1 2433*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setae %al 2434*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2435*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.comile.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 2436*9880d681SAndroid Build Coastguard Worker ret i32 %res 2437*9880d681SAndroid Build Coastguard Worker} 2438*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comile.ss(<4 x float>, <4 x float>) nounwind readnone 2439*9880d681SAndroid Build Coastguard Worker 2440*9880d681SAndroid Build Coastguard Worker 2441*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comilt_ss(<4 x float> %a0, <4 x float> %a1) { 2442*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_comilt_ss: 2443*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2444*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 2445*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcomiss %xmm0, %xmm1 2446*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 2447*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2448*9880d681SAndroid Build Coastguard Worker; 2449*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_comilt_ss: 2450*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2451*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 2452*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcomiss %xmm0, %xmm1 2453*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 2454*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2455*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.comilt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 2456*9880d681SAndroid Build Coastguard Worker ret i32 %res 2457*9880d681SAndroid Build Coastguard Worker} 2458*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comilt.ss(<4 x float>, <4 x float>) nounwind readnone 2459*9880d681SAndroid Build Coastguard Worker 2460*9880d681SAndroid Build Coastguard Worker 2461*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_comineq_ss(<4 x float> %a0, <4 x float> %a1) { 2462*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_comineq_ss: 2463*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2464*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcomiss %xmm1, %xmm0 2465*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setp %al 2466*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setne %cl 2467*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: orb %al, %cl 2468*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movzbl %cl, %eax 2469*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2470*9880d681SAndroid Build Coastguard Worker; 2471*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_comineq_ss: 2472*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2473*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcomiss %xmm1, %xmm0 2474*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setp %al 2475*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setne %cl 2476*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: orb %al, %cl 2477*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movzbl %cl, %eax 2478*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2479*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.comineq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 2480*9880d681SAndroid Build Coastguard Worker ret i32 %res 2481*9880d681SAndroid Build Coastguard Worker} 2482*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.comineq.ss(<4 x float>, <4 x float>) nounwind readnone 2483*9880d681SAndroid Build Coastguard Worker 2484*9880d681SAndroid Build Coastguard Worker 2485*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_cvtsi2ss(<4 x float> %a0) { 2486*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_cvtsi2ss: 2487*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2488*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl $7, %eax 2489*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtsi2ssl %eax, %xmm0, %xmm0 2490*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2491*9880d681SAndroid Build Coastguard Worker; 2492*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_cvtsi2ss: 2493*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2494*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl $7, %eax 2495*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtsi2ssl %eax, %xmm0, %xmm0 2496*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2497*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1] 2498*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2499*9880d681SAndroid Build Coastguard Worker} 2500*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float>, i32) nounwind readnone 2501*9880d681SAndroid Build Coastguard Worker 2502*9880d681SAndroid Build Coastguard Worker 2503*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_cvtss2si(<4 x float> %a0) { 2504*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_cvtss2si: 2505*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2506*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtss2si %xmm0, %eax 2507*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2508*9880d681SAndroid Build Coastguard Worker; 2509*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_cvtss2si: 2510*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2511*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtss2si %xmm0, %eax 2512*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2513*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.cvtss2si(<4 x float> %a0) ; <i32> [#uses=1] 2514*9880d681SAndroid Build Coastguard Worker ret i32 %res 2515*9880d681SAndroid Build Coastguard Worker} 2516*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvtss2si(<4 x float>) nounwind readnone 2517*9880d681SAndroid Build Coastguard Worker 2518*9880d681SAndroid Build Coastguard Worker 2519*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_cvttss2si(<4 x float> %a0) { 2520*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_cvttss2si: 2521*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2522*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvttss2si %xmm0, %eax 2523*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2524*9880d681SAndroid Build Coastguard Worker; 2525*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_cvttss2si: 2526*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2527*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvttss2si %xmm0, %eax 2528*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2529*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.cvttss2si(<4 x float> %a0) ; <i32> [#uses=1] 2530*9880d681SAndroid Build Coastguard Worker ret i32 %res 2531*9880d681SAndroid Build Coastguard Worker} 2532*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvttss2si(<4 x float>) nounwind readnone 2533*9880d681SAndroid Build Coastguard Worker 2534*9880d681SAndroid Build Coastguard Worker 2535*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_div_ss(<4 x float> %a0, <4 x float> %a1) { 2536*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_div_ss: 2537*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2538*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vdivss %xmm1, %xmm0, %xmm0 2539*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2540*9880d681SAndroid Build Coastguard Worker; 2541*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_div_ss: 2542*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2543*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vdivss %xmm1, %xmm0, %xmm0 2544*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2545*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] 2546*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2547*9880d681SAndroid Build Coastguard Worker} 2548*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.div.ss(<4 x float>, <4 x float>) nounwind readnone 2549*9880d681SAndroid Build Coastguard Worker 2550*9880d681SAndroid Build Coastguard Worker 2551*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_sse_ldmxcsr(i8* %a0) { 2552*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ldmxcsr: 2553*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2554*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 2555*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vldmxcsr (%eax) 2556*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2557*9880d681SAndroid Build Coastguard Worker; 2558*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ldmxcsr: 2559*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2560*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 2561*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vldmxcsr (%eax) 2562*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2563*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.sse.ldmxcsr(i8* %a0) 2564*9880d681SAndroid Build Coastguard Worker ret void 2565*9880d681SAndroid Build Coastguard Worker} 2566*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse.ldmxcsr(i8*) nounwind 2567*9880d681SAndroid Build Coastguard Worker 2568*9880d681SAndroid Build Coastguard Worker 2569*9880d681SAndroid Build Coastguard Worker 2570*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_max_ps(<4 x float> %a0, <4 x float> %a1) { 2571*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_max_ps: 2572*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2573*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaxps %xmm1, %xmm0, %xmm0 2574*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2575*9880d681SAndroid Build Coastguard Worker; 2576*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_max_ps: 2577*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2578*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaxps %xmm1, %xmm0, %xmm0 2579*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2580*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] 2581*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2582*9880d681SAndroid Build Coastguard Worker} 2583*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.max.ps(<4 x float>, <4 x float>) nounwind readnone 2584*9880d681SAndroid Build Coastguard Worker 2585*9880d681SAndroid Build Coastguard Worker 2586*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_max_ss(<4 x float> %a0, <4 x float> %a1) { 2587*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_max_ss: 2588*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2589*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaxss %xmm1, %xmm0, %xmm0 2590*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2591*9880d681SAndroid Build Coastguard Worker; 2592*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_max_ss: 2593*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2594*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaxss %xmm1, %xmm0, %xmm0 2595*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2596*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] 2597*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2598*9880d681SAndroid Build Coastguard Worker} 2599*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.max.ss(<4 x float>, <4 x float>) nounwind readnone 2600*9880d681SAndroid Build Coastguard Worker 2601*9880d681SAndroid Build Coastguard Worker 2602*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_min_ps(<4 x float> %a0, <4 x float> %a1) { 2603*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_min_ps: 2604*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2605*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vminps %xmm1, %xmm0, %xmm0 2606*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2607*9880d681SAndroid Build Coastguard Worker; 2608*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_min_ps: 2609*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2610*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vminps %xmm1, %xmm0, %xmm0 2611*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2612*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] 2613*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2614*9880d681SAndroid Build Coastguard Worker} 2615*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.min.ps(<4 x float>, <4 x float>) nounwind readnone 2616*9880d681SAndroid Build Coastguard Worker 2617*9880d681SAndroid Build Coastguard Worker 2618*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_min_ss(<4 x float> %a0, <4 x float> %a1) { 2619*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_min_ss: 2620*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2621*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vminss %xmm1, %xmm0, %xmm0 2622*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2623*9880d681SAndroid Build Coastguard Worker; 2624*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_min_ss: 2625*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2626*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vminss %xmm1, %xmm0, %xmm0 2627*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2628*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] 2629*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2630*9880d681SAndroid Build Coastguard Worker} 2631*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.min.ss(<4 x float>, <4 x float>) nounwind readnone 2632*9880d681SAndroid Build Coastguard Worker 2633*9880d681SAndroid Build Coastguard Worker 2634*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_movmsk_ps(<4 x float> %a0) { 2635*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_movmsk_ps: 2636*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2637*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmovmskps %xmm0, %eax 2638*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2639*9880d681SAndroid Build Coastguard Worker; 2640*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_movmsk_ps: 2641*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2642*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovmskps %xmm0, %eax 2643*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2644*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.movmsk.ps(<4 x float> %a0) ; <i32> [#uses=1] 2645*9880d681SAndroid Build Coastguard Worker ret i32 %res 2646*9880d681SAndroid Build Coastguard Worker} 2647*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.movmsk.ps(<4 x float>) nounwind readnone 2648*9880d681SAndroid Build Coastguard Worker 2649*9880d681SAndroid Build Coastguard Worker 2650*9880d681SAndroid Build Coastguard Worker 2651*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_mul_ss(<4 x float> %a0, <4 x float> %a1) { 2652*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_mul_ss: 2653*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2654*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmulss %xmm1, %xmm0, %xmm0 2655*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2656*9880d681SAndroid Build Coastguard Worker; 2657*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_mul_ss: 2658*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2659*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmulss %xmm1, %xmm0, %xmm0 2660*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2661*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] 2662*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2663*9880d681SAndroid Build Coastguard Worker} 2664*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.mul.ss(<4 x float>, <4 x float>) nounwind readnone 2665*9880d681SAndroid Build Coastguard Worker 2666*9880d681SAndroid Build Coastguard Worker 2667*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rcp_ps(<4 x float> %a0) { 2668*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_rcp_ps: 2669*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2670*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vrcpps %xmm0, %xmm0 2671*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2672*9880d681SAndroid Build Coastguard Worker; 2673*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_rcp_ps: 2674*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2675*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vrcp14ps %xmm0, %xmm0 2676*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2677*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.rcp.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1] 2678*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2679*9880d681SAndroid Build Coastguard Worker} 2680*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rcp.ps(<4 x float>) nounwind readnone 2681*9880d681SAndroid Build Coastguard Worker 2682*9880d681SAndroid Build Coastguard Worker 2683*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rcp_ss(<4 x float> %a0) { 2684*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_rcp_ss: 2685*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2686*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vrcpss %xmm0, %xmm0, %xmm0 2687*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2688*9880d681SAndroid Build Coastguard Worker; 2689*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_rcp_ss: 2690*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2691*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vrcpss %xmm0, %xmm0, %xmm0 2692*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2693*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.rcp.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1] 2694*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2695*9880d681SAndroid Build Coastguard Worker} 2696*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rcp.ss(<4 x float>) nounwind readnone 2697*9880d681SAndroid Build Coastguard Worker 2698*9880d681SAndroid Build Coastguard Worker 2699*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rsqrt_ps(<4 x float> %a0) { 2700*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_rsqrt_ps: 2701*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2702*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vrsqrtps %xmm0, %xmm0 2703*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2704*9880d681SAndroid Build Coastguard Worker; 2705*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_rsqrt_ps: 2706*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2707*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vrsqrt14ps %xmm0, %xmm0 2708*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2709*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1] 2710*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2711*9880d681SAndroid Build Coastguard Worker} 2712*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float>) nounwind readnone 2713*9880d681SAndroid Build Coastguard Worker 2714*9880d681SAndroid Build Coastguard Worker 2715*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_rsqrt_ss(<4 x float> %a0) { 2716*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_rsqrt_ss: 2717*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2718*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vrsqrtss %xmm0, %xmm0, %xmm0 2719*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2720*9880d681SAndroid Build Coastguard Worker; 2721*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_rsqrt_ss: 2722*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2723*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vrsqrtss %xmm0, %xmm0, %xmm0 2724*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2725*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1] 2726*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2727*9880d681SAndroid Build Coastguard Worker} 2728*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float>) nounwind readnone 2729*9880d681SAndroid Build Coastguard Worker 2730*9880d681SAndroid Build Coastguard Worker 2731*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_sqrt_ps(<4 x float> %a0) { 2732*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_sqrt_ps: 2733*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2734*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vsqrtps %xmm0, %xmm0 2735*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2736*9880d681SAndroid Build Coastguard Worker; 2737*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_sqrt_ps: 2738*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2739*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vsqrtps %xmm0, %xmm0 2740*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2741*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1] 2742*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2743*9880d681SAndroid Build Coastguard Worker} 2744*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float>) nounwind readnone 2745*9880d681SAndroid Build Coastguard Worker 2746*9880d681SAndroid Build Coastguard Worker 2747*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_sqrt_ss(<4 x float> %a0) { 2748*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_sqrt_ss: 2749*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2750*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vsqrtss %xmm0, %xmm0, %xmm0 2751*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2752*9880d681SAndroid Build Coastguard Worker; 2753*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_sqrt_ss: 2754*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2755*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vsqrtss %xmm0, %xmm0, %xmm0 2756*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2757*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1] 2758*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2759*9880d681SAndroid Build Coastguard Worker} 2760*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float>) nounwind readnone 2761*9880d681SAndroid Build Coastguard Worker 2762*9880d681SAndroid Build Coastguard Worker 2763*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_sse_stmxcsr(i8* %a0) { 2764*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_stmxcsr: 2765*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2766*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 2767*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vstmxcsr (%eax) 2768*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2769*9880d681SAndroid Build Coastguard Worker; 2770*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_stmxcsr: 2771*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2772*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 2773*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vstmxcsr (%eax) 2774*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2775*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.sse.stmxcsr(i8* %a0) 2776*9880d681SAndroid Build Coastguard Worker ret void 2777*9880d681SAndroid Build Coastguard Worker} 2778*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse.stmxcsr(i8*) nounwind 2779*9880d681SAndroid Build Coastguard Worker 2780*9880d681SAndroid Build Coastguard Worker 2781*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_sse_sub_ss(<4 x float> %a0, <4 x float> %a1) { 2782*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_sub_ss: 2783*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2784*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vsubss %xmm1, %xmm0, %xmm0 2785*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2786*9880d681SAndroid Build Coastguard Worker; 2787*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_sub_ss: 2788*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2789*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vsubss %xmm1, %xmm0, %xmm0 2790*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2791*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] 2792*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 2793*9880d681SAndroid Build Coastguard Worker} 2794*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.sse.sub.ss(<4 x float>, <4 x float>) nounwind readnone 2795*9880d681SAndroid Build Coastguard Worker 2796*9880d681SAndroid Build Coastguard Worker 2797*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomieq_ss(<4 x float> %a0, <4 x float> %a1) { 2798*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ucomieq_ss: 2799*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2800*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vucomiss %xmm1, %xmm0 2801*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setnp %al 2802*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sete %cl 2803*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: andb %al, %cl 2804*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movzbl %cl, %eax 2805*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2806*9880d681SAndroid Build Coastguard Worker; 2807*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ucomieq_ss: 2808*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2809*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vucomiss %xmm1, %xmm0 2810*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setnp %al 2811*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sete %cl 2812*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: andb %al, %cl 2813*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movzbl %cl, %eax 2814*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2815*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.ucomieq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 2816*9880d681SAndroid Build Coastguard Worker ret i32 %res 2817*9880d681SAndroid Build Coastguard Worker} 2818*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomieq.ss(<4 x float>, <4 x float>) nounwind readnone 2819*9880d681SAndroid Build Coastguard Worker 2820*9880d681SAndroid Build Coastguard Worker 2821*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomige_ss(<4 x float> %a0, <4 x float> %a1) { 2822*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ucomige_ss: 2823*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2824*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 2825*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vucomiss %xmm1, %xmm0 2826*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setae %al 2827*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2828*9880d681SAndroid Build Coastguard Worker; 2829*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ucomige_ss: 2830*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2831*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 2832*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vucomiss %xmm1, %xmm0 2833*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setae %al 2834*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2835*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.ucomige.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 2836*9880d681SAndroid Build Coastguard Worker ret i32 %res 2837*9880d681SAndroid Build Coastguard Worker} 2838*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomige.ss(<4 x float>, <4 x float>) nounwind readnone 2839*9880d681SAndroid Build Coastguard Worker 2840*9880d681SAndroid Build Coastguard Worker 2841*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomigt_ss(<4 x float> %a0, <4 x float> %a1) { 2842*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ucomigt_ss: 2843*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2844*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 2845*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vucomiss %xmm1, %xmm0 2846*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 2847*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2848*9880d681SAndroid Build Coastguard Worker; 2849*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ucomigt_ss: 2850*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2851*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 2852*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vucomiss %xmm1, %xmm0 2853*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 2854*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2855*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.ucomigt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 2856*9880d681SAndroid Build Coastguard Worker ret i32 %res 2857*9880d681SAndroid Build Coastguard Worker} 2858*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomigt.ss(<4 x float>, <4 x float>) nounwind readnone 2859*9880d681SAndroid Build Coastguard Worker 2860*9880d681SAndroid Build Coastguard Worker 2861*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomile_ss(<4 x float> %a0, <4 x float> %a1) { 2862*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ucomile_ss: 2863*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2864*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 2865*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vucomiss %xmm0, %xmm1 2866*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setae %al 2867*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2868*9880d681SAndroid Build Coastguard Worker; 2869*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ucomile_ss: 2870*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2871*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 2872*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vucomiss %xmm0, %xmm1 2873*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setae %al 2874*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2875*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.ucomile.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 2876*9880d681SAndroid Build Coastguard Worker ret i32 %res 2877*9880d681SAndroid Build Coastguard Worker} 2878*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomile.ss(<4 x float>, <4 x float>) nounwind readnone 2879*9880d681SAndroid Build Coastguard Worker 2880*9880d681SAndroid Build Coastguard Worker 2881*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomilt_ss(<4 x float> %a0, <4 x float> %a1) { 2882*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ucomilt_ss: 2883*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2884*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 2885*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vucomiss %xmm0, %xmm1 2886*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 2887*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2888*9880d681SAndroid Build Coastguard Worker; 2889*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ucomilt_ss: 2890*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2891*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 2892*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vucomiss %xmm0, %xmm1 2893*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 2894*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2895*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.ucomilt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 2896*9880d681SAndroid Build Coastguard Worker ret i32 %res 2897*9880d681SAndroid Build Coastguard Worker} 2898*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomilt.ss(<4 x float>, <4 x float>) nounwind readnone 2899*9880d681SAndroid Build Coastguard Worker 2900*9880d681SAndroid Build Coastguard Worker 2901*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_sse_ucomineq_ss(<4 x float> %a0, <4 x float> %a1) { 2902*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_sse_ucomineq_ss: 2903*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2904*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vucomiss %xmm1, %xmm0 2905*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setp %al 2906*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: setne %cl 2907*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: orb %al, %cl 2908*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movzbl %cl, %eax 2909*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2910*9880d681SAndroid Build Coastguard Worker; 2911*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_sse_ucomineq_ss: 2912*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2913*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vucomiss %xmm1, %xmm0 2914*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setp %al 2915*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: setne %cl 2916*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: orb %al, %cl 2917*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movzbl %cl, %eax 2918*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2919*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.sse.ucomineq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 2920*9880d681SAndroid Build Coastguard Worker ret i32 %res 2921*9880d681SAndroid Build Coastguard Worker} 2922*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.ucomineq.ss(<4 x float>, <4 x float>) nounwind readnone 2923*9880d681SAndroid Build Coastguard Worker 2924*9880d681SAndroid Build Coastguard Worker 2925*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_ssse3_pabs_b_128(<16 x i8> %a0) { 2926*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_pabs_b_128: 2927*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2928*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpabsb %xmm0, %xmm0 2929*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2930*9880d681SAndroid Build Coastguard Worker; 2931*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_pabs_b_128: 2932*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2933*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpabsb %xmm0, %xmm0 2934*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2935*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.ssse3.pabs.b.128(<16 x i8> %a0) ; <<16 x i8>> [#uses=1] 2936*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 2937*9880d681SAndroid Build Coastguard Worker} 2938*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.ssse3.pabs.b.128(<16 x i8>) nounwind readnone 2939*9880d681SAndroid Build Coastguard Worker 2940*9880d681SAndroid Build Coastguard Worker 2941*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_ssse3_pabs_d_128(<4 x i32> %a0) { 2942*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_pabs_d_128: 2943*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2944*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpabsd %xmm0, %xmm0 2945*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2946*9880d681SAndroid Build Coastguard Worker; 2947*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_pabs_d_128: 2948*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2949*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpabsd %xmm0, %xmm0 2950*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2951*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.ssse3.pabs.d.128(<4 x i32> %a0) ; <<4 x i32>> [#uses=1] 2952*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 2953*9880d681SAndroid Build Coastguard Worker} 2954*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.pabs.d.128(<4 x i32>) nounwind readnone 2955*9880d681SAndroid Build Coastguard Worker 2956*9880d681SAndroid Build Coastguard Worker 2957*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_pabs_w_128(<8 x i16> %a0) { 2958*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_pabs_w_128: 2959*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2960*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpabsw %xmm0, %xmm0 2961*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2962*9880d681SAndroid Build Coastguard Worker; 2963*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_pabs_w_128: 2964*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2965*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpabsw %xmm0, %xmm0 2966*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2967*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.ssse3.pabs.w.128(<8 x i16> %a0) ; <<8 x i16>> [#uses=1] 2968*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 2969*9880d681SAndroid Build Coastguard Worker} 2970*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.pabs.w.128(<8 x i16>) nounwind readnone 2971*9880d681SAndroid Build Coastguard Worker 2972*9880d681SAndroid Build Coastguard Worker 2973*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_ssse3_phadd_d_128(<4 x i32> %a0, <4 x i32> %a1) { 2974*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_phadd_d_128: 2975*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2976*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vphaddd %xmm1, %xmm0, %xmm0 2977*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2978*9880d681SAndroid Build Coastguard Worker; 2979*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_phadd_d_128: 2980*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2981*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphaddd %xmm1, %xmm0, %xmm0 2982*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2983*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 2984*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 2985*9880d681SAndroid Build Coastguard Worker} 2986*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32>, <4 x i32>) nounwind readnone 2987*9880d681SAndroid Build Coastguard Worker 2988*9880d681SAndroid Build Coastguard Worker 2989*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_phadd_sw_128(<8 x i16> %a0, <8 x i16> %a1) { 2990*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_phadd_sw_128: 2991*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 2992*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vphaddsw %xmm1, %xmm0, %xmm0 2993*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 2994*9880d681SAndroid Build Coastguard Worker; 2995*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_phadd_sw_128: 2996*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 2997*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphaddsw %xmm1, %xmm0, %xmm0 2998*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 2999*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.ssse3.phadd.sw.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 3000*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 3001*9880d681SAndroid Build Coastguard Worker} 3002*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phadd.sw.128(<8 x i16>, <8 x i16>) nounwind readnone 3003*9880d681SAndroid Build Coastguard Worker 3004*9880d681SAndroid Build Coastguard Worker 3005*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_phadd_w_128(<8 x i16> %a0, <8 x i16> %a1) { 3006*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_phadd_w_128: 3007*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3008*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vphaddw %xmm1, %xmm0, %xmm0 3009*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3010*9880d681SAndroid Build Coastguard Worker; 3011*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_phadd_w_128: 3012*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3013*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphaddw %xmm1, %xmm0, %xmm0 3014*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3015*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.ssse3.phadd.w.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 3016*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 3017*9880d681SAndroid Build Coastguard Worker} 3018*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phadd.w.128(<8 x i16>, <8 x i16>) nounwind readnone 3019*9880d681SAndroid Build Coastguard Worker 3020*9880d681SAndroid Build Coastguard Worker 3021*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_ssse3_phsub_d_128(<4 x i32> %a0, <4 x i32> %a1) { 3022*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_phsub_d_128: 3023*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3024*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vphsubd %xmm1, %xmm0, %xmm0 3025*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3026*9880d681SAndroid Build Coastguard Worker; 3027*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_phsub_d_128: 3028*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3029*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphsubd %xmm1, %xmm0, %xmm0 3030*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3031*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.ssse3.phsub.d.128(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 3032*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 3033*9880d681SAndroid Build Coastguard Worker} 3034*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.phsub.d.128(<4 x i32>, <4 x i32>) nounwind readnone 3035*9880d681SAndroid Build Coastguard Worker 3036*9880d681SAndroid Build Coastguard Worker 3037*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_phsub_sw_128(<8 x i16> %a0, <8 x i16> %a1) { 3038*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_phsub_sw_128: 3039*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3040*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vphsubsw %xmm1, %xmm0, %xmm0 3041*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3042*9880d681SAndroid Build Coastguard Worker; 3043*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_phsub_sw_128: 3044*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3045*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphsubsw %xmm1, %xmm0, %xmm0 3046*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3047*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.ssse3.phsub.sw.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 3048*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 3049*9880d681SAndroid Build Coastguard Worker} 3050*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phsub.sw.128(<8 x i16>, <8 x i16>) nounwind readnone 3051*9880d681SAndroid Build Coastguard Worker 3052*9880d681SAndroid Build Coastguard Worker 3053*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_phsub_w_128(<8 x i16> %a0, <8 x i16> %a1) { 3054*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_phsub_w_128: 3055*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3056*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vphsubw %xmm1, %xmm0, %xmm0 3057*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3058*9880d681SAndroid Build Coastguard Worker; 3059*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_phsub_w_128: 3060*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3061*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphsubw %xmm1, %xmm0, %xmm0 3062*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3063*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.ssse3.phsub.w.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 3064*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 3065*9880d681SAndroid Build Coastguard Worker} 3066*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.phsub.w.128(<8 x i16>, <8 x i16>) nounwind readnone 3067*9880d681SAndroid Build Coastguard Worker 3068*9880d681SAndroid Build Coastguard Worker 3069*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_pmadd_ub_sw_128(<16 x i8> %a0, <16 x i8> %a1) { 3070*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_pmadd_ub_sw_128: 3071*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3072*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmaddubsw %xmm1, %xmm0, %xmm0 3073*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3074*9880d681SAndroid Build Coastguard Worker; 3075*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_pmadd_ub_sw_128: 3076*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3077*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaddubsw %xmm1, %xmm0, %xmm0 3078*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3079*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.ssse3.pmadd.ub.sw.128(<16 x i8> %a0, <16 x i8> %a1) ; <<8 x i16>> [#uses=1] 3080*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 3081*9880d681SAndroid Build Coastguard Worker} 3082*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.pmadd.ub.sw.128(<16 x i8>, <16 x i8>) nounwind readnone 3083*9880d681SAndroid Build Coastguard Worker 3084*9880d681SAndroid Build Coastguard Worker 3085*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_pmul_hr_sw_128(<8 x i16> %a0, <8 x i16> %a1) { 3086*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_pmul_hr_sw_128: 3087*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3088*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpmulhrsw %xmm1, %xmm0, %xmm0 3089*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3090*9880d681SAndroid Build Coastguard Worker; 3091*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_pmul_hr_sw_128: 3092*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3093*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmulhrsw %xmm1, %xmm0, %xmm0 3094*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3095*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.ssse3.pmul.hr.sw.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 3096*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 3097*9880d681SAndroid Build Coastguard Worker} 3098*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.pmul.hr.sw.128(<8 x i16>, <8 x i16>) nounwind readnone 3099*9880d681SAndroid Build Coastguard Worker 3100*9880d681SAndroid Build Coastguard Worker 3101*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_ssse3_pshuf_b_128(<16 x i8> %a0, <16 x i8> %a1) { 3102*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_pshuf_b_128: 3103*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3104*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpshufb %xmm1, %xmm0, %xmm0 3105*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3106*9880d681SAndroid Build Coastguard Worker; 3107*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_pshuf_b_128: 3108*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3109*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpshufb %xmm1, %xmm0, %xmm0 3110*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3111*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 3112*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 3113*9880d681SAndroid Build Coastguard Worker} 3114*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8>, <16 x i8>) nounwind readnone 3115*9880d681SAndroid Build Coastguard Worker 3116*9880d681SAndroid Build Coastguard Worker 3117*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_x86_ssse3_psign_b_128(<16 x i8> %a0, <16 x i8> %a1) { 3118*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_psign_b_128: 3119*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3120*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsignb %xmm1, %xmm0, %xmm0 3121*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3122*9880d681SAndroid Build Coastguard Worker; 3123*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_psign_b_128: 3124*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3125*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsignb %xmm1, %xmm0, %xmm0 3126*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3127*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.ssse3.psign.b.128(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1] 3128*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 3129*9880d681SAndroid Build Coastguard Worker} 3130*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.ssse3.psign.b.128(<16 x i8>, <16 x i8>) nounwind readnone 3131*9880d681SAndroid Build Coastguard Worker 3132*9880d681SAndroid Build Coastguard Worker 3133*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_ssse3_psign_d_128(<4 x i32> %a0, <4 x i32> %a1) { 3134*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_psign_d_128: 3135*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3136*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsignd %xmm1, %xmm0, %xmm0 3137*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3138*9880d681SAndroid Build Coastguard Worker; 3139*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_psign_d_128: 3140*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3141*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsignd %xmm1, %xmm0, %xmm0 3142*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3143*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.ssse3.psign.d.128(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 3144*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 3145*9880d681SAndroid Build Coastguard Worker} 3146*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.ssse3.psign.d.128(<4 x i32>, <4 x i32>) nounwind readnone 3147*9880d681SAndroid Build Coastguard Worker 3148*9880d681SAndroid Build Coastguard Worker 3149*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_x86_ssse3_psign_w_128(<8 x i16> %a0, <8 x i16> %a1) { 3150*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_ssse3_psign_w_128: 3151*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3152*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpsignw %xmm1, %xmm0, %xmm0 3153*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3154*9880d681SAndroid Build Coastguard Worker; 3155*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_ssse3_psign_w_128: 3156*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3157*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsignw %xmm1, %xmm0, %xmm0 3158*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3159*9880d681SAndroid Build Coastguard Worker %res = call <8 x i16> @llvm.x86.ssse3.psign.w.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1] 3160*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 3161*9880d681SAndroid Build Coastguard Worker} 3162*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.ssse3.psign.w.128(<8 x i16>, <8 x i16>) nounwind readnone 3163*9880d681SAndroid Build Coastguard Worker 3164*9880d681SAndroid Build Coastguard Worker 3165*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_addsub_pd_256(<4 x double> %a0, <4 x double> %a1) { 3166*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_addsub_pd_256: 3167*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3168*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaddsubpd %ymm1, %ymm0, %ymm0 3169*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3170*9880d681SAndroid Build Coastguard Worker; 3171*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_addsub_pd_256: 3172*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3173*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaddsubpd %ymm1, %ymm0, %ymm0 3174*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3175*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.addsub.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1] 3176*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 3177*9880d681SAndroid Build Coastguard Worker} 3178*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.addsub.pd.256(<4 x double>, <4 x double>) nounwind readnone 3179*9880d681SAndroid Build Coastguard Worker 3180*9880d681SAndroid Build Coastguard Worker 3181*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_addsub_ps_256(<8 x float> %a0, <8 x float> %a1) { 3182*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_addsub_ps_256: 3183*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3184*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaddsubps %ymm1, %ymm0, %ymm0 3185*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3186*9880d681SAndroid Build Coastguard Worker; 3187*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_addsub_ps_256: 3188*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3189*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaddsubps %ymm1, %ymm0, %ymm0 3190*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3191*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.addsub.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1] 3192*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3193*9880d681SAndroid Build Coastguard Worker} 3194*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.addsub.ps.256(<8 x float>, <8 x float>) nounwind readnone 3195*9880d681SAndroid Build Coastguard Worker 3196*9880d681SAndroid Build Coastguard Worker 3197*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_blendv_pd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2) { 3198*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_blendv_pd_256: 3199*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3200*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0 3201*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3202*9880d681SAndroid Build Coastguard Worker; 3203*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_blendv_pd_256: 3204*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3205*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0 3206*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3207*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.blendv.pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2) ; <<4 x double>> [#uses=1] 3208*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 3209*9880d681SAndroid Build Coastguard Worker} 3210*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.blendv.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone 3211*9880d681SAndroid Build Coastguard Worker 3212*9880d681SAndroid Build Coastguard Worker 3213*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_blendv_ps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) { 3214*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_blendv_ps_256: 3215*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3216*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vblendvps %ymm2, %ymm1, %ymm0, %ymm0 3217*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3218*9880d681SAndroid Build Coastguard Worker; 3219*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_blendv_ps_256: 3220*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3221*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vblendvps %ymm2, %ymm1, %ymm0, %ymm0 3222*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3223*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) ; <<8 x float>> [#uses=1] 3224*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3225*9880d681SAndroid Build Coastguard Worker} 3226*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone 3227*9880d681SAndroid Build Coastguard Worker 3228*9880d681SAndroid Build Coastguard Worker 3229*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_cmp_pd_256(<4 x double> %a0, <4 x double> %a1) { 3230*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cmp_pd_256: 3231*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3232*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpordpd %ymm1, %ymm0, %ymm0 3233*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3234*9880d681SAndroid Build Coastguard Worker; 3235*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cmp_pd_256: 3236*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3237*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpordpd %ymm1, %ymm0, %ymm0 3238*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3239*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double> %a0, <4 x double> %a1, i8 7) ; <<4 x double>> [#uses=1] 3240*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 3241*9880d681SAndroid Build Coastguard Worker} 3242*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double>, <4 x double>, i8) nounwind readnone 3243*9880d681SAndroid Build Coastguard Worker 3244*9880d681SAndroid Build Coastguard Worker 3245*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_cmp_ps_256(<8 x float> %a0, <8 x float> %a1) { 3246*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cmp_ps_256: 3247*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3248*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpordps %ymm1, %ymm0, %ymm0 3249*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3250*9880d681SAndroid Build Coastguard Worker; 3251*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cmp_ps_256: 3252*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3253*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpordps %ymm1, %ymm0, %ymm0 3254*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3255*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 7) ; <<8 x float>> [#uses=1] 3256*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3257*9880d681SAndroid Build Coastguard Worker} 3258*9880d681SAndroid Build Coastguard Worker 3259*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_cmp_ps_256_pseudo_op(<8 x float> %a0, <8 x float> %a1) { 3260*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cmp_ps_256_pseudo_op: 3261*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3262*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpeqps %ymm1, %ymm0, %ymm1 3263*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpltps %ymm1, %ymm0, %ymm1 3264*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpleps %ymm1, %ymm0, %ymm1 3265*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpunordps %ymm1, %ymm0, %ymm1 3266*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpneqps %ymm1, %ymm0, %ymm1 3267*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpnltps %ymm1, %ymm0, %ymm1 3268*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpnleps %ymm1, %ymm0, %ymm1 3269*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpordps %ymm1, %ymm0, %ymm1 3270*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpeq_uqps %ymm1, %ymm0, %ymm1 3271*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpngeps %ymm1, %ymm0, %ymm1 3272*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpngtps %ymm1, %ymm0, %ymm1 3273*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpfalseps %ymm1, %ymm0, %ymm1 3274*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpneq_oqps %ymm1, %ymm0, %ymm1 3275*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpgeps %ymm1, %ymm0, %ymm1 3276*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpgtps %ymm1, %ymm0, %ymm1 3277*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmptrueps %ymm1, %ymm0, %ymm1 3278*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpeq_osps %ymm1, %ymm0, %ymm1 3279*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmplt_oqps %ymm1, %ymm0, %ymm1 3280*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmple_oqps %ymm1, %ymm0, %ymm1 3281*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpunord_sps %ymm1, %ymm0, %ymm1 3282*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpneq_usps %ymm1, %ymm0, %ymm1 3283*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpnlt_uqps %ymm1, %ymm0, %ymm1 3284*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpnle_uqps %ymm1, %ymm0, %ymm1 3285*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpord_sps %ymm1, %ymm0, %ymm1 3286*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpeq_usps %ymm1, %ymm0, %ymm1 3287*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpnge_uqps %ymm1, %ymm0, %ymm1 3288*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpngt_uqps %ymm1, %ymm0, %ymm1 3289*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpfalse_osps %ymm1, %ymm0, %ymm1 3290*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpneq_osps %ymm1, %ymm0, %ymm1 3291*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpge_oqps %ymm1, %ymm0, %ymm1 3292*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmpgt_oqps %ymm1, %ymm0, %ymm1 3293*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcmptrue_usps %ymm1, %ymm0, %ymm0 3294*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3295*9880d681SAndroid Build Coastguard Worker; 3296*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cmp_ps_256_pseudo_op: 3297*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3298*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpeqps %ymm1, %ymm0, %ymm1 3299*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpltps %ymm1, %ymm0, %ymm1 3300*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpleps %ymm1, %ymm0, %ymm1 3301*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpunordps %ymm1, %ymm0, %ymm1 3302*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpneqps %ymm1, %ymm0, %ymm1 3303*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpnltps %ymm1, %ymm0, %ymm1 3304*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpnleps %ymm1, %ymm0, %ymm1 3305*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpordps %ymm1, %ymm0, %ymm1 3306*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpeq_uqps %ymm1, %ymm0, %ymm1 3307*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpngeps %ymm1, %ymm0, %ymm1 3308*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpngtps %ymm1, %ymm0, %ymm1 3309*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpfalseps %ymm1, %ymm0, %ymm1 3310*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpneq_oqps %ymm1, %ymm0, %ymm1 3311*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpgeps %ymm1, %ymm0, %ymm1 3312*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpgtps %ymm1, %ymm0, %ymm1 3313*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmptrueps %ymm1, %ymm0, %ymm1 3314*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpeq_osps %ymm1, %ymm0, %ymm1 3315*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmplt_oqps %ymm1, %ymm0, %ymm1 3316*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmple_oqps %ymm1, %ymm0, %ymm1 3317*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpunord_sps %ymm1, %ymm0, %ymm1 3318*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpneq_usps %ymm1, %ymm0, %ymm1 3319*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpnlt_uqps %ymm1, %ymm0, %ymm1 3320*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpnle_uqps %ymm1, %ymm0, %ymm1 3321*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpord_sps %ymm1, %ymm0, %ymm1 3322*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpeq_usps %ymm1, %ymm0, %ymm1 3323*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpnge_uqps %ymm1, %ymm0, %ymm1 3324*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpngt_uqps %ymm1, %ymm0, %ymm1 3325*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpfalse_osps %ymm1, %ymm0, %ymm1 3326*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpneq_osps %ymm1, %ymm0, %ymm1 3327*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpge_oqps %ymm1, %ymm0, %ymm1 3328*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmpgt_oqps %ymm1, %ymm0, %ymm1 3329*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcmptrue_usps %ymm1, %ymm0, %ymm0 3330*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3331*9880d681SAndroid Build Coastguard Worker %a2 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 0) ; <<8 x float>> [#uses=1] 3332*9880d681SAndroid Build Coastguard Worker %a3 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a2, i8 1) ; <<8 x float>> [#uses=1] 3333*9880d681SAndroid Build Coastguard Worker %a4 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a3, i8 2) ; <<8 x float>> [#uses=1] 3334*9880d681SAndroid Build Coastguard Worker %a5 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a4, i8 3) ; <<8 x float>> [#uses=1] 3335*9880d681SAndroid Build Coastguard Worker %a6 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a5, i8 4) ; <<8 x float>> [#uses=1] 3336*9880d681SAndroid Build Coastguard Worker %a7 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a6, i8 5) ; <<8 x float>> [#uses=1] 3337*9880d681SAndroid Build Coastguard Worker %a8 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a7, i8 6) ; <<8 x float>> [#uses=1] 3338*9880d681SAndroid Build Coastguard Worker %a9 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a8, i8 7) ; <<8 x float>> [#uses=1] 3339*9880d681SAndroid Build Coastguard Worker %a10 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a9, i8 8) ; <<8 x float>> [#uses=1] 3340*9880d681SAndroid Build Coastguard Worker %a11 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a10, i8 9) ; <<8 x float>> [#uses=1] 3341*9880d681SAndroid Build Coastguard Worker %a12 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a11, i8 10) ; <<8 x float>> [#uses=1] 3342*9880d681SAndroid Build Coastguard Worker %a13 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a12, i8 11) ; <<8 x float>> [#uses=1] 3343*9880d681SAndroid Build Coastguard Worker %a14 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a13, i8 12) ; <<8 x float>> [#uses=1] 3344*9880d681SAndroid Build Coastguard Worker %a15 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a14, i8 13) ; <<8 x float>> [#uses=1] 3345*9880d681SAndroid Build Coastguard Worker %a16 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a15, i8 14) ; <<8 x float>> [#uses=1] 3346*9880d681SAndroid Build Coastguard Worker %a17 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a16, i8 15) ; <<8 x float>> [#uses=1] 3347*9880d681SAndroid Build Coastguard Worker %a18 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a17, i8 16) ; <<8 x float>> [#uses=1] 3348*9880d681SAndroid Build Coastguard Worker %a19 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a18, i8 17) ; <<8 x float>> [#uses=1] 3349*9880d681SAndroid Build Coastguard Worker %a20 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a19, i8 18) ; <<8 x float>> [#uses=1] 3350*9880d681SAndroid Build Coastguard Worker %a21 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a20, i8 19) ; <<8 x float>> [#uses=1] 3351*9880d681SAndroid Build Coastguard Worker %a22 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a21, i8 20) ; <<8 x float>> [#uses=1] 3352*9880d681SAndroid Build Coastguard Worker %a23 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a22, i8 21) ; <<8 x float>> [#uses=1] 3353*9880d681SAndroid Build Coastguard Worker %a24 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a23, i8 22) ; <<8 x float>> [#uses=1] 3354*9880d681SAndroid Build Coastguard Worker %a25 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a24, i8 23) ; <<8 x float>> [#uses=1] 3355*9880d681SAndroid Build Coastguard Worker %a26 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a25, i8 24) ; <<8 x float>> [#uses=1] 3356*9880d681SAndroid Build Coastguard Worker %a27 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a26, i8 25) ; <<8 x float>> [#uses=1] 3357*9880d681SAndroid Build Coastguard Worker %a28 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a27, i8 26) ; <<8 x float>> [#uses=1] 3358*9880d681SAndroid Build Coastguard Worker %a29 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a28, i8 27) ; <<8 x float>> [#uses=1] 3359*9880d681SAndroid Build Coastguard Worker %a30 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a29, i8 28) ; <<8 x float>> [#uses=1] 3360*9880d681SAndroid Build Coastguard Worker %a31 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a30, i8 29) ; <<8 x float>> [#uses=1] 3361*9880d681SAndroid Build Coastguard Worker %a32 = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a31, i8 30) ; <<8 x float>> [#uses=1] 3362*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a32, i8 31) ; <<8 x float>> [#uses=1] 3363*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3364*9880d681SAndroid Build Coastguard Worker} 3365*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone 3366*9880d681SAndroid Build Coastguard Worker 3367*9880d681SAndroid Build Coastguard Worker 3368*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx_cvt_pd2_ps_256(<4 x double> %a0) { 3369*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cvt_pd2_ps_256: 3370*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3371*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtpd2psy %ymm0, %xmm0 3372*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 3373*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3374*9880d681SAndroid Build Coastguard Worker; 3375*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cvt_pd2_ps_256: 3376*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3377*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtpd2psy %ymm0, %xmm0 3378*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3379*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx.cvt.pd2.ps.256(<4 x double> %a0) ; <<4 x float>> [#uses=1] 3380*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3381*9880d681SAndroid Build Coastguard Worker} 3382*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx.cvt.pd2.ps.256(<4 x double>) nounwind readnone 3383*9880d681SAndroid Build Coastguard Worker 3384*9880d681SAndroid Build Coastguard Worker 3385*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx_cvt_pd2dq_256(<4 x double> %a0) { 3386*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cvt_pd2dq_256: 3387*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3388*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtpd2dqy %ymm0, %xmm0 3389*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 3390*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3391*9880d681SAndroid Build Coastguard Worker; 3392*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cvt_pd2dq_256: 3393*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3394*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtpd2dqy %ymm0, %xmm0 3395*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3396*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double> %a0) ; <<4 x i32>> [#uses=1] 3397*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 3398*9880d681SAndroid Build Coastguard Worker} 3399*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double>) nounwind readnone 3400*9880d681SAndroid Build Coastguard Worker 3401*9880d681SAndroid Build Coastguard Worker 3402*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx_cvt_ps2dq_256(<8 x float> %a0) { 3403*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cvt_ps2dq_256: 3404*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3405*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtps2dq %ymm0, %ymm0 3406*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3407*9880d681SAndroid Build Coastguard Worker; 3408*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cvt_ps2dq_256: 3409*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3410*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtps2dq %ymm0, %ymm0 3411*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3412*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float> %a0) ; <<8 x i32>> [#uses=1] 3413*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 3414*9880d681SAndroid Build Coastguard Worker} 3415*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float>) nounwind readnone 3416*9880d681SAndroid Build Coastguard Worker 3417*9880d681SAndroid Build Coastguard Worker 3418*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_cvtdq2_ps_256(<8 x i32> %a0) { 3419*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_cvtdq2_ps_256: 3420*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3421*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vcvtdq2ps %ymm0, %ymm0 3422*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3423*9880d681SAndroid Build Coastguard Worker; 3424*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_cvtdq2_ps_256: 3425*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3426*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vcvtdq2ps %ymm0, %ymm0 3427*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3428*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.cvtdq2.ps.256(<8 x i32> %a0) ; <<8 x float>> [#uses=1] 3429*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3430*9880d681SAndroid Build Coastguard Worker} 3431*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.cvtdq2.ps.256(<8 x i32>) nounwind readnone 3432*9880d681SAndroid Build Coastguard Worker 3433*9880d681SAndroid Build Coastguard Worker 3434*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_dp_ps_256(<8 x float> %a0, <8 x float> %a1) { 3435*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_dp_ps_256: 3436*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3437*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vdpps $7, %ymm1, %ymm0, %ymm0 3438*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3439*9880d681SAndroid Build Coastguard Worker; 3440*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_dp_ps_256: 3441*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3442*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vdpps $7, %ymm1, %ymm0, %ymm0 3443*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3444*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.dp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 7) ; <<8 x float>> [#uses=1] 3445*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3446*9880d681SAndroid Build Coastguard Worker} 3447*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.dp.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone 3448*9880d681SAndroid Build Coastguard Worker 3449*9880d681SAndroid Build Coastguard Worker 3450*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_hadd_pd_256(<4 x double> %a0, <4 x double> %a1) { 3451*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_hadd_pd_256: 3452*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3453*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vhaddpd %ymm1, %ymm0, %ymm0 3454*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3455*9880d681SAndroid Build Coastguard Worker; 3456*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_hadd_pd_256: 3457*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3458*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vhaddpd %ymm1, %ymm0, %ymm0 3459*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3460*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.hadd.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1] 3461*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 3462*9880d681SAndroid Build Coastguard Worker} 3463*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.hadd.pd.256(<4 x double>, <4 x double>) nounwind readnone 3464*9880d681SAndroid Build Coastguard Worker 3465*9880d681SAndroid Build Coastguard Worker 3466*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_hadd_ps_256(<8 x float> %a0, <8 x float> %a1) { 3467*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_hadd_ps_256: 3468*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3469*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vhaddps %ymm1, %ymm0, %ymm0 3470*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3471*9880d681SAndroid Build Coastguard Worker; 3472*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_hadd_ps_256: 3473*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3474*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vhaddps %ymm1, %ymm0, %ymm0 3475*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3476*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.hadd.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1] 3477*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3478*9880d681SAndroid Build Coastguard Worker} 3479*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.hadd.ps.256(<8 x float>, <8 x float>) nounwind readnone 3480*9880d681SAndroid Build Coastguard Worker 3481*9880d681SAndroid Build Coastguard Worker 3482*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_hsub_pd_256(<4 x double> %a0, <4 x double> %a1) { 3483*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_hsub_pd_256: 3484*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3485*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vhsubpd %ymm1, %ymm0, %ymm0 3486*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3487*9880d681SAndroid Build Coastguard Worker; 3488*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_hsub_pd_256: 3489*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3490*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vhsubpd %ymm1, %ymm0, %ymm0 3491*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3492*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.hsub.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1] 3493*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 3494*9880d681SAndroid Build Coastguard Worker} 3495*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.hsub.pd.256(<4 x double>, <4 x double>) nounwind readnone 3496*9880d681SAndroid Build Coastguard Worker 3497*9880d681SAndroid Build Coastguard Worker 3498*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_hsub_ps_256(<8 x float> %a0, <8 x float> %a1) { 3499*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_hsub_ps_256: 3500*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3501*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vhsubps %ymm1, %ymm0, %ymm0 3502*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3503*9880d681SAndroid Build Coastguard Worker; 3504*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_hsub_ps_256: 3505*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3506*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vhsubps %ymm1, %ymm0, %ymm0 3507*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3508*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.hsub.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1] 3509*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3510*9880d681SAndroid Build Coastguard Worker} 3511*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.hsub.ps.256(<8 x float>, <8 x float>) nounwind readnone 3512*9880d681SAndroid Build Coastguard Worker 3513*9880d681SAndroid Build Coastguard Worker 3514*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx_ldu_dq_256(i8* %a0) { 3515*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_ldu_dq_256: 3516*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3517*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 3518*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vlddqu (%eax), %ymm0 3519*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3520*9880d681SAndroid Build Coastguard Worker; 3521*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_ldu_dq_256: 3522*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3523*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 3524*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vlddqu (%eax), %ymm0 3525*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3526*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx.ldu.dq.256(i8* %a0) ; <<32 x i8>> [#uses=1] 3527*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 3528*9880d681SAndroid Build Coastguard Worker} 3529*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx.ldu.dq.256(i8*) nounwind readonly 3530*9880d681SAndroid Build Coastguard Worker 3531*9880d681SAndroid Build Coastguard Worker 3532*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx_maskload_pd(i8* %a0, <2 x i64> %mask) { 3533*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskload_pd: 3534*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3535*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 3536*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaskmovpd (%eax), %xmm0, %xmm0 3537*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3538*9880d681SAndroid Build Coastguard Worker; 3539*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskload_pd: 3540*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3541*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 3542*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaskmovpd (%eax), %xmm0, %xmm0 3543*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3544*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx.maskload.pd(i8* %a0, <2 x i64> %mask) ; <<2 x double>> [#uses=1] 3545*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 3546*9880d681SAndroid Build Coastguard Worker} 3547*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx.maskload.pd(i8*, <2 x i64>) nounwind readonly 3548*9880d681SAndroid Build Coastguard Worker 3549*9880d681SAndroid Build Coastguard Worker 3550*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_maskload_pd_256(i8* %a0, <4 x i64> %mask) { 3551*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskload_pd_256: 3552*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3553*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 3554*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaskmovpd (%eax), %ymm0, %ymm0 3555*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3556*9880d681SAndroid Build Coastguard Worker; 3557*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskload_pd_256: 3558*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3559*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 3560*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaskmovpd (%eax), %ymm0, %ymm0 3561*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3562*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.maskload.pd.256(i8* %a0, <4 x i64> %mask) ; <<4 x double>> [#uses=1] 3563*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 3564*9880d681SAndroid Build Coastguard Worker} 3565*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.maskload.pd.256(i8*, <4 x i64>) nounwind readonly 3566*9880d681SAndroid Build Coastguard Worker 3567*9880d681SAndroid Build Coastguard Worker 3568*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx_maskload_ps(i8* %a0, <4 x i32> %mask) { 3569*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskload_ps: 3570*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3571*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 3572*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaskmovps (%eax), %xmm0, %xmm0 3573*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3574*9880d681SAndroid Build Coastguard Worker; 3575*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskload_ps: 3576*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3577*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 3578*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaskmovps (%eax), %xmm0, %xmm0 3579*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3580*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx.maskload.ps(i8* %a0, <4 x i32> %mask) ; <<4 x float>> [#uses=1] 3581*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 3582*9880d681SAndroid Build Coastguard Worker} 3583*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx.maskload.ps(i8*, <4 x i32>) nounwind readonly 3584*9880d681SAndroid Build Coastguard Worker 3585*9880d681SAndroid Build Coastguard Worker 3586*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_maskload_ps_256(i8* %a0, <8 x i32> %mask) { 3587*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskload_ps_256: 3588*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3589*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 3590*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaskmovps (%eax), %ymm0, %ymm0 3591*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3592*9880d681SAndroid Build Coastguard Worker; 3593*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskload_ps_256: 3594*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3595*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 3596*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaskmovps (%eax), %ymm0, %ymm0 3597*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3598*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.maskload.ps.256(i8* %a0, <8 x i32> %mask) ; <<8 x float>> [#uses=1] 3599*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3600*9880d681SAndroid Build Coastguard Worker} 3601*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.maskload.ps.256(i8*, <8 x i32>) nounwind readonly 3602*9880d681SAndroid Build Coastguard Worker 3603*9880d681SAndroid Build Coastguard Worker 3604*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_maskstore_pd(i8* %a0, <2 x i64> %mask, <2 x double> %a2) { 3605*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskstore_pd: 3606*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3607*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 3608*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaskmovpd %xmm1, %xmm0, (%eax) 3609*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3610*9880d681SAndroid Build Coastguard Worker; 3611*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskstore_pd: 3612*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3613*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 3614*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaskmovpd %xmm1, %xmm0, (%eax) 3615*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3616*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx.maskstore.pd(i8* %a0, <2 x i64> %mask, <2 x double> %a2) 3617*9880d681SAndroid Build Coastguard Worker ret void 3618*9880d681SAndroid Build Coastguard Worker} 3619*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.maskstore.pd(i8*, <2 x i64>, <2 x double>) nounwind 3620*9880d681SAndroid Build Coastguard Worker 3621*9880d681SAndroid Build Coastguard Worker 3622*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_maskstore_pd_256(i8* %a0, <4 x i64> %mask, <4 x double> %a2) { 3623*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskstore_pd_256: 3624*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3625*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 3626*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaskmovpd %ymm1, %ymm0, (%eax) 3627*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 3628*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3629*9880d681SAndroid Build Coastguard Worker; 3630*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskstore_pd_256: 3631*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3632*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 3633*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaskmovpd %ymm1, %ymm0, (%eax) 3634*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3635*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx.maskstore.pd.256(i8* %a0, <4 x i64> %mask, <4 x double> %a2) 3636*9880d681SAndroid Build Coastguard Worker ret void 3637*9880d681SAndroid Build Coastguard Worker} 3638*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.maskstore.pd.256(i8*, <4 x i64>, <4 x double>) nounwind 3639*9880d681SAndroid Build Coastguard Worker 3640*9880d681SAndroid Build Coastguard Worker 3641*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_maskstore_ps(i8* %a0, <4 x i32> %mask, <4 x float> %a2) { 3642*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskstore_ps: 3643*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3644*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 3645*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaskmovps %xmm1, %xmm0, (%eax) 3646*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3647*9880d681SAndroid Build Coastguard Worker; 3648*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskstore_ps: 3649*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3650*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 3651*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaskmovps %xmm1, %xmm0, (%eax) 3652*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3653*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx.maskstore.ps(i8* %a0, <4 x i32> %mask, <4 x float> %a2) 3654*9880d681SAndroid Build Coastguard Worker ret void 3655*9880d681SAndroid Build Coastguard Worker} 3656*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.maskstore.ps(i8*, <4 x i32>, <4 x float>) nounwind 3657*9880d681SAndroid Build Coastguard Worker 3658*9880d681SAndroid Build Coastguard Worker 3659*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_maskstore_ps_256(i8* %a0, <8 x i32> %mask, <8 x float> %a2) { 3660*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_maskstore_ps_256: 3661*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3662*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 3663*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaskmovps %ymm1, %ymm0, (%eax) 3664*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 3665*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3666*9880d681SAndroid Build Coastguard Worker; 3667*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_maskstore_ps_256: 3668*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3669*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 3670*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaskmovps %ymm1, %ymm0, (%eax) 3671*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3672*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx.maskstore.ps.256(i8* %a0, <8 x i32> %mask, <8 x float> %a2) 3673*9880d681SAndroid Build Coastguard Worker ret void 3674*9880d681SAndroid Build Coastguard Worker} 3675*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.maskstore.ps.256(i8*, <8 x i32>, <8 x float>) nounwind 3676*9880d681SAndroid Build Coastguard Worker 3677*9880d681SAndroid Build Coastguard Worker 3678*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_max_pd_256(<4 x double> %a0, <4 x double> %a1) { 3679*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_max_pd_256: 3680*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3681*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaxpd %ymm1, %ymm0, %ymm0 3682*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3683*9880d681SAndroid Build Coastguard Worker; 3684*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_max_pd_256: 3685*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3686*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaxpd %ymm1, %ymm0, %ymm0 3687*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3688*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.max.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1] 3689*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 3690*9880d681SAndroid Build Coastguard Worker} 3691*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.max.pd.256(<4 x double>, <4 x double>) nounwind readnone 3692*9880d681SAndroid Build Coastguard Worker 3693*9880d681SAndroid Build Coastguard Worker 3694*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_max_ps_256(<8 x float> %a0, <8 x float> %a1) { 3695*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_max_ps_256: 3696*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3697*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmaxps %ymm1, %ymm0, %ymm0 3698*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3699*9880d681SAndroid Build Coastguard Worker; 3700*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_max_ps_256: 3701*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3702*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmaxps %ymm1, %ymm0, %ymm0 3703*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3704*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.max.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1] 3705*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3706*9880d681SAndroid Build Coastguard Worker} 3707*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.max.ps.256(<8 x float>, <8 x float>) nounwind readnone 3708*9880d681SAndroid Build Coastguard Worker 3709*9880d681SAndroid Build Coastguard Worker 3710*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_min_pd_256(<4 x double> %a0, <4 x double> %a1) { 3711*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_min_pd_256: 3712*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3713*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vminpd %ymm1, %ymm0, %ymm0 3714*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3715*9880d681SAndroid Build Coastguard Worker; 3716*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_min_pd_256: 3717*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3718*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vminpd %ymm1, %ymm0, %ymm0 3719*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3720*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.min.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1] 3721*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 3722*9880d681SAndroid Build Coastguard Worker} 3723*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.min.pd.256(<4 x double>, <4 x double>) nounwind readnone 3724*9880d681SAndroid Build Coastguard Worker 3725*9880d681SAndroid Build Coastguard Worker 3726*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_min_ps_256(<8 x float> %a0, <8 x float> %a1) { 3727*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_min_ps_256: 3728*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3729*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vminps %ymm1, %ymm0, %ymm0 3730*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3731*9880d681SAndroid Build Coastguard Worker; 3732*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_min_ps_256: 3733*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3734*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vminps %ymm1, %ymm0, %ymm0 3735*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3736*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.min.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1] 3737*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3738*9880d681SAndroid Build Coastguard Worker} 3739*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.min.ps.256(<8 x float>, <8 x float>) nounwind readnone 3740*9880d681SAndroid Build Coastguard Worker 3741*9880d681SAndroid Build Coastguard Worker 3742*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_movmsk_pd_256(<4 x double> %a0) { 3743*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_movmsk_pd_256: 3744*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3745*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmovmskpd %ymm0, %eax 3746*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 3747*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3748*9880d681SAndroid Build Coastguard Worker; 3749*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_movmsk_pd_256: 3750*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3751*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovmskpd %ymm0, %eax 3752*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3753*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.movmsk.pd.256(<4 x double> %a0) ; <i32> [#uses=1] 3754*9880d681SAndroid Build Coastguard Worker ret i32 %res 3755*9880d681SAndroid Build Coastguard Worker} 3756*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.movmsk.pd.256(<4 x double>) nounwind readnone 3757*9880d681SAndroid Build Coastguard Worker 3758*9880d681SAndroid Build Coastguard Worker 3759*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_movmsk_ps_256(<8 x float> %a0) { 3760*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_movmsk_ps_256: 3761*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3762*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmovmskps %ymm0, %eax 3763*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 3764*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3765*9880d681SAndroid Build Coastguard Worker; 3766*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_movmsk_ps_256: 3767*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3768*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovmskps %ymm0, %eax 3769*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3770*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %a0) ; <i32> [#uses=1] 3771*9880d681SAndroid Build Coastguard Worker ret i32 %res 3772*9880d681SAndroid Build Coastguard Worker} 3773*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.movmsk.ps.256(<8 x float>) nounwind readnone 3774*9880d681SAndroid Build Coastguard Worker 3775*9880d681SAndroid Build Coastguard Worker 3776*9880d681SAndroid Build Coastguard Worker 3777*9880d681SAndroid Build Coastguard Worker 3778*9880d681SAndroid Build Coastguard Worker 3779*9880d681SAndroid Build Coastguard Worker 3780*9880d681SAndroid Build Coastguard Worker 3781*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_ptestc_256(<4 x i64> %a0, <4 x i64> %a1) { 3782*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_ptestc_256: 3783*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3784*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vptest %ymm1, %ymm0 3785*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sbbl %eax, %eax 3786*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: andl $1, %eax 3787*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 3788*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3789*9880d681SAndroid Build Coastguard Worker; 3790*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_ptestc_256: 3791*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3792*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vptest %ymm1, %ymm0 3793*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sbbl %eax, %eax 3794*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: andl $1, %eax 3795*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3796*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.ptestc.256(<4 x i64> %a0, <4 x i64> %a1) ; <i32> [#uses=1] 3797*9880d681SAndroid Build Coastguard Worker ret i32 %res 3798*9880d681SAndroid Build Coastguard Worker} 3799*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.ptestc.256(<4 x i64>, <4 x i64>) nounwind readnone 3800*9880d681SAndroid Build Coastguard Worker 3801*9880d681SAndroid Build Coastguard Worker 3802*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_ptestnzc_256(<4 x i64> %a0, <4 x i64> %a1) { 3803*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_ptestnzc_256: 3804*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3805*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 3806*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vptest %ymm1, %ymm0 3807*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 3808*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 3809*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3810*9880d681SAndroid Build Coastguard Worker; 3811*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_ptestnzc_256: 3812*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3813*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 3814*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vptest %ymm1, %ymm0 3815*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 3816*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3817*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.ptestnzc.256(<4 x i64> %a0, <4 x i64> %a1) ; <i32> [#uses=1] 3818*9880d681SAndroid Build Coastguard Worker ret i32 %res 3819*9880d681SAndroid Build Coastguard Worker} 3820*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.ptestnzc.256(<4 x i64>, <4 x i64>) nounwind readnone 3821*9880d681SAndroid Build Coastguard Worker 3822*9880d681SAndroid Build Coastguard Worker 3823*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_ptestz_256(<4 x i64> %a0, <4 x i64> %a1) { 3824*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_ptestz_256: 3825*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3826*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 3827*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vptest %ymm1, %ymm0 3828*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sete %al 3829*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 3830*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3831*9880d681SAndroid Build Coastguard Worker; 3832*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_ptestz_256: 3833*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3834*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 3835*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vptest %ymm1, %ymm0 3836*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sete %al 3837*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3838*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.ptestz.256(<4 x i64> %a0, <4 x i64> %a1) ; <i32> [#uses=1] 3839*9880d681SAndroid Build Coastguard Worker ret i32 %res 3840*9880d681SAndroid Build Coastguard Worker} 3841*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.ptestz.256(<4 x i64>, <4 x i64>) nounwind readnone 3842*9880d681SAndroid Build Coastguard Worker 3843*9880d681SAndroid Build Coastguard Worker 3844*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_rcp_ps_256(<8 x float> %a0) { 3845*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_rcp_ps_256: 3846*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3847*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vrcpps %ymm0, %ymm0 3848*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3849*9880d681SAndroid Build Coastguard Worker; 3850*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_rcp_ps_256: 3851*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3852*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vrcp14ps %ymm0, %ymm0 3853*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3854*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.rcp.ps.256(<8 x float> %a0) ; <<8 x float>> [#uses=1] 3855*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3856*9880d681SAndroid Build Coastguard Worker} 3857*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.rcp.ps.256(<8 x float>) nounwind readnone 3858*9880d681SAndroid Build Coastguard Worker 3859*9880d681SAndroid Build Coastguard Worker 3860*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_round_pd_256(<4 x double> %a0) { 3861*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_round_pd_256: 3862*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3863*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vroundpd $7, %ymm0, %ymm0 3864*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3865*9880d681SAndroid Build Coastguard Worker; 3866*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_round_pd_256: 3867*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3868*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vroundpd $7, %ymm0, %ymm0 3869*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3870*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.round.pd.256(<4 x double> %a0, i32 7) ; <<4 x double>> [#uses=1] 3871*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 3872*9880d681SAndroid Build Coastguard Worker} 3873*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.round.pd.256(<4 x double>, i32) nounwind readnone 3874*9880d681SAndroid Build Coastguard Worker 3875*9880d681SAndroid Build Coastguard Worker 3876*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_round_ps_256(<8 x float> %a0) { 3877*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_round_ps_256: 3878*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3879*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vroundps $7, %ymm0, %ymm0 3880*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3881*9880d681SAndroid Build Coastguard Worker; 3882*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_round_ps_256: 3883*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3884*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vroundps $7, %ymm0, %ymm0 3885*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3886*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.round.ps.256(<8 x float> %a0, i32 7) ; <<8 x float>> [#uses=1] 3887*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3888*9880d681SAndroid Build Coastguard Worker} 3889*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.round.ps.256(<8 x float>, i32) nounwind readnone 3890*9880d681SAndroid Build Coastguard Worker 3891*9880d681SAndroid Build Coastguard Worker 3892*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_rsqrt_ps_256(<8 x float> %a0) { 3893*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_rsqrt_ps_256: 3894*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3895*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vrsqrtps %ymm0, %ymm0 3896*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3897*9880d681SAndroid Build Coastguard Worker; 3898*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_rsqrt_ps_256: 3899*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3900*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vrsqrt14ps %ymm0, %ymm0 3901*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3902*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.rsqrt.ps.256(<8 x float> %a0) ; <<8 x float>> [#uses=1] 3903*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3904*9880d681SAndroid Build Coastguard Worker} 3905*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.rsqrt.ps.256(<8 x float>) nounwind readnone 3906*9880d681SAndroid Build Coastguard Worker 3907*9880d681SAndroid Build Coastguard Worker 3908*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_sqrt_pd_256(<4 x double> %a0) { 3909*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_sqrt_pd_256: 3910*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3911*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vsqrtpd %ymm0, %ymm0 3912*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3913*9880d681SAndroid Build Coastguard Worker; 3914*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_sqrt_pd_256: 3915*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3916*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vsqrtpd %ymm0, %ymm0 3917*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3918*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.sqrt.pd.256(<4 x double> %a0) ; <<4 x double>> [#uses=1] 3919*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 3920*9880d681SAndroid Build Coastguard Worker} 3921*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.sqrt.pd.256(<4 x double>) nounwind readnone 3922*9880d681SAndroid Build Coastguard Worker 3923*9880d681SAndroid Build Coastguard Worker 3924*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_sqrt_ps_256(<8 x float> %a0) { 3925*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_sqrt_ps_256: 3926*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3927*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vsqrtps %ymm0, %ymm0 3928*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3929*9880d681SAndroid Build Coastguard Worker; 3930*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_sqrt_ps_256: 3931*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3932*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vsqrtps %ymm0, %ymm0 3933*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3934*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.sqrt.ps.256(<8 x float> %a0) ; <<8 x float>> [#uses=1] 3935*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3936*9880d681SAndroid Build Coastguard Worker} 3937*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.sqrt.ps.256(<8 x float>) nounwind readnone 3938*9880d681SAndroid Build Coastguard Worker 3939*9880d681SAndroid Build Coastguard Worker 3940*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_vbroadcastf128_pd_256(i8* %a0) { 3941*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vbroadcastf128_pd_256: 3942*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3943*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 3944*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1] 3945*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3946*9880d681SAndroid Build Coastguard Worker; 3947*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vbroadcastf128_pd_256: 3948*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3949*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 3950*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1] 3951*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3952*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.vbroadcastf128.pd.256(i8* %a0) ; <<4 x double>> [#uses=1] 3953*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 3954*9880d681SAndroid Build Coastguard Worker} 3955*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.vbroadcastf128.pd.256(i8*) nounwind readonly 3956*9880d681SAndroid Build Coastguard Worker 3957*9880d681SAndroid Build Coastguard Worker 3958*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_vbroadcastf128_ps_256(i8* %a0) { 3959*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vbroadcastf128_ps_256: 3960*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3961*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 3962*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1] 3963*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3964*9880d681SAndroid Build Coastguard Worker; 3965*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vbroadcastf128_ps_256: 3966*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3967*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 3968*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vbroadcastf128 {{.*#+}} ymm0 = mem[0,1,0,1] 3969*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3970*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.vbroadcastf128.ps.256(i8* %a0) ; <<8 x float>> [#uses=1] 3971*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 3972*9880d681SAndroid Build Coastguard Worker} 3973*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.vbroadcastf128.ps.256(i8*) nounwind readonly 3974*9880d681SAndroid Build Coastguard Worker 3975*9880d681SAndroid Build Coastguard Worker 3976*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_vperm2f128_pd_256(<4 x double> %a0, <4 x double> %a1) { 3977*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vperm2f128_pd_256: 3978*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3979*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],ymm0[0,1] 3980*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3981*9880d681SAndroid Build Coastguard Worker; 3982*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vperm2f128_pd_256: 3983*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 3984*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],ymm0[0,1] 3985*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 3986*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.vperm2f128.pd.256(<4 x double> %a0, <4 x double> %a1, i8 7) ; <<4 x double>> [#uses=1] 3987*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 3988*9880d681SAndroid Build Coastguard Worker} 3989*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.vperm2f128.pd.256(<4 x double>, <4 x double>, i8) nounwind readnone 3990*9880d681SAndroid Build Coastguard Worker 3991*9880d681SAndroid Build Coastguard Worker 3992*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_vperm2f128_ps_256(<8 x float> %a0, <8 x float> %a1) { 3993*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vperm2f128_ps_256: 3994*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 3995*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],ymm0[0,1] 3996*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 3997*9880d681SAndroid Build Coastguard Worker; 3998*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vperm2f128_ps_256: 3999*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4000*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],ymm0[0,1] 4001*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4002*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.vperm2f128.ps.256(<8 x float> %a0, <8 x float> %a1, i8 7) ; <<8 x float>> [#uses=1] 4003*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 4004*9880d681SAndroid Build Coastguard Worker} 4005*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.vperm2f128.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone 4006*9880d681SAndroid Build Coastguard Worker 4007*9880d681SAndroid Build Coastguard Worker 4008*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx_vperm2f128_si_256(<8 x i32> %a0, <8 x i32> %a1) { 4009*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vperm2f128_si_256: 4010*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4011*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],ymm0[0,1] 4012*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4013*9880d681SAndroid Build Coastguard Worker; 4014*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vperm2f128_si_256: 4015*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4016*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm1[2,3],ymm0[0,1] 4017*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4018*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx.vperm2f128.si.256(<8 x i32> %a0, <8 x i32> %a1, i8 7) ; <<8 x i32>> [#uses=1] 4019*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 4020*9880d681SAndroid Build Coastguard Worker} 4021*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx.vperm2f128.si.256(<8 x i32>, <8 x i32>, i8) nounwind readnone 4022*9880d681SAndroid Build Coastguard Worker 4023*9880d681SAndroid Build Coastguard Worker 4024*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx_vpermilvar_pd(<2 x double> %a0, <2 x i64> %a1) { 4025*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vpermilvar_pd: 4026*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4027*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpermilpd %xmm1, %xmm0, %xmm0 4028*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4029*9880d681SAndroid Build Coastguard Worker; 4030*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vpermilvar_pd: 4031*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4032*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpermilpd %xmm1, %xmm0, %xmm0 4033*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4034*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> %a0, <2 x i64> %a1) ; <<2 x double>> [#uses=1] 4035*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 4036*9880d681SAndroid Build Coastguard Worker} 4037*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double>, <2 x i64>) nounwind readnone 4038*9880d681SAndroid Build Coastguard Worker 4039*9880d681SAndroid Build Coastguard Worker 4040*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_vpermilvar_pd_256(<4 x double> %a0, <4 x i64> %a1) { 4041*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vpermilvar_pd_256: 4042*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4043*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpermilpd %ymm1, %ymm0, %ymm0 4044*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4045*9880d681SAndroid Build Coastguard Worker; 4046*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vpermilvar_pd_256: 4047*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4048*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpermilpd %ymm1, %ymm0, %ymm0 4049*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4050*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> %a0, <4 x i64> %a1) ; <<4 x double>> [#uses=1] 4051*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 4052*9880d681SAndroid Build Coastguard Worker} 4053*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double>, <4 x i64>) nounwind readnone 4054*9880d681SAndroid Build Coastguard Worker 4055*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx_vpermilvar_pd_256_2(<4 x double> %a0) { 4056*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vpermilvar_pd_256_2: 4057*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4058*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,2,3] 4059*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4060*9880d681SAndroid Build Coastguard Worker; 4061*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vpermilvar_pd_256_2: 4062*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4063*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpermilpd {{.*#+}} ymm0 = ymm0[1,0,2,3] 4064*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4065*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> %a0, <4 x i64> <i64 2, i64 0, i64 0, i64 2>) ; <<4 x double>> [#uses=1] 4066*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 4067*9880d681SAndroid Build Coastguard Worker} 4068*9880d681SAndroid Build Coastguard Worker 4069*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx_vpermilvar_ps(<4 x float> %a0, <4 x i32> %a1) { 4070*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vpermilvar_ps: 4071*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4072*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpermilps %xmm1, %xmm0, %xmm0 4073*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4074*9880d681SAndroid Build Coastguard Worker; 4075*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vpermilvar_ps: 4076*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4077*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpermilps %xmm1, %xmm0, %xmm0 4078*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4079*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> %a0, <4 x i32> %a1) ; <<4 x float>> [#uses=1] 4080*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 4081*9880d681SAndroid Build Coastguard Worker} 4082*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx_vpermilvar_ps_load(<4 x float> %a0, <4 x i32>* %a1) { 4083*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vpermilvar_ps_load: 4084*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4085*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 4086*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpermilps (%eax), %xmm0, %xmm0 4087*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4088*9880d681SAndroid Build Coastguard Worker; 4089*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vpermilvar_ps_load: 4090*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4091*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 4092*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpermilps (%eax), %xmm0, %xmm0 4093*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4094*9880d681SAndroid Build Coastguard Worker %a2 = load <4 x i32>, <4 x i32>* %a1 4095*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> %a0, <4 x i32> %a2) ; <<4 x float>> [#uses=1] 4096*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 4097*9880d681SAndroid Build Coastguard Worker} 4098*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float>, <4 x i32>) nounwind readnone 4099*9880d681SAndroid Build Coastguard Worker 4100*9880d681SAndroid Build Coastguard Worker 4101*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx_vpermilvar_ps_256(<8 x float> %a0, <8 x i32> %a1) { 4102*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vpermilvar_ps_256: 4103*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4104*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpermilps %ymm1, %ymm0, %ymm0 4105*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4106*9880d681SAndroid Build Coastguard Worker; 4107*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vpermilvar_ps_256: 4108*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4109*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpermilps %ymm1, %ymm0, %ymm0 4110*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4111*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float> %a0, <8 x i32> %a1) ; <<8 x float>> [#uses=1] 4112*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 4113*9880d681SAndroid Build Coastguard Worker} 4114*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float>, <8 x i32>) nounwind readnone 4115*9880d681SAndroid Build Coastguard Worker 4116*9880d681SAndroid Build Coastguard Worker 4117*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestc_pd(<2 x double> %a0, <2 x double> %a1) { 4118*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestc_pd: 4119*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4120*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vtestpd %xmm1, %xmm0 4121*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sbbl %eax, %eax 4122*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: andl $1, %eax 4123*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4124*9880d681SAndroid Build Coastguard Worker; 4125*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestc_pd: 4126*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4127*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vtestpd %xmm1, %xmm0 4128*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sbbl %eax, %eax 4129*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: andl $1, %eax 4130*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4131*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.vtestc.pd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 4132*9880d681SAndroid Build Coastguard Worker ret i32 %res 4133*9880d681SAndroid Build Coastguard Worker} 4134*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.pd(<2 x double>, <2 x double>) nounwind readnone 4135*9880d681SAndroid Build Coastguard Worker 4136*9880d681SAndroid Build Coastguard Worker 4137*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestc_pd_256(<4 x double> %a0, <4 x double> %a1) { 4138*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestc_pd_256: 4139*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4140*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vtestpd %ymm1, %ymm0 4141*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sbbl %eax, %eax 4142*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: andl $1, %eax 4143*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 4144*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4145*9880d681SAndroid Build Coastguard Worker; 4146*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestc_pd_256: 4147*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4148*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vtestpd %ymm1, %ymm0 4149*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sbbl %eax, %eax 4150*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: andl $1, %eax 4151*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4152*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.vtestc.pd.256(<4 x double> %a0, <4 x double> %a1) ; <i32> [#uses=1] 4153*9880d681SAndroid Build Coastguard Worker ret i32 %res 4154*9880d681SAndroid Build Coastguard Worker} 4155*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.pd.256(<4 x double>, <4 x double>) nounwind readnone 4156*9880d681SAndroid Build Coastguard Worker 4157*9880d681SAndroid Build Coastguard Worker 4158*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestc_ps(<4 x float> %a0, <4 x float> %a1) { 4159*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestc_ps: 4160*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4161*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vtestps %xmm1, %xmm0 4162*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sbbl %eax, %eax 4163*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: andl $1, %eax 4164*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4165*9880d681SAndroid Build Coastguard Worker; 4166*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestc_ps: 4167*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4168*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vtestps %xmm1, %xmm0 4169*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sbbl %eax, %eax 4170*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: andl $1, %eax 4171*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4172*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.vtestc.ps(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 4173*9880d681SAndroid Build Coastguard Worker ret i32 %res 4174*9880d681SAndroid Build Coastguard Worker} 4175*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.ps(<4 x float>, <4 x float>) nounwind readnone 4176*9880d681SAndroid Build Coastguard Worker 4177*9880d681SAndroid Build Coastguard Worker 4178*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestc_ps_256(<8 x float> %a0, <8 x float> %a1) { 4179*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestc_ps_256: 4180*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4181*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vtestps %ymm1, %ymm0 4182*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sbbl %eax, %eax 4183*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: andl $1, %eax 4184*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 4185*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4186*9880d681SAndroid Build Coastguard Worker; 4187*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestc_ps_256: 4188*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4189*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vtestps %ymm1, %ymm0 4190*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sbbl %eax, %eax 4191*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: andl $1, %eax 4192*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4193*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.vtestc.ps.256(<8 x float> %a0, <8 x float> %a1) ; <i32> [#uses=1] 4194*9880d681SAndroid Build Coastguard Worker ret i32 %res 4195*9880d681SAndroid Build Coastguard Worker} 4196*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestc.ps.256(<8 x float>, <8 x float>) nounwind readnone 4197*9880d681SAndroid Build Coastguard Worker 4198*9880d681SAndroid Build Coastguard Worker 4199*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestnzc_pd(<2 x double> %a0, <2 x double> %a1) { 4200*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestnzc_pd: 4201*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4202*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 4203*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vtestpd %xmm1, %xmm0 4204*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 4205*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4206*9880d681SAndroid Build Coastguard Worker; 4207*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestnzc_pd: 4208*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4209*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 4210*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vtestpd %xmm1, %xmm0 4211*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 4212*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4213*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.vtestnzc.pd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 4214*9880d681SAndroid Build Coastguard Worker ret i32 %res 4215*9880d681SAndroid Build Coastguard Worker} 4216*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestnzc.pd(<2 x double>, <2 x double>) nounwind readnone 4217*9880d681SAndroid Build Coastguard Worker 4218*9880d681SAndroid Build Coastguard Worker 4219*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestnzc_pd_256(<4 x double> %a0, <4 x double> %a1) { 4220*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestnzc_pd_256: 4221*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4222*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 4223*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vtestpd %ymm1, %ymm0 4224*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 4225*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 4226*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4227*9880d681SAndroid Build Coastguard Worker; 4228*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestnzc_pd_256: 4229*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4230*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 4231*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vtestpd %ymm1, %ymm0 4232*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 4233*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4234*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.vtestnzc.pd.256(<4 x double> %a0, <4 x double> %a1) ; <i32> [#uses=1] 4235*9880d681SAndroid Build Coastguard Worker ret i32 %res 4236*9880d681SAndroid Build Coastguard Worker} 4237*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestnzc.pd.256(<4 x double>, <4 x double>) nounwind readnone 4238*9880d681SAndroid Build Coastguard Worker 4239*9880d681SAndroid Build Coastguard Worker 4240*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestnzc_ps(<4 x float> %a0, <4 x float> %a1) { 4241*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestnzc_ps: 4242*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4243*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 4244*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vtestps %xmm1, %xmm0 4245*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 4246*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4247*9880d681SAndroid Build Coastguard Worker; 4248*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestnzc_ps: 4249*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4250*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 4251*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vtestps %xmm1, %xmm0 4252*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 4253*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4254*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.vtestnzc.ps(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 4255*9880d681SAndroid Build Coastguard Worker ret i32 %res 4256*9880d681SAndroid Build Coastguard Worker} 4257*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestnzc.ps(<4 x float>, <4 x float>) nounwind readnone 4258*9880d681SAndroid Build Coastguard Worker 4259*9880d681SAndroid Build Coastguard Worker 4260*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestnzc_ps_256(<8 x float> %a0, <8 x float> %a1) { 4261*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestnzc_ps_256: 4262*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4263*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 4264*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vtestps %ymm1, %ymm0 4265*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: seta %al 4266*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 4267*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4268*9880d681SAndroid Build Coastguard Worker; 4269*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestnzc_ps_256: 4270*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4271*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 4272*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vtestps %ymm1, %ymm0 4273*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: seta %al 4274*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4275*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.vtestnzc.ps.256(<8 x float> %a0, <8 x float> %a1) ; <i32> [#uses=1] 4276*9880d681SAndroid Build Coastguard Worker ret i32 %res 4277*9880d681SAndroid Build Coastguard Worker} 4278*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestnzc.ps.256(<8 x float>, <8 x float>) nounwind readnone 4279*9880d681SAndroid Build Coastguard Worker 4280*9880d681SAndroid Build Coastguard Worker 4281*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestz_pd(<2 x double> %a0, <2 x double> %a1) { 4282*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestz_pd: 4283*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4284*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 4285*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vtestpd %xmm1, %xmm0 4286*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sete %al 4287*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4288*9880d681SAndroid Build Coastguard Worker; 4289*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestz_pd: 4290*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4291*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 4292*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vtestpd %xmm1, %xmm0 4293*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sete %al 4294*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4295*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.vtestz.pd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1] 4296*9880d681SAndroid Build Coastguard Worker ret i32 %res 4297*9880d681SAndroid Build Coastguard Worker} 4298*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestz.pd(<2 x double>, <2 x double>) nounwind readnone 4299*9880d681SAndroid Build Coastguard Worker 4300*9880d681SAndroid Build Coastguard Worker 4301*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestz_pd_256(<4 x double> %a0, <4 x double> %a1) { 4302*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestz_pd_256: 4303*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4304*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 4305*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vtestpd %ymm1, %ymm0 4306*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sete %al 4307*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 4308*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4309*9880d681SAndroid Build Coastguard Worker; 4310*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestz_pd_256: 4311*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4312*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 4313*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vtestpd %ymm1, %ymm0 4314*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sete %al 4315*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4316*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.vtestz.pd.256(<4 x double> %a0, <4 x double> %a1) ; <i32> [#uses=1] 4317*9880d681SAndroid Build Coastguard Worker ret i32 %res 4318*9880d681SAndroid Build Coastguard Worker} 4319*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestz.pd.256(<4 x double>, <4 x double>) nounwind readnone 4320*9880d681SAndroid Build Coastguard Worker 4321*9880d681SAndroid Build Coastguard Worker 4322*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestz_ps(<4 x float> %a0, <4 x float> %a1) { 4323*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestz_ps: 4324*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4325*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 4326*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vtestps %xmm1, %xmm0 4327*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sete %al 4328*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4329*9880d681SAndroid Build Coastguard Worker; 4330*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestz_ps: 4331*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4332*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 4333*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vtestps %xmm1, %xmm0 4334*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sete %al 4335*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4336*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.vtestz.ps(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1] 4337*9880d681SAndroid Build Coastguard Worker ret i32 %res 4338*9880d681SAndroid Build Coastguard Worker} 4339*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestz.ps(<4 x float>, <4 x float>) nounwind readnone 4340*9880d681SAndroid Build Coastguard Worker 4341*9880d681SAndroid Build Coastguard Worker 4342*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx_vtestz_ps_256(<8 x float> %a0, <8 x float> %a1) { 4343*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vtestz_ps_256: 4344*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4345*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: xorl %eax, %eax 4346*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vtestps %ymm1, %ymm0 4347*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sete %al 4348*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 4349*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4350*9880d681SAndroid Build Coastguard Worker; 4351*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vtestz_ps_256: 4352*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4353*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: xorl %eax, %eax 4354*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vtestps %ymm1, %ymm0 4355*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sete %al 4356*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4357*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx.vtestz.ps.256(<8 x float> %a0, <8 x float> %a1) ; <i32> [#uses=1] 4358*9880d681SAndroid Build Coastguard Worker ret i32 %res 4359*9880d681SAndroid Build Coastguard Worker} 4360*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx.vtestz.ps.256(<8 x float>, <8 x float>) nounwind readnone 4361*9880d681SAndroid Build Coastguard Worker 4362*9880d681SAndroid Build Coastguard Worker 4363*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_vzeroall() { 4364*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vzeroall: 4365*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4366*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroall 4367*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4368*9880d681SAndroid Build Coastguard Worker; 4369*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vzeroall: 4370*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4371*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vzeroall 4372*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4373*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx.vzeroall() 4374*9880d681SAndroid Build Coastguard Worker ret void 4375*9880d681SAndroid Build Coastguard Worker} 4376*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.vzeroall() nounwind 4377*9880d681SAndroid Build Coastguard Worker 4378*9880d681SAndroid Build Coastguard Worker 4379*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx_vzeroupper() { 4380*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_avx_vzeroupper: 4381*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4382*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 4383*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4384*9880d681SAndroid Build Coastguard Worker; 4385*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx_vzeroupper: 4386*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4387*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vzeroupper 4388*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4389*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx.vzeroupper() 4390*9880d681SAndroid Build Coastguard Worker ret void 4391*9880d681SAndroid Build Coastguard Worker} 4392*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.vzeroupper() nounwind 4393*9880d681SAndroid Build Coastguard Worker 4394*9880d681SAndroid Build Coastguard Worker; Make sure instructions with no AVX equivalents, but are associated with SSEX feature flags still work 4395*9880d681SAndroid Build Coastguard Worker 4396*9880d681SAndroid Build Coastguard Workerdefine void @monitor(i8* %P, i32 %E, i32 %H) nounwind { 4397*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: monitor: 4398*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4399*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %edx 4400*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx 4401*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 4402*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: leal (%eax), %eax 4403*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: monitor 4404*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4405*9880d681SAndroid Build Coastguard Worker; 4406*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: monitor: 4407*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4408*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %edx 4409*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %ecx 4410*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 4411*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: leal (%eax), %eax 4412*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: monitor 4413*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4414*9880d681SAndroid Build Coastguard Worker tail call void @llvm.x86.sse3.monitor(i8* %P, i32 %E, i32 %H) 4415*9880d681SAndroid Build Coastguard Worker ret void 4416*9880d681SAndroid Build Coastguard Worker} 4417*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse3.monitor(i8*, i32, i32) nounwind 4418*9880d681SAndroid Build Coastguard Worker 4419*9880d681SAndroid Build Coastguard Workerdefine void @mwait(i32 %E, i32 %H) nounwind { 4420*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: mwait: 4421*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4422*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %ecx 4423*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 4424*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: mwait 4425*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4426*9880d681SAndroid Build Coastguard Worker; 4427*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: mwait: 4428*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4429*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %ecx 4430*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 4431*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: mwait 4432*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4433*9880d681SAndroid Build Coastguard Worker tail call void @llvm.x86.sse3.mwait(i32 %E, i32 %H) 4434*9880d681SAndroid Build Coastguard Worker ret void 4435*9880d681SAndroid Build Coastguard Worker} 4436*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse3.mwait(i32, i32) nounwind 4437*9880d681SAndroid Build Coastguard Worker 4438*9880d681SAndroid Build Coastguard Workerdefine void @sfence() nounwind { 4439*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: sfence: 4440*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4441*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: sfence 4442*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4443*9880d681SAndroid Build Coastguard Worker; 4444*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: sfence: 4445*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4446*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: sfence 4447*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4448*9880d681SAndroid Build Coastguard Worker tail call void @llvm.x86.sse.sfence() 4449*9880d681SAndroid Build Coastguard Worker ret void 4450*9880d681SAndroid Build Coastguard Worker} 4451*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse.sfence() nounwind 4452*9880d681SAndroid Build Coastguard Worker 4453*9880d681SAndroid Build Coastguard Workerdefine void @lfence() nounwind { 4454*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: lfence: 4455*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4456*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: lfence 4457*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4458*9880d681SAndroid Build Coastguard Worker; 4459*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: lfence: 4460*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4461*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: lfence 4462*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4463*9880d681SAndroid Build Coastguard Worker tail call void @llvm.x86.sse2.lfence() 4464*9880d681SAndroid Build Coastguard Worker ret void 4465*9880d681SAndroid Build Coastguard Worker} 4466*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.lfence() nounwind 4467*9880d681SAndroid Build Coastguard Worker 4468*9880d681SAndroid Build Coastguard Workerdefine void @mfence() nounwind { 4469*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: mfence: 4470*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4471*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: mfence 4472*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4473*9880d681SAndroid Build Coastguard Worker; 4474*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: mfence: 4475*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4476*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: mfence 4477*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4478*9880d681SAndroid Build Coastguard Worker tail call void @llvm.x86.sse2.mfence() 4479*9880d681SAndroid Build Coastguard Worker ret void 4480*9880d681SAndroid Build Coastguard Worker} 4481*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.mfence() nounwind 4482*9880d681SAndroid Build Coastguard Worker 4483*9880d681SAndroid Build Coastguard Workerdefine void @clflush(i8* %p) nounwind { 4484*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: clflush: 4485*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4486*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 4487*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: clflush (%eax) 4488*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4489*9880d681SAndroid Build Coastguard Worker; 4490*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: clflush: 4491*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4492*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 4493*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: clflush (%eax) 4494*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4495*9880d681SAndroid Build Coastguard Worker tail call void @llvm.x86.sse2.clflush(i8* %p) 4496*9880d681SAndroid Build Coastguard Worker ret void 4497*9880d681SAndroid Build Coastguard Worker} 4498*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse2.clflush(i8*) nounwind 4499*9880d681SAndroid Build Coastguard Worker 4500*9880d681SAndroid Build Coastguard Workerdefine i32 @crc32_32_8(i32 %a, i8 %b) nounwind { 4501*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: crc32_32_8: 4502*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4503*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 4504*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: crc32b {{[0-9]+}}(%esp), %eax 4505*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4506*9880d681SAndroid Build Coastguard Worker; 4507*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: crc32_32_8: 4508*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4509*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 4510*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: crc32b {{[0-9]+}}(%esp), %eax 4511*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4512*9880d681SAndroid Build Coastguard Worker %tmp = call i32 @llvm.x86.sse42.crc32.32.8(i32 %a, i8 %b) 4513*9880d681SAndroid Build Coastguard Worker ret i32 %tmp 4514*9880d681SAndroid Build Coastguard Worker} 4515*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.crc32.32.8(i32, i8) nounwind 4516*9880d681SAndroid Build Coastguard Worker 4517*9880d681SAndroid Build Coastguard Workerdefine i32 @crc32_32_16(i32 %a, i16 %b) nounwind { 4518*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: crc32_32_16: 4519*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4520*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 4521*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: crc32w {{[0-9]+}}(%esp), %eax 4522*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4523*9880d681SAndroid Build Coastguard Worker; 4524*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: crc32_32_16: 4525*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4526*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 4527*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: crc32w {{[0-9]+}}(%esp), %eax 4528*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4529*9880d681SAndroid Build Coastguard Worker %tmp = call i32 @llvm.x86.sse42.crc32.32.16(i32 %a, i16 %b) 4530*9880d681SAndroid Build Coastguard Worker ret i32 %tmp 4531*9880d681SAndroid Build Coastguard Worker} 4532*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.crc32.32.16(i32, i16) nounwind 4533*9880d681SAndroid Build Coastguard Worker 4534*9880d681SAndroid Build Coastguard Workerdefine i32 @crc32_32_32(i32 %a, i32 %b) nounwind { 4535*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: crc32_32_32: 4536*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4537*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 4538*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: crc32l {{[0-9]+}}(%esp), %eax 4539*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4540*9880d681SAndroid Build Coastguard Worker; 4541*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: crc32_32_32: 4542*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4543*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 4544*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: crc32l {{[0-9]+}}(%esp), %eax 4545*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4546*9880d681SAndroid Build Coastguard Worker %tmp = call i32 @llvm.x86.sse42.crc32.32.32(i32 %a, i32 %b) 4547*9880d681SAndroid Build Coastguard Worker ret i32 %tmp 4548*9880d681SAndroid Build Coastguard Worker} 4549*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse42.crc32.32.32(i32, i32) nounwind 4550*9880d681SAndroid Build Coastguard Worker 4551*9880d681SAndroid Build Coastguard Workerdefine void @movnt_dq(i8* %p, <2 x i64> %a1) nounwind { 4552*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: movnt_dq: 4553*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4554*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 4555*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpaddq LCPI254_0, %xmm0, %xmm0 4556*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmovntdq %ymm0, (%eax) 4557*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 4558*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4559*9880d681SAndroid Build Coastguard Worker; 4560*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: movnt_dq: 4561*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4562*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 4563*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpaddq LCPI254_0, %xmm0, %xmm0 4564*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovntdq %ymm0, (%eax) 4565*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4566*9880d681SAndroid Build Coastguard Worker %a2 = add <2 x i64> %a1, <i64 1, i64 1> 4567*9880d681SAndroid Build Coastguard Worker %a3 = shufflevector <2 x i64> %a2, <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef> 4568*9880d681SAndroid Build Coastguard Worker tail call void @llvm.x86.avx.movnt.dq.256(i8* %p, <4 x i64> %a3) nounwind 4569*9880d681SAndroid Build Coastguard Worker ret void 4570*9880d681SAndroid Build Coastguard Worker} 4571*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.movnt.dq.256(i8*, <4 x i64>) nounwind 4572*9880d681SAndroid Build Coastguard Worker 4573*9880d681SAndroid Build Coastguard Workerdefine void @movnt_ps(i8* %p, <8 x float> %a) nounwind { 4574*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: movnt_ps: 4575*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4576*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 4577*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmovntps %ymm0, (%eax) 4578*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 4579*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4580*9880d681SAndroid Build Coastguard Worker; 4581*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: movnt_ps: 4582*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4583*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 4584*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovntps %ymm0, (%eax) 4585*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4586*9880d681SAndroid Build Coastguard Worker tail call void @llvm.x86.avx.movnt.ps.256(i8* %p, <8 x float> %a) nounwind 4587*9880d681SAndroid Build Coastguard Worker ret void 4588*9880d681SAndroid Build Coastguard Worker} 4589*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.movnt.ps.256(i8*, <8 x float>) nounwind 4590*9880d681SAndroid Build Coastguard Worker 4591*9880d681SAndroid Build Coastguard Workerdefine void @movnt_pd(i8* %p, <4 x double> %a1) nounwind { 4592*9880d681SAndroid Build Coastguard Worker ; add operation forces the execution domain. 4593*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: movnt_pd: 4594*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4595*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: movl {{[0-9]+}}(%esp), %eax 4596*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vxorpd %ymm1, %ymm1, %ymm1 4597*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vaddpd %ymm1, %ymm0, %ymm0 4598*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vmovntpd %ymm0, (%eax) 4599*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vzeroupper 4600*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4601*9880d681SAndroid Build Coastguard Worker; 4602*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: movnt_pd: 4603*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4604*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 4605*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpxord %ymm1, %ymm1, %ymm1 4606*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vaddpd %ymm1, %ymm0, %ymm0 4607*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovntpd %ymm0, (%eax) 4608*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4609*9880d681SAndroid Build Coastguard Worker %a2 = fadd <4 x double> %a1, <double 0x0, double 0x0, double 0x0, double 0x0> 4610*9880d681SAndroid Build Coastguard Worker tail call void @llvm.x86.avx.movnt.pd.256(i8* %p, <4 x double> %a2) nounwind 4611*9880d681SAndroid Build Coastguard Worker ret void 4612*9880d681SAndroid Build Coastguard Worker} 4613*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx.movnt.pd.256(i8*, <4 x double>) nounwind 4614*9880d681SAndroid Build Coastguard Worker 4615*9880d681SAndroid Build Coastguard Worker 4616*9880d681SAndroid Build Coastguard Worker; Check for pclmulqdq 4617*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_pclmulqdq(<2 x i64> %a0, <2 x i64> %a1) { 4618*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_x86_pclmulqdq: 4619*9880d681SAndroid Build Coastguard Worker; AVX: ## BB#0: 4620*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: vpclmulqdq $0, %xmm1, %xmm0, %xmm0 4621*9880d681SAndroid Build Coastguard Worker; AVX-NEXT: retl 4622*9880d681SAndroid Build Coastguard Worker; 4623*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_pclmulqdq: 4624*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 4625*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpclmulqdq $0, %xmm1, %xmm0, %xmm0 4626*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 4627*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %a0, <2 x i64> %a1, i8 0) ; <<2 x i64>> [#uses=1] 4628*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 4629*9880d681SAndroid Build Coastguard Worker} 4630*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.pclmulqdq(<2 x i64>, <2 x i64>, i8) nounwind readnone 4631