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=avx2 | FileCheck %s --check-prefix=AVX2 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i686-apple-darwin -mattr=avx512vl | FileCheck %s --check-prefix=AVX512VL 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_packssdw(<8 x i32> %a0, <8 x i32> %a1) { 6*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_packssdw: 7*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 8*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpackssdw %ymm1, %ymm0, %ymm0 9*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 10*9880d681SAndroid Build Coastguard Worker; 11*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_packssdw: 12*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 13*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpackssdw %ymm1, %ymm0, %ymm0 14*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 15*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.packssdw(<8 x i32> %a0, <8 x i32> %a1) ; <<16 x i16>> [#uses=1] 16*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.packssdw(<8 x i32>, <8 x i32>) nounwind readnone 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_packsswb(<16 x i16> %a0, <16 x i16> %a1) { 22*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_packsswb: 23*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 24*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 25*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 26*9880d681SAndroid Build Coastguard Worker; 27*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_packsswb: 28*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 29*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpacksswb %ymm1, %ymm0, %ymm0 30*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 31*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.packsswb(<16 x i16> %a0, <16 x i16> %a1) ; <<32 x i8>> [#uses=1] 32*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.packsswb(<16 x i16>, <16 x i16>) nounwind readnone 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_packuswb(<16 x i16> %a0, <16 x i16> %a1) { 38*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_packuswb: 39*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 40*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpackuswb %ymm1, %ymm0, %ymm0 41*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 42*9880d681SAndroid Build Coastguard Worker; 43*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_packuswb: 44*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 45*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpackuswb %ymm1, %ymm0, %ymm0 46*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 47*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.packuswb(<16 x i16> %a0, <16 x i16> %a1) ; <<32 x i8>> [#uses=1] 48*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.packuswb(<16 x i16>, <16 x i16>) nounwind readnone 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_padds_b(<32 x i8> %a0, <32 x i8> %a1) { 54*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_padds_b: 55*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 56*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpaddsb %ymm1, %ymm0, %ymm0 57*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 58*9880d681SAndroid Build Coastguard Worker; 59*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_padds_b: 60*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 61*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpaddsb %ymm1, %ymm0, %ymm0 62*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 63*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.padds.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1] 64*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 65*9880d681SAndroid Build Coastguard Worker} 66*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.padds.b(<32 x i8>, <32 x i8>) nounwind readnone 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_padds_w(<16 x i16> %a0, <16 x i16> %a1) { 70*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_padds_w: 71*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 72*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpaddsw %ymm1, %ymm0, %ymm0 73*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 74*9880d681SAndroid Build Coastguard Worker; 75*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_padds_w: 76*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 77*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpaddsw %ymm1, %ymm0, %ymm0 78*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 79*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.padds.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 80*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 81*9880d681SAndroid Build Coastguard Worker} 82*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.padds.w(<16 x i16>, <16 x i16>) nounwind readnone 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_paddus_b(<32 x i8> %a0, <32 x i8> %a1) { 86*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_paddus_b: 87*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 88*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpaddusb %ymm1, %ymm0, %ymm0 89*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 90*9880d681SAndroid Build Coastguard Worker; 91*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_paddus_b: 92*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 93*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpaddusb %ymm1, %ymm0, %ymm0 94*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 95*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.paddus.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1] 96*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 97*9880d681SAndroid Build Coastguard Worker} 98*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.paddus.b(<32 x i8>, <32 x i8>) nounwind readnone 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_paddus_w(<16 x i16> %a0, <16 x i16> %a1) { 102*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_paddus_w: 103*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 104*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpaddusw %ymm1, %ymm0, %ymm0 105*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 106*9880d681SAndroid Build Coastguard Worker; 107*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_paddus_w: 108*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 109*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpaddusw %ymm1, %ymm0, %ymm0 110*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 111*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.paddus.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 112*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 113*9880d681SAndroid Build Coastguard Worker} 114*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.paddus.w(<16 x i16>, <16 x i16>) nounwind readnone 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_pavg_b(<32 x i8> %a0, <32 x i8> %a1) { 118*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pavg_b: 119*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 120*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpavgb %ymm1, %ymm0, %ymm0 121*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 122*9880d681SAndroid Build Coastguard Worker; 123*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pavg_b: 124*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 125*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpavgb %ymm1, %ymm0, %ymm0 126*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 127*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.pavg.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1] 128*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 129*9880d681SAndroid Build Coastguard Worker} 130*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pavg.b(<32 x i8>, <32 x i8>) nounwind readnone 131*9880d681SAndroid Build Coastguard Worker 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pavg_w(<16 x i16> %a0, <16 x i16> %a1) { 134*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pavg_w: 135*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 136*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpavgw %ymm1, %ymm0, %ymm0 137*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 138*9880d681SAndroid Build Coastguard Worker; 139*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pavg_w: 140*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 141*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpavgw %ymm1, %ymm0, %ymm0 142*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 143*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.pavg.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 144*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 145*9880d681SAndroid Build Coastguard Worker} 146*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pavg.w(<16 x i16>, <16 x i16>) nounwind readnone 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pmadd_wd(<16 x i16> %a0, <16 x i16> %a1) { 150*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmadd_wd: 151*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 152*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaddwd %ymm1, %ymm0, %ymm0 153*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 154*9880d681SAndroid Build Coastguard Worker; 155*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmadd_wd: 156*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 157*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaddwd %ymm1, %ymm0, %ymm0 158*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 159*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.pmadd.wd(<16 x i16> %a0, <16 x i16> %a1) ; <<8 x i32>> [#uses=1] 160*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 161*9880d681SAndroid Build Coastguard Worker} 162*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pmadd.wd(<16 x i16>, <16 x i16>) nounwind readnone 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Worker 165*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pmaxs_w(<16 x i16> %a0, <16 x i16> %a1) { 166*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmaxs_w: 167*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 168*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0 169*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 170*9880d681SAndroid Build Coastguard Worker; 171*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmaxs_w: 172*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 173*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0 174*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 175*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.pmaxs.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 176*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 177*9880d681SAndroid Build Coastguard Worker} 178*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pmaxs.w(<16 x i16>, <16 x i16>) nounwind readnone 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Worker 181*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_pmaxu_b(<32 x i8> %a0, <32 x i8> %a1) { 182*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmaxu_b: 183*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 184*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaxub %ymm1, %ymm0, %ymm0 185*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 186*9880d681SAndroid Build Coastguard Worker; 187*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmaxu_b: 188*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 189*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaxub %ymm1, %ymm0, %ymm0 190*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 191*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.pmaxu.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1] 192*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 193*9880d681SAndroid Build Coastguard Worker} 194*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pmaxu.b(<32 x i8>, <32 x i8>) nounwind readnone 195*9880d681SAndroid Build Coastguard Worker 196*9880d681SAndroid Build Coastguard Worker 197*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pmins_w(<16 x i16> %a0, <16 x i16> %a1) { 198*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmins_w: 199*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 200*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpminsw %ymm1, %ymm0, %ymm0 201*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 202*9880d681SAndroid Build Coastguard Worker; 203*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmins_w: 204*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 205*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpminsw %ymm1, %ymm0, %ymm0 206*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 207*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.pmins.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 208*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 209*9880d681SAndroid Build Coastguard Worker} 210*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pmins.w(<16 x i16>, <16 x i16>) nounwind readnone 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Worker 213*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_pminu_b(<32 x i8> %a0, <32 x i8> %a1) { 214*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pminu_b: 215*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 216*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpminub %ymm1, %ymm0, %ymm0 217*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 218*9880d681SAndroid Build Coastguard Worker; 219*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pminu_b: 220*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 221*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpminub %ymm1, %ymm0, %ymm0 222*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 223*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.pminu.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1] 224*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 225*9880d681SAndroid Build Coastguard Worker} 226*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pminu.b(<32 x i8>, <32 x i8>) nounwind readnone 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Workerdefine i32 @test_x86_avx2_pmovmskb(<32 x i8> %a0) { 230*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmovmskb: 231*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 232*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmovmskb %ymm0, %eax 233*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vzeroupper 234*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 235*9880d681SAndroid Build Coastguard Worker; 236*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmovmskb: 237*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 238*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmovmskb %ymm0, %eax 239*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 240*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx2.pmovmskb(<32 x i8> %a0) ; <i32> [#uses=1] 241*9880d681SAndroid Build Coastguard Worker ret i32 %res 242*9880d681SAndroid Build Coastguard Worker} 243*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx2.pmovmskb(<32 x i8>) nounwind readnone 244*9880d681SAndroid Build Coastguard Worker 245*9880d681SAndroid Build Coastguard Worker 246*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pmulh_w(<16 x i16> %a0, <16 x i16> %a1) { 247*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmulh_w: 248*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 249*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmulhw %ymm1, %ymm0, %ymm0 250*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 251*9880d681SAndroid Build Coastguard Worker; 252*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmulh_w: 253*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 254*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmulhw %ymm1, %ymm0, %ymm0 255*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 256*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.pmulh.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 257*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 258*9880d681SAndroid Build Coastguard Worker} 259*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pmulh.w(<16 x i16>, <16 x i16>) nounwind readnone 260*9880d681SAndroid Build Coastguard Worker 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pmulhu_w(<16 x i16> %a0, <16 x i16> %a1) { 263*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmulhu_w: 264*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 265*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmulhuw %ymm1, %ymm0, %ymm0 266*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 267*9880d681SAndroid Build Coastguard Worker; 268*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmulhu_w: 269*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 270*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmulhuw %ymm1, %ymm0, %ymm0 271*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 272*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.pmulhu.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 273*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 274*9880d681SAndroid Build Coastguard Worker} 275*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pmulhu.w(<16 x i16>, <16 x i16>) nounwind readnone 276*9880d681SAndroid Build Coastguard Worker 277*9880d681SAndroid Build Coastguard Worker 278*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_pmulu_dq(<8 x i32> %a0, <8 x i32> %a1) { 279*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmulu_dq: 280*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 281*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmuludq %ymm1, %ymm0, %ymm0 282*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 283*9880d681SAndroid Build Coastguard Worker; 284*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmulu_dq: 285*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 286*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmuludq %ymm1, %ymm0, %ymm0 287*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 288*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.pmulu.dq(<8 x i32> %a0, <8 x i32> %a1) ; <<4 x i64>> [#uses=1] 289*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 290*9880d681SAndroid Build Coastguard Worker} 291*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.pmulu.dq(<8 x i32>, <8 x i32>) nounwind readnone 292*9880d681SAndroid Build Coastguard Worker 293*9880d681SAndroid Build Coastguard Worker 294*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_psad_bw(<32 x i8> %a0, <32 x i8> %a1) { 295*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psad_bw: 296*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 297*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsadbw %ymm1, %ymm0, %ymm0 298*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 299*9880d681SAndroid Build Coastguard Worker; 300*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psad_bw: 301*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 302*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsadbw %ymm1, %ymm0, %ymm0 303*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 304*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.psad.bw(<32 x i8> %a0, <32 x i8> %a1) ; <<4 x i64>> [#uses=1] 305*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 306*9880d681SAndroid Build Coastguard Worker} 307*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.psad.bw(<32 x i8>, <32 x i8>) nounwind readnone 308*9880d681SAndroid Build Coastguard Worker 309*9880d681SAndroid Build Coastguard Worker 310*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_psll_d(<8 x i32> %a0, <4 x i32> %a1) { 311*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psll_d: 312*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 313*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpslld %xmm1, %ymm0, %ymm0 314*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 315*9880d681SAndroid Build Coastguard Worker; 316*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psll_d: 317*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 318*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpslld %xmm1, %ymm0, %ymm0 319*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 320*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.psll.d(<8 x i32> %a0, <4 x i32> %a1) ; <<8 x i32>> [#uses=1] 321*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 322*9880d681SAndroid Build Coastguard Worker} 323*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.psll.d(<8 x i32>, <4 x i32>) nounwind readnone 324*9880d681SAndroid Build Coastguard Worker 325*9880d681SAndroid Build Coastguard Worker 326*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_psll_q(<4 x i64> %a0, <2 x i64> %a1) { 327*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psll_q: 328*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 329*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllq %xmm1, %ymm0, %ymm0 330*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 331*9880d681SAndroid Build Coastguard Worker; 332*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psll_q: 333*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 334*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsllq %xmm1, %ymm0, %ymm0 335*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 336*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.psll.q(<4 x i64> %a0, <2 x i64> %a1) ; <<4 x i64>> [#uses=1] 337*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 338*9880d681SAndroid Build Coastguard Worker} 339*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.psll.q(<4 x i64>, <2 x i64>) nounwind readnone 340*9880d681SAndroid Build Coastguard Worker 341*9880d681SAndroid Build Coastguard Worker 342*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_psll_w(<16 x i16> %a0, <8 x i16> %a1) { 343*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psll_w: 344*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 345*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllw %xmm1, %ymm0, %ymm0 346*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 347*9880d681SAndroid Build Coastguard Worker; 348*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psll_w: 349*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 350*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsllw %xmm1, %ymm0, %ymm0 351*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 352*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.psll.w(<16 x i16> %a0, <8 x i16> %a1) ; <<16 x i16>> [#uses=1] 353*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 354*9880d681SAndroid Build Coastguard Worker} 355*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.psll.w(<16 x i16>, <8 x i16>) nounwind readnone 356*9880d681SAndroid Build Coastguard Worker 357*9880d681SAndroid Build Coastguard Worker 358*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pslli_d(<8 x i32> %a0) { 359*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pslli_d: 360*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 361*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpslld $7, %ymm0, %ymm0 362*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 363*9880d681SAndroid Build Coastguard Worker; 364*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pslli_d: 365*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 366*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpslld $7, %ymm0, %ymm0 367*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 368*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.pslli.d(<8 x i32> %a0, i32 7) ; <<8 x i32>> [#uses=1] 369*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 370*9880d681SAndroid Build Coastguard Worker} 371*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pslli.d(<8 x i32>, i32) nounwind readnone 372*9880d681SAndroid Build Coastguard Worker 373*9880d681SAndroid Build Coastguard Worker 374*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_pslli_q(<4 x i64> %a0) { 375*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pslli_q: 376*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 377*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllq $7, %ymm0, %ymm0 378*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 379*9880d681SAndroid Build Coastguard Worker; 380*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pslli_q: 381*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 382*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsllq $7, %ymm0, %ymm0 383*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 384*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.pslli.q(<4 x i64> %a0, i32 7) ; <<4 x i64>> [#uses=1] 385*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 386*9880d681SAndroid Build Coastguard Worker} 387*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.pslli.q(<4 x i64>, i32) nounwind readnone 388*9880d681SAndroid Build Coastguard Worker 389*9880d681SAndroid Build Coastguard Worker 390*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pslli_w(<16 x i16> %a0) { 391*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pslli_w: 392*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 393*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllw $7, %ymm0, %ymm0 394*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 395*9880d681SAndroid Build Coastguard Worker; 396*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pslli_w: 397*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 398*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsllw $7, %ymm0, %ymm0 399*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 400*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.pslli.w(<16 x i16> %a0, i32 7) ; <<16 x i16>> [#uses=1] 401*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 402*9880d681SAndroid Build Coastguard Worker} 403*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pslli.w(<16 x i16>, i32) nounwind readnone 404*9880d681SAndroid Build Coastguard Worker 405*9880d681SAndroid Build Coastguard Worker 406*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_psra_d(<8 x i32> %a0, <4 x i32> %a1) { 407*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psra_d: 408*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 409*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrad %xmm1, %ymm0, %ymm0 410*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 411*9880d681SAndroid Build Coastguard Worker; 412*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psra_d: 413*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 414*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrad %xmm1, %ymm0, %ymm0 415*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 416*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.psra.d(<8 x i32> %a0, <4 x i32> %a1) ; <<8 x i32>> [#uses=1] 417*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 418*9880d681SAndroid Build Coastguard Worker} 419*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.psra.d(<8 x i32>, <4 x i32>) nounwind readnone 420*9880d681SAndroid Build Coastguard Worker 421*9880d681SAndroid Build Coastguard Worker 422*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_psra_w(<16 x i16> %a0, <8 x i16> %a1) { 423*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psra_w: 424*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 425*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsraw %xmm1, %ymm0, %ymm0 426*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 427*9880d681SAndroid Build Coastguard Worker; 428*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psra_w: 429*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 430*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsraw %xmm1, %ymm0, %ymm0 431*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 432*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.psra.w(<16 x i16> %a0, <8 x i16> %a1) ; <<16 x i16>> [#uses=1] 433*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 434*9880d681SAndroid Build Coastguard Worker} 435*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.psra.w(<16 x i16>, <8 x i16>) nounwind readnone 436*9880d681SAndroid Build Coastguard Worker 437*9880d681SAndroid Build Coastguard Worker 438*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_psrai_d(<8 x i32> %a0) { 439*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrai_d: 440*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 441*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrad $7, %ymm0, %ymm0 442*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 443*9880d681SAndroid Build Coastguard Worker; 444*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrai_d: 445*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 446*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrad $7, %ymm0, %ymm0 447*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 448*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.psrai.d(<8 x i32> %a0, i32 7) ; <<8 x i32>> [#uses=1] 449*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 450*9880d681SAndroid Build Coastguard Worker} 451*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.psrai.d(<8 x i32>, i32) nounwind readnone 452*9880d681SAndroid Build Coastguard Worker 453*9880d681SAndroid Build Coastguard Worker 454*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_psrai_w(<16 x i16> %a0) { 455*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrai_w: 456*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 457*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsraw $7, %ymm0, %ymm0 458*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 459*9880d681SAndroid Build Coastguard Worker; 460*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrai_w: 461*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 462*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsraw $7, %ymm0, %ymm0 463*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 464*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.psrai.w(<16 x i16> %a0, i32 7) ; <<16 x i16>> [#uses=1] 465*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 466*9880d681SAndroid Build Coastguard Worker} 467*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.psrai.w(<16 x i16>, i32) nounwind readnone 468*9880d681SAndroid Build Coastguard Worker 469*9880d681SAndroid Build Coastguard Worker 470*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_psrl_d(<8 x i32> %a0, <4 x i32> %a1) { 471*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrl_d: 472*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 473*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrld %xmm1, %ymm0, %ymm0 474*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 475*9880d681SAndroid Build Coastguard Worker; 476*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrl_d: 477*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 478*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrld %xmm1, %ymm0, %ymm0 479*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 480*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.psrl.d(<8 x i32> %a0, <4 x i32> %a1) ; <<8 x i32>> [#uses=1] 481*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 482*9880d681SAndroid Build Coastguard Worker} 483*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.psrl.d(<8 x i32>, <4 x i32>) nounwind readnone 484*9880d681SAndroid Build Coastguard Worker 485*9880d681SAndroid Build Coastguard Worker 486*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_psrl_q(<4 x i64> %a0, <2 x i64> %a1) { 487*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrl_q: 488*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 489*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrlq %xmm1, %ymm0, %ymm0 490*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 491*9880d681SAndroid Build Coastguard Worker; 492*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrl_q: 493*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 494*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrlq %xmm1, %ymm0, %ymm0 495*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 496*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.psrl.q(<4 x i64> %a0, <2 x i64> %a1) ; <<4 x i64>> [#uses=1] 497*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 498*9880d681SAndroid Build Coastguard Worker} 499*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.psrl.q(<4 x i64>, <2 x i64>) nounwind readnone 500*9880d681SAndroid Build Coastguard Worker 501*9880d681SAndroid Build Coastguard Worker 502*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_psrl_w(<16 x i16> %a0, <8 x i16> %a1) { 503*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrl_w: 504*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 505*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrlw %xmm1, %ymm0, %ymm0 506*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 507*9880d681SAndroid Build Coastguard Worker; 508*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrl_w: 509*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 510*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrlw %xmm1, %ymm0, %ymm0 511*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 512*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.psrl.w(<16 x i16> %a0, <8 x i16> %a1) ; <<16 x i16>> [#uses=1] 513*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 514*9880d681SAndroid Build Coastguard Worker} 515*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.psrl.w(<16 x i16>, <8 x i16>) nounwind readnone 516*9880d681SAndroid Build Coastguard Worker 517*9880d681SAndroid Build Coastguard Worker 518*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_psrli_d(<8 x i32> %a0) { 519*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrli_d: 520*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 521*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrld $7, %ymm0, %ymm0 522*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 523*9880d681SAndroid Build Coastguard Worker; 524*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrli_d: 525*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 526*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrld $7, %ymm0, %ymm0 527*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 528*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.psrli.d(<8 x i32> %a0, i32 7) ; <<8 x i32>> [#uses=1] 529*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 530*9880d681SAndroid Build Coastguard Worker} 531*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.psrli.d(<8 x i32>, i32) nounwind readnone 532*9880d681SAndroid Build Coastguard Worker 533*9880d681SAndroid Build Coastguard Worker 534*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_psrli_q(<4 x i64> %a0) { 535*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrli_q: 536*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 537*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrlq $7, %ymm0, %ymm0 538*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 539*9880d681SAndroid Build Coastguard Worker; 540*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrli_q: 541*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 542*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrlq $7, %ymm0, %ymm0 543*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 544*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.psrli.q(<4 x i64> %a0, i32 7) ; <<4 x i64>> [#uses=1] 545*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 546*9880d681SAndroid Build Coastguard Worker} 547*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.psrli.q(<4 x i64>, i32) nounwind readnone 548*9880d681SAndroid Build Coastguard Worker 549*9880d681SAndroid Build Coastguard Worker 550*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_psrli_w(<16 x i16> %a0) { 551*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrli_w: 552*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 553*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrlw $7, %ymm0, %ymm0 554*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 555*9880d681SAndroid Build Coastguard Worker; 556*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrli_w: 557*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 558*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrlw $7, %ymm0, %ymm0 559*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 560*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.psrli.w(<16 x i16> %a0, i32 7) ; <<16 x i16>> [#uses=1] 561*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 562*9880d681SAndroid Build Coastguard Worker} 563*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.psrli.w(<16 x i16>, i32) nounwind readnone 564*9880d681SAndroid Build Coastguard Worker 565*9880d681SAndroid Build Coastguard Worker 566*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_psubs_b(<32 x i8> %a0, <32 x i8> %a1) { 567*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psubs_b: 568*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 569*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsubsb %ymm1, %ymm0, %ymm0 570*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 571*9880d681SAndroid Build Coastguard Worker; 572*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psubs_b: 573*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 574*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsubsb %ymm1, %ymm0, %ymm0 575*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 576*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.psubs.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1] 577*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 578*9880d681SAndroid Build Coastguard Worker} 579*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.psubs.b(<32 x i8>, <32 x i8>) nounwind readnone 580*9880d681SAndroid Build Coastguard Worker 581*9880d681SAndroid Build Coastguard Worker 582*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_psubs_w(<16 x i16> %a0, <16 x i16> %a1) { 583*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psubs_w: 584*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 585*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsubsw %ymm1, %ymm0, %ymm0 586*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 587*9880d681SAndroid Build Coastguard Worker; 588*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psubs_w: 589*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 590*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsubsw %ymm1, %ymm0, %ymm0 591*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 592*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.psubs.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 593*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 594*9880d681SAndroid Build Coastguard Worker} 595*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.psubs.w(<16 x i16>, <16 x i16>) nounwind readnone 596*9880d681SAndroid Build Coastguard Worker 597*9880d681SAndroid Build Coastguard Worker 598*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_psubus_b(<32 x i8> %a0, <32 x i8> %a1) { 599*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psubus_b: 600*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 601*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsubusb %ymm1, %ymm0, %ymm0 602*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 603*9880d681SAndroid Build Coastguard Worker; 604*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psubus_b: 605*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 606*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsubusb %ymm1, %ymm0, %ymm0 607*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 608*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.psubus.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1] 609*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 610*9880d681SAndroid Build Coastguard Worker} 611*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.psubus.b(<32 x i8>, <32 x i8>) nounwind readnone 612*9880d681SAndroid Build Coastguard Worker 613*9880d681SAndroid Build Coastguard Worker 614*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_psubus_w(<16 x i16> %a0, <16 x i16> %a1) { 615*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psubus_w: 616*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 617*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsubusw %ymm1, %ymm0, %ymm0 618*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 619*9880d681SAndroid Build Coastguard Worker; 620*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psubus_w: 621*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 622*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsubusw %ymm1, %ymm0, %ymm0 623*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 624*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.psubus.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 625*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 626*9880d681SAndroid Build Coastguard Worker} 627*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.psubus.w(<16 x i16>, <16 x i16>) nounwind readnone 628*9880d681SAndroid Build Coastguard Worker 629*9880d681SAndroid Build Coastguard Worker 630*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_pabs_b(<32 x i8> %a0) { 631*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pabs_b: 632*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 633*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpabsb %ymm0, %ymm0 634*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 635*9880d681SAndroid Build Coastguard Worker; 636*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pabs_b: 637*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 638*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpabsb %ymm0, %ymm0 639*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 640*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.pabs.b(<32 x i8> %a0) ; <<32 x i8>> [#uses=1] 641*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 642*9880d681SAndroid Build Coastguard Worker} 643*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pabs.b(<32 x i8>) nounwind readnone 644*9880d681SAndroid Build Coastguard Worker 645*9880d681SAndroid Build Coastguard Worker 646*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pabs_d(<8 x i32> %a0) { 647*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pabs_d: 648*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 649*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpabsd %ymm0, %ymm0 650*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 651*9880d681SAndroid Build Coastguard Worker; 652*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pabs_d: 653*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 654*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpabsd %ymm0, %ymm0 655*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 656*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.pabs.d(<8 x i32> %a0) ; <<8 x i32>> [#uses=1] 657*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 658*9880d681SAndroid Build Coastguard Worker} 659*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pabs.d(<8 x i32>) nounwind readnone 660*9880d681SAndroid Build Coastguard Worker 661*9880d681SAndroid Build Coastguard Worker 662*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pabs_w(<16 x i16> %a0) { 663*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pabs_w: 664*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 665*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpabsw %ymm0, %ymm0 666*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 667*9880d681SAndroid Build Coastguard Worker; 668*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pabs_w: 669*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 670*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpabsw %ymm0, %ymm0 671*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 672*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.pabs.w(<16 x i16> %a0) ; <<16 x i16>> [#uses=1] 673*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 674*9880d681SAndroid Build Coastguard Worker} 675*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pabs.w(<16 x i16>) nounwind readnone 676*9880d681SAndroid Build Coastguard Worker 677*9880d681SAndroid Build Coastguard Worker 678*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_phadd_d(<8 x i32> %a0, <8 x i32> %a1) { 679*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_phadd_d: 680*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 681*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vphaddd %ymm1, %ymm0, %ymm0 682*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 683*9880d681SAndroid Build Coastguard Worker; 684*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_phadd_d: 685*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 686*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphaddd %ymm1, %ymm0, %ymm0 687*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 688*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.phadd.d(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1] 689*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 690*9880d681SAndroid Build Coastguard Worker} 691*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.phadd.d(<8 x i32>, <8 x i32>) nounwind readnone 692*9880d681SAndroid Build Coastguard Worker 693*9880d681SAndroid Build Coastguard Worker 694*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_phadd_sw(<16 x i16> %a0, <16 x i16> %a1) { 695*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_phadd_sw: 696*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 697*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vphaddsw %ymm1, %ymm0, %ymm0 698*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 699*9880d681SAndroid Build Coastguard Worker; 700*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_phadd_sw: 701*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 702*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphaddsw %ymm1, %ymm0, %ymm0 703*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 704*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.phadd.sw(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 705*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 706*9880d681SAndroid Build Coastguard Worker} 707*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.phadd.sw(<16 x i16>, <16 x i16>) nounwind readnone 708*9880d681SAndroid Build Coastguard Worker 709*9880d681SAndroid Build Coastguard Worker 710*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_phadd_w(<16 x i16> %a0, <16 x i16> %a1) { 711*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_phadd_w: 712*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 713*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vphaddw %ymm1, %ymm0, %ymm0 714*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 715*9880d681SAndroid Build Coastguard Worker; 716*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_phadd_w: 717*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 718*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphaddw %ymm1, %ymm0, %ymm0 719*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 720*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.phadd.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 721*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 722*9880d681SAndroid Build Coastguard Worker} 723*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.phadd.w(<16 x i16>, <16 x i16>) nounwind readnone 724*9880d681SAndroid Build Coastguard Worker 725*9880d681SAndroid Build Coastguard Worker 726*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_phsub_d(<8 x i32> %a0, <8 x i32> %a1) { 727*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_phsub_d: 728*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 729*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vphsubd %ymm1, %ymm0, %ymm0 730*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 731*9880d681SAndroid Build Coastguard Worker; 732*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_phsub_d: 733*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 734*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphsubd %ymm1, %ymm0, %ymm0 735*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 736*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.phsub.d(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1] 737*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 738*9880d681SAndroid Build Coastguard Worker} 739*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.phsub.d(<8 x i32>, <8 x i32>) nounwind readnone 740*9880d681SAndroid Build Coastguard Worker 741*9880d681SAndroid Build Coastguard Worker 742*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_phsub_sw(<16 x i16> %a0, <16 x i16> %a1) { 743*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_phsub_sw: 744*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 745*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vphsubsw %ymm1, %ymm0, %ymm0 746*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 747*9880d681SAndroid Build Coastguard Worker; 748*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_phsub_sw: 749*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 750*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphsubsw %ymm1, %ymm0, %ymm0 751*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 752*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.phsub.sw(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 753*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 754*9880d681SAndroid Build Coastguard Worker} 755*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.phsub.sw(<16 x i16>, <16 x i16>) nounwind readnone 756*9880d681SAndroid Build Coastguard Worker 757*9880d681SAndroid Build Coastguard Worker 758*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_phsub_w(<16 x i16> %a0, <16 x i16> %a1) { 759*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_phsub_w: 760*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 761*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vphsubw %ymm1, %ymm0, %ymm0 762*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 763*9880d681SAndroid Build Coastguard Worker; 764*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_phsub_w: 765*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 766*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vphsubw %ymm1, %ymm0, %ymm0 767*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 768*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.phsub.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 769*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 770*9880d681SAndroid Build Coastguard Worker} 771*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.phsub.w(<16 x i16>, <16 x i16>) nounwind readnone 772*9880d681SAndroid Build Coastguard Worker 773*9880d681SAndroid Build Coastguard Worker 774*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pmadd_ub_sw(<32 x i8> %a0, <32 x i8> %a1) { 775*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmadd_ub_sw: 776*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 777*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaddubsw %ymm1, %ymm0, %ymm0 778*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 779*9880d681SAndroid Build Coastguard Worker; 780*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmadd_ub_sw: 781*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 782*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaddubsw %ymm1, %ymm0, %ymm0 783*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 784*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.pmadd.ub.sw(<32 x i8> %a0, <32 x i8> %a1) ; <<16 x i16>> [#uses=1] 785*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 786*9880d681SAndroid Build Coastguard Worker} 787*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pmadd.ub.sw(<32 x i8>, <32 x i8>) nounwind readnone 788*9880d681SAndroid Build Coastguard Worker 789*9880d681SAndroid Build Coastguard Worker 790*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pmul_hr_sw(<16 x i16> %a0, <16 x i16> %a1) { 791*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmul_hr_sw: 792*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 793*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmulhrsw %ymm1, %ymm0, %ymm0 794*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 795*9880d681SAndroid Build Coastguard Worker; 796*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmul_hr_sw: 797*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 798*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmulhrsw %ymm1, %ymm0, %ymm0 799*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 800*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.pmul.hr.sw(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 801*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 802*9880d681SAndroid Build Coastguard Worker} 803*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pmul.hr.sw(<16 x i16>, <16 x i16>) nounwind readnone 804*9880d681SAndroid Build Coastguard Worker 805*9880d681SAndroid Build Coastguard Worker 806*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_pshuf_b(<32 x i8> %a0, <32 x i8> %a1) { 807*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pshuf_b: 808*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 809*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpshufb %ymm1, %ymm0, %ymm0 810*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 811*9880d681SAndroid Build Coastguard Worker; 812*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pshuf_b: 813*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 814*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpshufb %ymm1, %ymm0, %ymm0 815*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 816*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8> %a0, <32 x i8> %a1) ; <<16 x i8>> [#uses=1] 817*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 818*9880d681SAndroid Build Coastguard Worker} 819*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pshuf.b(<32 x i8>, <32 x i8>) nounwind readnone 820*9880d681SAndroid Build Coastguard Worker 821*9880d681SAndroid Build Coastguard Worker 822*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_psign_b(<32 x i8> %a0, <32 x i8> %a1) { 823*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psign_b: 824*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 825*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsignb %ymm1, %ymm0, %ymm0 826*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 827*9880d681SAndroid Build Coastguard Worker; 828*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psign_b: 829*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 830*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsignb %ymm1, %ymm0, %ymm0 831*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 832*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.psign.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1] 833*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 834*9880d681SAndroid Build Coastguard Worker} 835*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.psign.b(<32 x i8>, <32 x i8>) nounwind readnone 836*9880d681SAndroid Build Coastguard Worker 837*9880d681SAndroid Build Coastguard Worker 838*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_psign_d(<8 x i32> %a0, <8 x i32> %a1) { 839*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psign_d: 840*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 841*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsignd %ymm1, %ymm0, %ymm0 842*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 843*9880d681SAndroid Build Coastguard Worker; 844*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psign_d: 845*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 846*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsignd %ymm1, %ymm0, %ymm0 847*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 848*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.psign.d(<8 x i32> %a0, <8 x i32> %a1) ; <<4 x i32>> [#uses=1] 849*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 850*9880d681SAndroid Build Coastguard Worker} 851*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.psign.d(<8 x i32>, <8 x i32>) nounwind readnone 852*9880d681SAndroid Build Coastguard Worker 853*9880d681SAndroid Build Coastguard Worker 854*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_psign_w(<16 x i16> %a0, <16 x i16> %a1) { 855*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psign_w: 856*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 857*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsignw %ymm1, %ymm0, %ymm0 858*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 859*9880d681SAndroid Build Coastguard Worker; 860*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psign_w: 861*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 862*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsignw %ymm1, %ymm0, %ymm0 863*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 864*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.psign.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 865*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 866*9880d681SAndroid Build Coastguard Worker} 867*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.psign.w(<16 x i16>, <16 x i16>) nounwind readnone 868*9880d681SAndroid Build Coastguard Worker 869*9880d681SAndroid Build Coastguard Worker 870*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_movntdqa(i8* %a0) { 871*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_movntdqa: 872*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 873*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 874*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovntdqa (%eax), %ymm0 875*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 876*9880d681SAndroid Build Coastguard Worker; 877*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_movntdqa: 878*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 879*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 880*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovntdqa (%eax), %ymm0 881*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 882*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.movntdqa(i8* %a0) ; <<4 x i64>> [#uses=1] 883*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 884*9880d681SAndroid Build Coastguard Worker} 885*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.movntdqa(i8*) nounwind readonly 886*9880d681SAndroid Build Coastguard Worker 887*9880d681SAndroid Build Coastguard Worker 888*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_mpsadbw(<32 x i8> %a0, <32 x i8> %a1) { 889*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_mpsadbw: 890*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 891*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmpsadbw $7, %ymm1, %ymm0, %ymm0 892*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 893*9880d681SAndroid Build Coastguard Worker; 894*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_mpsadbw: 895*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 896*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmpsadbw $7, %ymm1, %ymm0, %ymm0 897*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 898*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.mpsadbw(<32 x i8> %a0, <32 x i8> %a1, i8 7) ; <<16 x i16>> [#uses=1] 899*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 900*9880d681SAndroid Build Coastguard Worker} 901*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.mpsadbw(<32 x i8>, <32 x i8>, i8) nounwind readnone 902*9880d681SAndroid Build Coastguard Worker 903*9880d681SAndroid Build Coastguard Worker 904*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_packusdw(<8 x i32> %a0, <8 x i32> %a1) { 905*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_packusdw: 906*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 907*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpackusdw %ymm1, %ymm0, %ymm0 908*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 909*9880d681SAndroid Build Coastguard Worker; 910*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_packusdw: 911*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 912*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpackusdw %ymm1, %ymm0, %ymm0 913*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 914*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.packusdw(<8 x i32> %a0, <8 x i32> %a1) ; <<16 x i16>> [#uses=1] 915*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 916*9880d681SAndroid Build Coastguard Worker} 917*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.packusdw(<8 x i32>, <8 x i32>) nounwind readnone 918*9880d681SAndroid Build Coastguard Worker 919*9880d681SAndroid Build Coastguard Worker 920*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_pblendvb(<32 x i8> %a0, <32 x i8> %a1, <32 x i8> %a2) { 921*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pblendvb: 922*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 923*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm0 924*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 925*9880d681SAndroid Build Coastguard Worker; 926*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pblendvb: 927*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 928*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpblendvb %ymm2, %ymm1, %ymm0, %ymm0 929*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 930*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.pblendvb(<32 x i8> %a0, <32 x i8> %a1, <32 x i8> %a2) ; <<32 x i8>> [#uses=1] 931*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 932*9880d681SAndroid Build Coastguard Worker} 933*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pblendvb(<32 x i8>, <32 x i8>, <32 x i8>) nounwind readnone 934*9880d681SAndroid Build Coastguard Worker 935*9880d681SAndroid Build Coastguard Worker 936*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pblendw(<16 x i16> %a0, <16 x i16> %a1) { 937*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pblendw: 938*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 939*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7],ymm1[8,9,10],ymm0[11,12,13,14,15] 940*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 941*9880d681SAndroid Build Coastguard Worker; 942*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pblendw: 943*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 944*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpblendw {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7],ymm1[8,9,10],ymm0[11,12,13,14,15] 945*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 946*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.pblendw(<16 x i16> %a0, <16 x i16> %a1, i8 7) ; <<16 x i16>> [#uses=1] 947*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 948*9880d681SAndroid Build Coastguard Worker} 949*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pblendw(<16 x i16>, <16 x i16>, i8) nounwind readnone 950*9880d681SAndroid Build Coastguard Worker 951*9880d681SAndroid Build Coastguard Worker 952*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_pmaxsb(<32 x i8> %a0, <32 x i8> %a1) { 953*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmaxsb: 954*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 955*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaxsb %ymm1, %ymm0, %ymm0 956*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 957*9880d681SAndroid Build Coastguard Worker; 958*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmaxsb: 959*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 960*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaxsb %ymm1, %ymm0, %ymm0 961*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 962*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.pmaxs.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1] 963*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 964*9880d681SAndroid Build Coastguard Worker} 965*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pmaxs.b(<32 x i8>, <32 x i8>) nounwind readnone 966*9880d681SAndroid Build Coastguard Worker 967*9880d681SAndroid Build Coastguard Worker 968*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pmaxsd(<8 x i32> %a0, <8 x i32> %a1) { 969*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmaxsd: 970*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 971*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaxsd %ymm1, %ymm0, %ymm0 972*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 973*9880d681SAndroid Build Coastguard Worker; 974*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmaxsd: 975*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 976*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaxsd %ymm1, %ymm0, %ymm0 977*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 978*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.pmaxs.d(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1] 979*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 980*9880d681SAndroid Build Coastguard Worker} 981*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pmaxs.d(<8 x i32>, <8 x i32>) nounwind readnone 982*9880d681SAndroid Build Coastguard Worker 983*9880d681SAndroid Build Coastguard Worker 984*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pmaxud(<8 x i32> %a0, <8 x i32> %a1) { 985*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmaxud: 986*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 987*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaxud %ymm1, %ymm0, %ymm0 988*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 989*9880d681SAndroid Build Coastguard Worker; 990*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmaxud: 991*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 992*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaxud %ymm1, %ymm0, %ymm0 993*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 994*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.pmaxu.d(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1] 995*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 996*9880d681SAndroid Build Coastguard Worker} 997*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pmaxu.d(<8 x i32>, <8 x i32>) nounwind readnone 998*9880d681SAndroid Build Coastguard Worker 999*9880d681SAndroid Build Coastguard Worker 1000*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pmaxuw(<16 x i16> %a0, <16 x i16> %a1) { 1001*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pmaxuw: 1002*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1003*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaxuw %ymm1, %ymm0, %ymm0 1004*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1005*9880d681SAndroid Build Coastguard Worker; 1006*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pmaxuw: 1007*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1008*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaxuw %ymm1, %ymm0, %ymm0 1009*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1010*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.pmaxu.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 1011*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 1012*9880d681SAndroid Build Coastguard Worker} 1013*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pmaxu.w(<16 x i16>, <16 x i16>) nounwind readnone 1014*9880d681SAndroid Build Coastguard Worker 1015*9880d681SAndroid Build Coastguard Worker 1016*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_x86_avx2_pminsb(<32 x i8> %a0, <32 x i8> %a1) { 1017*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pminsb: 1018*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1019*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpminsb %ymm1, %ymm0, %ymm0 1020*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1021*9880d681SAndroid Build Coastguard Worker; 1022*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pminsb: 1023*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1024*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpminsb %ymm1, %ymm0, %ymm0 1025*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1026*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx2.pmins.b(<32 x i8> %a0, <32 x i8> %a1) ; <<32 x i8>> [#uses=1] 1027*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 1028*9880d681SAndroid Build Coastguard Worker} 1029*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx2.pmins.b(<32 x i8>, <32 x i8>) nounwind readnone 1030*9880d681SAndroid Build Coastguard Worker 1031*9880d681SAndroid Build Coastguard Worker 1032*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pminsd(<8 x i32> %a0, <8 x i32> %a1) { 1033*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pminsd: 1034*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1035*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpminsd %ymm1, %ymm0, %ymm0 1036*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1037*9880d681SAndroid Build Coastguard Worker; 1038*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pminsd: 1039*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1040*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpminsd %ymm1, %ymm0, %ymm0 1041*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1042*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.pmins.d(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1] 1043*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 1044*9880d681SAndroid Build Coastguard Worker} 1045*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pmins.d(<8 x i32>, <8 x i32>) nounwind readnone 1046*9880d681SAndroid Build Coastguard Worker 1047*9880d681SAndroid Build Coastguard Worker 1048*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pminud(<8 x i32> %a0, <8 x i32> %a1) { 1049*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pminud: 1050*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1051*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpminud %ymm1, %ymm0, %ymm0 1052*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1053*9880d681SAndroid Build Coastguard Worker; 1054*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pminud: 1055*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1056*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpminud %ymm1, %ymm0, %ymm0 1057*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1058*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.pminu.d(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1] 1059*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 1060*9880d681SAndroid Build Coastguard Worker} 1061*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pminu.d(<8 x i32>, <8 x i32>) nounwind readnone 1062*9880d681SAndroid Build Coastguard Worker 1063*9880d681SAndroid Build Coastguard Worker 1064*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_x86_avx2_pminuw(<16 x i16> %a0, <16 x i16> %a1) { 1065*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pminuw: 1066*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1067*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpminuw %ymm1, %ymm0, %ymm0 1068*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1069*9880d681SAndroid Build Coastguard Worker; 1070*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pminuw: 1071*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1072*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpminuw %ymm1, %ymm0, %ymm0 1073*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1074*9880d681SAndroid Build Coastguard Worker %res = call <16 x i16> @llvm.x86.avx2.pminu.w(<16 x i16> %a0, <16 x i16> %a1) ; <<16 x i16>> [#uses=1] 1075*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %res 1076*9880d681SAndroid Build Coastguard Worker} 1077*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx2.pminu.w(<16 x i16>, <16 x i16>) nounwind readnone 1078*9880d681SAndroid Build Coastguard Worker 1079*9880d681SAndroid Build Coastguard Worker 1080*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_pmul.dq(<8 x i32> %a0, <8 x i32> %a1) { 1081*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.pmul.dq(<8 x i32> %a0, <8 x i32> %a1) ; <<2 x i64>> [#uses=1] 1082*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 1083*9880d681SAndroid Build Coastguard Worker} 1084*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.pmul.dq(<8 x i32>, <8 x i32>) nounwind readnone 1085*9880d681SAndroid Build Coastguard Worker 1086*9880d681SAndroid Build Coastguard Worker 1087*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx2_pblendd_128(<4 x i32> %a0, <4 x i32> %a1) { 1088*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pblendd_128: 1089*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1090*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3] 1091*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1092*9880d681SAndroid Build Coastguard Worker; 1093*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pblendd_128: 1094*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1095*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpblendd {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3] 1096*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1097*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.avx2.pblendd.128(<4 x i32> %a0, <4 x i32> %a1, i8 7) ; <<4 x i32>> [#uses=1] 1098*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1099*9880d681SAndroid Build Coastguard Worker} 1100*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx2.pblendd.128(<4 x i32>, <4 x i32>, i8) nounwind readnone 1101*9880d681SAndroid Build Coastguard Worker 1102*9880d681SAndroid Build Coastguard Worker 1103*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_pblendd_256(<8 x i32> %a0, <8 x i32> %a1) { 1104*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_pblendd_256: 1105*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1106*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7] 1107*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1108*9880d681SAndroid Build Coastguard Worker; 1109*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_pblendd_256: 1110*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1111*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpblendd {{.*#+}} ymm0 = ymm1[0,1,2],ymm0[3,4,5,6,7] 1112*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1113*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.pblendd.256(<8 x i32> %a0, <8 x i32> %a1, i8 7) ; <<8 x i32>> [#uses=1] 1114*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 1115*9880d681SAndroid Build Coastguard Worker} 1116*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.pblendd.256(<8 x i32>, <8 x i32>, i8) nounwind readnone 1117*9880d681SAndroid Build Coastguard Worker 1118*9880d681SAndroid Build Coastguard Worker 1119*9880d681SAndroid Build Coastguard Worker; Check that the arguments are swapped between the intrinsic definition 1120*9880d681SAndroid Build Coastguard Worker; and its lowering. Indeed, the offsets are the first source in 1121*9880d681SAndroid Build Coastguard Worker; the instruction. 1122*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_permd(<8 x i32> %a0, <8 x i32> %a1) { 1123*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_permd: 1124*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1125*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpermd %ymm0, %ymm1, %ymm0 1126*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1127*9880d681SAndroid Build Coastguard Worker; 1128*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_permd: 1129*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1130*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpermd %ymm0, %ymm1, %ymm0 1131*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1132*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.permd(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1] 1133*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 1134*9880d681SAndroid Build Coastguard Worker} 1135*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.permd(<8 x i32>, <8 x i32>) nounwind readonly 1136*9880d681SAndroid Build Coastguard Worker 1137*9880d681SAndroid Build Coastguard Worker 1138*9880d681SAndroid Build Coastguard Worker; Check that the arguments are swapped between the intrinsic definition 1139*9880d681SAndroid Build Coastguard Worker; and its lowering. Indeed, the offsets are the first source in 1140*9880d681SAndroid Build Coastguard Worker; the instruction. 1141*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx2_permps(<8 x float> %a0, <8 x i32> %a1) { 1142*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_permps: 1143*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1144*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpermps %ymm0, %ymm1, %ymm0 1145*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1146*9880d681SAndroid Build Coastguard Worker; 1147*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_permps: 1148*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1149*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpermps %ymm0, %ymm1, %ymm0 1150*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1151*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx2.permps(<8 x float> %a0, <8 x i32> %a1) ; <<8 x float>> [#uses=1] 1152*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 1153*9880d681SAndroid Build Coastguard Worker} 1154*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx2.permps(<8 x float>, <8 x i32>) nounwind readonly 1155*9880d681SAndroid Build Coastguard Worker 1156*9880d681SAndroid Build Coastguard Worker 1157*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_vperm2i128(<4 x i64> %a0, <4 x i64> %a1) { 1158*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_vperm2i128: 1159*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1160*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1] 1161*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1162*9880d681SAndroid Build Coastguard Worker; 1163*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_vperm2i128: 1164*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1165*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vperm2f128 {{.*#+}} ymm0 = ymm0[2,3,0,1] 1166*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1167*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.vperm2i128(<4 x i64> %a0, <4 x i64> %a1, i8 1) ; <<4 x i64>> [#uses=1] 1168*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 1169*9880d681SAndroid Build Coastguard Worker} 1170*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.vperm2i128(<4 x i64>, <4 x i64>, i8) nounwind readonly 1171*9880d681SAndroid Build Coastguard Worker 1172*9880d681SAndroid Build Coastguard Worker 1173*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_avx2_maskload_q(i8* %a0, <2 x i64> %a1) { 1174*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_maskload_q: 1175*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1176*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1177*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaskmovq (%eax), %xmm0, %xmm0 1178*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1179*9880d681SAndroid Build Coastguard Worker; 1180*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_maskload_q: 1181*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1182*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1183*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaskmovq (%eax), %xmm0, %xmm0 1184*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1185*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.avx2.maskload.q(i8* %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1] 1186*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1187*9880d681SAndroid Build Coastguard Worker} 1188*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx2.maskload.q(i8*, <2 x i64>) nounwind readonly 1189*9880d681SAndroid Build Coastguard Worker 1190*9880d681SAndroid Build Coastguard Worker 1191*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_maskload_q_256(i8* %a0, <4 x i64> %a1) { 1192*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_maskload_q_256: 1193*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1194*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1195*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaskmovq (%eax), %ymm0, %ymm0 1196*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1197*9880d681SAndroid Build Coastguard Worker; 1198*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_maskload_q_256: 1199*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1200*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1201*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaskmovq (%eax), %ymm0, %ymm0 1202*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1203*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.maskload.q.256(i8* %a0, <4 x i64> %a1) ; <<4 x i64>> [#uses=1] 1204*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 1205*9880d681SAndroid Build Coastguard Worker} 1206*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.maskload.q.256(i8*, <4 x i64>) nounwind readonly 1207*9880d681SAndroid Build Coastguard Worker 1208*9880d681SAndroid Build Coastguard Worker 1209*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx2_maskload_d(i8* %a0, <4 x i32> %a1) { 1210*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_maskload_d: 1211*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1212*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1213*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaskmovd (%eax), %xmm0, %xmm0 1214*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1215*9880d681SAndroid Build Coastguard Worker; 1216*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_maskload_d: 1217*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1218*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1219*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaskmovd (%eax), %xmm0, %xmm0 1220*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1221*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.avx2.maskload.d(i8* %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 1222*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1223*9880d681SAndroid Build Coastguard Worker} 1224*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx2.maskload.d(i8*, <4 x i32>) nounwind readonly 1225*9880d681SAndroid Build Coastguard Worker 1226*9880d681SAndroid Build Coastguard Worker 1227*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_maskload_d_256(i8* %a0, <8 x i32> %a1) { 1228*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_maskload_d_256: 1229*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1230*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1231*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaskmovd (%eax), %ymm0, %ymm0 1232*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1233*9880d681SAndroid Build Coastguard Worker; 1234*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_maskload_d_256: 1235*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1236*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1237*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaskmovd (%eax), %ymm0, %ymm0 1238*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1239*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.maskload.d.256(i8* %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1] 1240*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 1241*9880d681SAndroid Build Coastguard Worker} 1242*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.maskload.d.256(i8*, <8 x i32>) nounwind readonly 1243*9880d681SAndroid Build Coastguard Worker 1244*9880d681SAndroid Build Coastguard Worker 1245*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx2_maskstore_q(i8* %a0, <2 x i64> %a1, <2 x i64> %a2) { 1246*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_maskstore_q: 1247*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1248*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1249*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaskmovq %xmm1, %xmm0, (%eax) 1250*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1251*9880d681SAndroid Build Coastguard Worker; 1252*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_maskstore_q: 1253*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1254*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1255*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaskmovq %xmm1, %xmm0, (%eax) 1256*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1257*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx2.maskstore.q(i8* %a0, <2 x i64> %a1, <2 x i64> %a2) 1258*9880d681SAndroid Build Coastguard Worker ret void 1259*9880d681SAndroid Build Coastguard Worker} 1260*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx2.maskstore.q(i8*, <2 x i64>, <2 x i64>) nounwind 1261*9880d681SAndroid Build Coastguard Worker 1262*9880d681SAndroid Build Coastguard Worker 1263*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx2_maskstore_q_256(i8* %a0, <4 x i64> %a1, <4 x i64> %a2) { 1264*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_maskstore_q_256: 1265*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1266*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1267*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaskmovq %ymm1, %ymm0, (%eax) 1268*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vzeroupper 1269*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1270*9880d681SAndroid Build Coastguard Worker; 1271*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_maskstore_q_256: 1272*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1273*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1274*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaskmovq %ymm1, %ymm0, (%eax) 1275*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1276*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx2.maskstore.q.256(i8* %a0, <4 x i64> %a1, <4 x i64> %a2) 1277*9880d681SAndroid Build Coastguard Worker ret void 1278*9880d681SAndroid Build Coastguard Worker} 1279*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx2.maskstore.q.256(i8*, <4 x i64>, <4 x i64>) nounwind 1280*9880d681SAndroid Build Coastguard Worker 1281*9880d681SAndroid Build Coastguard Worker 1282*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx2_maskstore_d(i8* %a0, <4 x i32> %a1, <4 x i32> %a2) { 1283*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_maskstore_d: 1284*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1285*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1286*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaskmovd %xmm1, %xmm0, (%eax) 1287*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1288*9880d681SAndroid Build Coastguard Worker; 1289*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_maskstore_d: 1290*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1291*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1292*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaskmovd %xmm1, %xmm0, (%eax) 1293*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1294*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx2.maskstore.d(i8* %a0, <4 x i32> %a1, <4 x i32> %a2) 1295*9880d681SAndroid Build Coastguard Worker ret void 1296*9880d681SAndroid Build Coastguard Worker} 1297*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx2.maskstore.d(i8*, <4 x i32>, <4 x i32>) nounwind 1298*9880d681SAndroid Build Coastguard Worker 1299*9880d681SAndroid Build Coastguard Worker 1300*9880d681SAndroid Build Coastguard Workerdefine void @test_x86_avx2_maskstore_d_256(i8* %a0, <8 x i32> %a1, <8 x i32> %a2) { 1301*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_maskstore_d_256: 1302*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1303*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1304*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpmaskmovd %ymm1, %ymm0, (%eax) 1305*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vzeroupper 1306*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1307*9880d681SAndroid Build Coastguard Worker; 1308*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_maskstore_d_256: 1309*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1310*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1311*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpmaskmovd %ymm1, %ymm0, (%eax) 1312*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1313*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx2.maskstore.d.256(i8* %a0, <8 x i32> %a1, <8 x i32> %a2) 1314*9880d681SAndroid Build Coastguard Worker ret void 1315*9880d681SAndroid Build Coastguard Worker} 1316*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx2.maskstore.d.256(i8*, <8 x i32>, <8 x i32>) nounwind 1317*9880d681SAndroid Build Coastguard Worker 1318*9880d681SAndroid Build Coastguard Worker 1319*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx2_psllv_d(<4 x i32> %a0, <4 x i32> %a1) { 1320*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psllv_d: 1321*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1322*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllvd %xmm1, %xmm0, %xmm0 1323*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1324*9880d681SAndroid Build Coastguard Worker; 1325*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psllv_d: 1326*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1327*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsllvd %xmm1, %xmm0, %xmm0 1328*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1329*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.avx2.psllv.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 1330*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1331*9880d681SAndroid Build Coastguard Worker} 1332*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx2.psllv.d(<4 x i32>, <4 x i32>) nounwind readnone 1333*9880d681SAndroid Build Coastguard Worker 1334*9880d681SAndroid Build Coastguard Worker 1335*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_psllv_d_256(<8 x i32> %a0, <8 x i32> %a1) { 1336*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psllv_d_256: 1337*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1338*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllvd %ymm1, %ymm0, %ymm0 1339*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1340*9880d681SAndroid Build Coastguard Worker; 1341*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psllv_d_256: 1342*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1343*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsllvd %ymm1, %ymm0, %ymm0 1344*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1345*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.psllv.d.256(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1] 1346*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 1347*9880d681SAndroid Build Coastguard Worker} 1348*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.psllv.d.256(<8 x i32>, <8 x i32>) nounwind readnone 1349*9880d681SAndroid Build Coastguard Worker 1350*9880d681SAndroid Build Coastguard Worker 1351*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_avx2_psllv_q(<2 x i64> %a0, <2 x i64> %a1) { 1352*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psllv_q: 1353*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1354*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllvq %xmm1, %xmm0, %xmm0 1355*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1356*9880d681SAndroid Build Coastguard Worker; 1357*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psllv_q: 1358*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1359*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsllvq %xmm1, %xmm0, %xmm0 1360*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1361*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.avx2.psllv.q(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1] 1362*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1363*9880d681SAndroid Build Coastguard Worker} 1364*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx2.psllv.q(<2 x i64>, <2 x i64>) nounwind readnone 1365*9880d681SAndroid Build Coastguard Worker 1366*9880d681SAndroid Build Coastguard Worker 1367*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_psllv_q_256(<4 x i64> %a0, <4 x i64> %a1) { 1368*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psllv_q_256: 1369*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1370*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsllvq %ymm1, %ymm0, %ymm0 1371*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1372*9880d681SAndroid Build Coastguard Worker; 1373*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psllv_q_256: 1374*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1375*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsllvq %ymm1, %ymm0, %ymm0 1376*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1377*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.psllv.q.256(<4 x i64> %a0, <4 x i64> %a1) ; <<4 x i64>> [#uses=1] 1378*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 1379*9880d681SAndroid Build Coastguard Worker} 1380*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.psllv.q.256(<4 x i64>, <4 x i64>) nounwind readnone 1381*9880d681SAndroid Build Coastguard Worker 1382*9880d681SAndroid Build Coastguard Worker 1383*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx2_psrlv_d(<4 x i32> %a0, <4 x i32> %a1) { 1384*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrlv_d: 1385*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1386*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrlvd %xmm1, %xmm0, %xmm0 1387*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1388*9880d681SAndroid Build Coastguard Worker; 1389*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrlv_d: 1390*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1391*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrlvd %xmm1, %xmm0, %xmm0 1392*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1393*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.avx2.psrlv.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 1394*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1395*9880d681SAndroid Build Coastguard Worker} 1396*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx2.psrlv.d(<4 x i32>, <4 x i32>) nounwind readnone 1397*9880d681SAndroid Build Coastguard Worker 1398*9880d681SAndroid Build Coastguard Worker 1399*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_psrlv_d_256(<8 x i32> %a0, <8 x i32> %a1) { 1400*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrlv_d_256: 1401*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1402*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrlvd %ymm1, %ymm0, %ymm0 1403*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1404*9880d681SAndroid Build Coastguard Worker; 1405*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrlv_d_256: 1406*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1407*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrlvd %ymm1, %ymm0, %ymm0 1408*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1409*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.psrlv.d.256(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1] 1410*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 1411*9880d681SAndroid Build Coastguard Worker} 1412*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.psrlv.d.256(<8 x i32>, <8 x i32>) nounwind readnone 1413*9880d681SAndroid Build Coastguard Worker 1414*9880d681SAndroid Build Coastguard Worker 1415*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_avx2_psrlv_q(<2 x i64> %a0, <2 x i64> %a1) { 1416*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrlv_q: 1417*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1418*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrlvq %xmm1, %xmm0, %xmm0 1419*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1420*9880d681SAndroid Build Coastguard Worker; 1421*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrlv_q: 1422*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1423*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrlvq %xmm1, %xmm0, %xmm0 1424*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1425*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.avx2.psrlv.q(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1] 1426*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1427*9880d681SAndroid Build Coastguard Worker} 1428*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx2.psrlv.q(<2 x i64>, <2 x i64>) nounwind readnone 1429*9880d681SAndroid Build Coastguard Worker 1430*9880d681SAndroid Build Coastguard Worker 1431*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_psrlv_q_256(<4 x i64> %a0, <4 x i64> %a1) { 1432*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrlv_q_256: 1433*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1434*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsrlvq %ymm1, %ymm0, %ymm0 1435*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1436*9880d681SAndroid Build Coastguard Worker; 1437*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrlv_q_256: 1438*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1439*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsrlvq %ymm1, %ymm0, %ymm0 1440*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1441*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.psrlv.q.256(<4 x i64> %a0, <4 x i64> %a1) ; <<4 x i64>> [#uses=1] 1442*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 1443*9880d681SAndroid Build Coastguard Worker} 1444*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.psrlv.q.256(<4 x i64>, <4 x i64>) nounwind readnone 1445*9880d681SAndroid Build Coastguard Worker 1446*9880d681SAndroid Build Coastguard Worker 1447*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx2_psrav_d(<4 x i32> %a0, <4 x i32> %a1) { 1448*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrav_d: 1449*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1450*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsravd %xmm1, %xmm0, %xmm0 1451*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1452*9880d681SAndroid Build Coastguard Worker; 1453*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrav_d: 1454*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1455*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsravd %xmm1, %xmm0, %xmm0 1456*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1457*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.avx2.psrav.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1] 1458*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1459*9880d681SAndroid Build Coastguard Worker} 1460*9880d681SAndroid Build Coastguard Worker 1461*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx2_psrav_d_const(<4 x i32> %a0, <4 x i32> %a1) { 1462*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrav_d_const: 1463*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1464*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} xmm0 = [2,9,4294967284,23] 1465*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsravd LCPI90_1, %xmm0, %xmm0 1466*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1467*9880d681SAndroid Build Coastguard Worker; 1468*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrav_d_const: 1469*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1470*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovdqa32 {{.*#+}} xmm0 = [2,9,4294967284,23] 1471*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsravd LCPI90_1, %xmm0, %xmm0 1472*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1473*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.avx2.psrav.d(<4 x i32> <i32 2, i32 9, i32 -12, i32 23>, <4 x i32> <i32 1, i32 18, i32 35, i32 52>) 1474*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1475*9880d681SAndroid Build Coastguard Worker} 1476*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx2.psrav.d(<4 x i32>, <4 x i32>) nounwind readnone 1477*9880d681SAndroid Build Coastguard Worker 1478*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_psrav_d_256(<8 x i32> %a0, <8 x i32> %a1) { 1479*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrav_d_256: 1480*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1481*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsravd %ymm1, %ymm0, %ymm0 1482*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1483*9880d681SAndroid Build Coastguard Worker; 1484*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrav_d_256: 1485*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1486*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsravd %ymm1, %ymm0, %ymm0 1487*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1488*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.psrav.d.256(<8 x i32> %a0, <8 x i32> %a1) ; <<8 x i32>> [#uses=1] 1489*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 1490*9880d681SAndroid Build Coastguard Worker} 1491*9880d681SAndroid Build Coastguard Worker 1492*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_psrav_d_256_const(<8 x i32> %a0, <8 x i32> %a1) { 1493*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_psrav_d_256_const: 1494*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1495*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovdqa {{.*#+}} ymm0 = [2,9,4294967284,23,4294967270,37,4294967256,51] 1496*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpsravd LCPI92_1, %ymm0, %ymm0 1497*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1498*9880d681SAndroid Build Coastguard Worker; 1499*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_psrav_d_256_const: 1500*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1501*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovdqa32 {{.*#+}} ymm0 = [2,9,4294967284,23,4294967270,37,4294967256,51] 1502*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpsravd LCPI92_1, %ymm0, %ymm0 1503*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1504*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.psrav.d.256(<8 x i32> <i32 2, i32 9, i32 -12, i32 23, i32 -26, i32 37, i32 -40, i32 51>, <8 x i32> <i32 1, i32 18, i32 35, i32 52, i32 69, i32 15, i32 32, i32 49>) 1505*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 1506*9880d681SAndroid Build Coastguard Worker} 1507*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.psrav.d.256(<8 x i32>, <8 x i32>) nounwind readnone 1508*9880d681SAndroid Build Coastguard Worker 1509*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx2_gather_d_pd(<2 x double> %a0, i8* %a1, <4 x i32> %idx, <2 x double> %mask) { 1510*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_d_pd: 1511*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1512*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1513*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vgatherdpd %xmm2, (%eax,%xmm1,2), %xmm0 1514*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1515*9880d681SAndroid Build Coastguard Worker; 1516*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_d_pd: 1517*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1518*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1519*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vgatherdpd %xmm2, (%eax,%xmm1,2), %xmm0 1520*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1521*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx2.gather.d.pd(<2 x double> %a0, 1522*9880d681SAndroid Build Coastguard Worker i8* %a1, <4 x i32> %idx, <2 x double> %mask, i8 2) ; 1523*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1524*9880d681SAndroid Build Coastguard Worker} 1525*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx2.gather.d.pd(<2 x double>, i8*, 1526*9880d681SAndroid Build Coastguard Worker <4 x i32>, <2 x double>, i8) nounwind readonly 1527*9880d681SAndroid Build Coastguard Worker 1528*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx2_gather_d_pd_256(<4 x double> %a0, i8* %a1, <4 x i32> %idx, <4 x double> %mask) { 1529*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_d_pd_256: 1530*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1531*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1532*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vgatherdpd %ymm2, (%eax,%xmm1,2), %ymm0 1533*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1534*9880d681SAndroid Build Coastguard Worker; 1535*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_d_pd_256: 1536*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1537*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1538*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vgatherdpd %ymm2, (%eax,%xmm1,2), %ymm0 1539*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1540*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx2.gather.d.pd.256(<4 x double> %a0, 1541*9880d681SAndroid Build Coastguard Worker i8* %a1, <4 x i32> %idx, <4 x double> %mask, i8 2) ; 1542*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 1543*9880d681SAndroid Build Coastguard Worker} 1544*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx2.gather.d.pd.256(<4 x double>, i8*, 1545*9880d681SAndroid Build Coastguard Worker <4 x i32>, <4 x double>, i8) nounwind readonly 1546*9880d681SAndroid Build Coastguard Worker 1547*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_x86_avx2_gather_q_pd(<2 x double> %a0, i8* %a1, <2 x i64> %idx, <2 x double> %mask) { 1548*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_q_pd: 1549*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1550*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1551*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vgatherqpd %xmm2, (%eax,%xmm1,2), %xmm0 1552*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1553*9880d681SAndroid Build Coastguard Worker; 1554*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_q_pd: 1555*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1556*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1557*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vgatherqpd %xmm2, (%eax,%xmm1,2), %xmm0 1558*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1559*9880d681SAndroid Build Coastguard Worker %res = call <2 x double> @llvm.x86.avx2.gather.q.pd(<2 x double> %a0, 1560*9880d681SAndroid Build Coastguard Worker i8* %a1, <2 x i64> %idx, <2 x double> %mask, i8 2) ; 1561*9880d681SAndroid Build Coastguard Worker ret <2 x double> %res 1562*9880d681SAndroid Build Coastguard Worker} 1563*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx2.gather.q.pd(<2 x double>, i8*, 1564*9880d681SAndroid Build Coastguard Worker <2 x i64>, <2 x double>, i8) nounwind readonly 1565*9880d681SAndroid Build Coastguard Worker 1566*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_x86_avx2_gather_q_pd_256(<4 x double> %a0, i8* %a1, <4 x i64> %idx, <4 x double> %mask) { 1567*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_q_pd_256: 1568*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1569*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1570*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vgatherqpd %ymm2, (%eax,%ymm1,2), %ymm0 1571*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1572*9880d681SAndroid Build Coastguard Worker; 1573*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_q_pd_256: 1574*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1575*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1576*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vgatherqpd %ymm2, (%eax,%ymm1,2), %ymm0 1577*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1578*9880d681SAndroid Build Coastguard Worker %res = call <4 x double> @llvm.x86.avx2.gather.q.pd.256(<4 x double> %a0, 1579*9880d681SAndroid Build Coastguard Worker i8* %a1, <4 x i64> %idx, <4 x double> %mask, i8 2) ; 1580*9880d681SAndroid Build Coastguard Worker ret <4 x double> %res 1581*9880d681SAndroid Build Coastguard Worker} 1582*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx2.gather.q.pd.256(<4 x double>, i8*, 1583*9880d681SAndroid Build Coastguard Worker <4 x i64>, <4 x double>, i8) nounwind readonly 1584*9880d681SAndroid Build Coastguard Worker 1585*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx2_gather_d_ps(<4 x float> %a0, i8* %a1, <4 x i32> %idx, <4 x float> %mask) { 1586*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_d_ps: 1587*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1588*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1589*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vgatherdps %xmm2, (%eax,%xmm1,2), %xmm0 1590*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1591*9880d681SAndroid Build Coastguard Worker; 1592*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_d_ps: 1593*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1594*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1595*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vgatherdps %xmm2, (%eax,%xmm1,2), %xmm0 1596*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1597*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx2.gather.d.ps(<4 x float> %a0, 1598*9880d681SAndroid Build Coastguard Worker i8* %a1, <4 x i32> %idx, <4 x float> %mask, i8 2) ; 1599*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1600*9880d681SAndroid Build Coastguard Worker} 1601*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx2.gather.d.ps(<4 x float>, i8*, 1602*9880d681SAndroid Build Coastguard Worker <4 x i32>, <4 x float>, i8) nounwind readonly 1603*9880d681SAndroid Build Coastguard Worker 1604*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_x86_avx2_gather_d_ps_256(<8 x float> %a0, i8* %a1, <8 x i32> %idx, <8 x float> %mask) { 1605*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_d_ps_256: 1606*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1607*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1608*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vgatherdps %ymm2, (%eax,%ymm1,2), %ymm0 1609*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1610*9880d681SAndroid Build Coastguard Worker; 1611*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_d_ps_256: 1612*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1613*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1614*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vgatherdps %ymm2, (%eax,%ymm1,2), %ymm0 1615*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1616*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx2.gather.d.ps.256(<8 x float> %a0, 1617*9880d681SAndroid Build Coastguard Worker i8* %a1, <8 x i32> %idx, <8 x float> %mask, i8 2) ; 1618*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 1619*9880d681SAndroid Build Coastguard Worker} 1620*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx2.gather.d.ps.256(<8 x float>, i8*, 1621*9880d681SAndroid Build Coastguard Worker <8 x i32>, <8 x float>, i8) nounwind readonly 1622*9880d681SAndroid Build Coastguard Worker 1623*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx2_gather_q_ps(<4 x float> %a0, i8* %a1, <2 x i64> %idx, <4 x float> %mask) { 1624*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_q_ps: 1625*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1626*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1627*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vgatherqps %xmm2, (%eax,%xmm1,2), %xmm0 1628*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1629*9880d681SAndroid Build Coastguard Worker; 1630*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_q_ps: 1631*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1632*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1633*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vgatherqps %xmm2, (%eax,%xmm1,2), %xmm0 1634*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1635*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx2.gather.q.ps(<4 x float> %a0, 1636*9880d681SAndroid Build Coastguard Worker i8* %a1, <2 x i64> %idx, <4 x float> %mask, i8 2) ; 1637*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1638*9880d681SAndroid Build Coastguard Worker} 1639*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx2.gather.q.ps(<4 x float>, i8*, 1640*9880d681SAndroid Build Coastguard Worker <2 x i64>, <4 x float>, i8) nounwind readonly 1641*9880d681SAndroid Build Coastguard Worker 1642*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_x86_avx2_gather_q_ps_256(<4 x float> %a0, i8* %a1, <4 x i64> %idx, <4 x float> %mask) { 1643*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_q_ps_256: 1644*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1645*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1646*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vgatherqps %xmm2, (%eax,%ymm1,2), %xmm0 1647*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vzeroupper 1648*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1649*9880d681SAndroid Build Coastguard Worker; 1650*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_q_ps_256: 1651*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1652*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1653*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vgatherqps %xmm2, (%eax,%ymm1,2), %xmm0 1654*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1655*9880d681SAndroid Build Coastguard Worker %res = call <4 x float> @llvm.x86.avx2.gather.q.ps.256(<4 x float> %a0, 1656*9880d681SAndroid Build Coastguard Worker i8* %a1, <4 x i64> %idx, <4 x float> %mask, i8 2) ; 1657*9880d681SAndroid Build Coastguard Worker ret <4 x float> %res 1658*9880d681SAndroid Build Coastguard Worker} 1659*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx2.gather.q.ps.256(<4 x float>, i8*, 1660*9880d681SAndroid Build Coastguard Worker <4 x i64>, <4 x float>, i8) nounwind readonly 1661*9880d681SAndroid Build Coastguard Worker 1662*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_avx2_gather_d_q(<2 x i64> %a0, i8* %a1, <4 x i32> %idx, <2 x i64> %mask) { 1663*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_d_q: 1664*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1665*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1666*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpgatherdq %xmm2, (%eax,%xmm1,2), %xmm0 1667*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1668*9880d681SAndroid Build Coastguard Worker; 1669*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_d_q: 1670*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1671*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1672*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpgatherdq %xmm2, (%eax,%xmm1,2), %xmm0 1673*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1674*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.avx2.gather.d.q(<2 x i64> %a0, 1675*9880d681SAndroid Build Coastguard Worker i8* %a1, <4 x i32> %idx, <2 x i64> %mask, i8 2) ; 1676*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1677*9880d681SAndroid Build Coastguard Worker} 1678*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx2.gather.d.q(<2 x i64>, i8*, 1679*9880d681SAndroid Build Coastguard Worker <4 x i32>, <2 x i64>, i8) nounwind readonly 1680*9880d681SAndroid Build Coastguard Worker 1681*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_gather_d_q_256(<4 x i64> %a0, i8* %a1, <4 x i32> %idx, <4 x i64> %mask) { 1682*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_d_q_256: 1683*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1684*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1685*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpgatherdq %ymm2, (%eax,%xmm1,2), %ymm0 1686*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1687*9880d681SAndroid Build Coastguard Worker; 1688*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_d_q_256: 1689*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1690*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1691*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpgatherdq %ymm2, (%eax,%xmm1,2), %ymm0 1692*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1693*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.gather.d.q.256(<4 x i64> %a0, 1694*9880d681SAndroid Build Coastguard Worker i8* %a1, <4 x i32> %idx, <4 x i64> %mask, i8 2) ; 1695*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 1696*9880d681SAndroid Build Coastguard Worker} 1697*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.gather.d.q.256(<4 x i64>, i8*, 1698*9880d681SAndroid Build Coastguard Worker <4 x i32>, <4 x i64>, i8) nounwind readonly 1699*9880d681SAndroid Build Coastguard Worker 1700*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_x86_avx2_gather_q_q(<2 x i64> %a0, i8* %a1, <2 x i64> %idx, <2 x i64> %mask) { 1701*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_q_q: 1702*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1703*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1704*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpgatherqq %xmm2, (%eax,%xmm1,2), %xmm0 1705*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1706*9880d681SAndroid Build Coastguard Worker; 1707*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_q_q: 1708*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1709*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1710*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpgatherqq %xmm2, (%eax,%xmm1,2), %xmm0 1711*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1712*9880d681SAndroid Build Coastguard Worker %res = call <2 x i64> @llvm.x86.avx2.gather.q.q(<2 x i64> %a0, 1713*9880d681SAndroid Build Coastguard Worker i8* %a1, <2 x i64> %idx, <2 x i64> %mask, i8 2) ; 1714*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %res 1715*9880d681SAndroid Build Coastguard Worker} 1716*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx2.gather.q.q(<2 x i64>, i8*, 1717*9880d681SAndroid Build Coastguard Worker <2 x i64>, <2 x i64>, i8) nounwind readonly 1718*9880d681SAndroid Build Coastguard Worker 1719*9880d681SAndroid Build Coastguard Workerdefine <4 x i64> @test_x86_avx2_gather_q_q_256(<4 x i64> %a0, i8* %a1, <4 x i64> %idx, <4 x i64> %mask) { 1720*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_q_q_256: 1721*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1722*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1723*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpgatherqq %ymm2, (%eax,%ymm1,2), %ymm0 1724*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1725*9880d681SAndroid Build Coastguard Worker; 1726*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_q_q_256: 1727*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1728*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1729*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpgatherqq %ymm2, (%eax,%ymm1,2), %ymm0 1730*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1731*9880d681SAndroid Build Coastguard Worker %res = call <4 x i64> @llvm.x86.avx2.gather.q.q.256(<4 x i64> %a0, 1732*9880d681SAndroid Build Coastguard Worker i8* %a1, <4 x i64> %idx, <4 x i64> %mask, i8 2) ; 1733*9880d681SAndroid Build Coastguard Worker ret <4 x i64> %res 1734*9880d681SAndroid Build Coastguard Worker} 1735*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx2.gather.q.q.256(<4 x i64>, i8*, 1736*9880d681SAndroid Build Coastguard Worker <4 x i64>, <4 x i64>, i8) nounwind readonly 1737*9880d681SAndroid Build Coastguard Worker 1738*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx2_gather_d_d(<4 x i32> %a0, i8* %a1, <4 x i32> %idx, <4 x i32> %mask) { 1739*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_d_d: 1740*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1741*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1742*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpgatherdd %xmm2, (%eax,%xmm1,2), %xmm0 1743*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1744*9880d681SAndroid Build Coastguard Worker; 1745*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_d_d: 1746*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1747*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1748*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpgatherdd %xmm2, (%eax,%xmm1,2), %xmm0 1749*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1750*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.avx2.gather.d.d(<4 x i32> %a0, 1751*9880d681SAndroid Build Coastguard Worker i8* %a1, <4 x i32> %idx, <4 x i32> %mask, i8 2) ; 1752*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1753*9880d681SAndroid Build Coastguard Worker} 1754*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx2.gather.d.d(<4 x i32>, i8*, 1755*9880d681SAndroid Build Coastguard Worker <4 x i32>, <4 x i32>, i8) nounwind readonly 1756*9880d681SAndroid Build Coastguard Worker 1757*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_x86_avx2_gather_d_d_256(<8 x i32> %a0, i8* %a1, <8 x i32> %idx, <8 x i32> %mask) { 1758*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_d_d_256: 1759*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1760*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1761*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpgatherdd %ymm2, (%eax,%ymm1,2), %ymm0 1762*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1763*9880d681SAndroid Build Coastguard Worker; 1764*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_d_d_256: 1765*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1766*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1767*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpgatherdd %ymm2, (%eax,%ymm1,2), %ymm0 1768*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1769*9880d681SAndroid Build Coastguard Worker %res = call <8 x i32> @llvm.x86.avx2.gather.d.d.256(<8 x i32> %a0, 1770*9880d681SAndroid Build Coastguard Worker i8* %a1, <8 x i32> %idx, <8 x i32> %mask, i8 2) ; 1771*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %res 1772*9880d681SAndroid Build Coastguard Worker} 1773*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx2.gather.d.d.256(<8 x i32>, i8*, 1774*9880d681SAndroid Build Coastguard Worker <8 x i32>, <8 x i32>, i8) nounwind readonly 1775*9880d681SAndroid Build Coastguard Worker 1776*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx2_gather_q_d(<4 x i32> %a0, i8* %a1, <2 x i64> %idx, <4 x i32> %mask) { 1777*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_q_d: 1778*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1779*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1780*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpgatherqd %xmm2, (%eax,%xmm1,2), %xmm0 1781*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1782*9880d681SAndroid Build Coastguard Worker; 1783*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_q_d: 1784*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1785*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1786*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpgatherqd %xmm2, (%eax,%xmm1,2), %xmm0 1787*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1788*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.avx2.gather.q.d(<4 x i32> %a0, 1789*9880d681SAndroid Build Coastguard Worker i8* %a1, <2 x i64> %idx, <4 x i32> %mask, i8 2) ; 1790*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1791*9880d681SAndroid Build Coastguard Worker} 1792*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx2.gather.q.d(<4 x i32>, i8*, 1793*9880d681SAndroid Build Coastguard Worker <2 x i64>, <4 x i32>, i8) nounwind readonly 1794*9880d681SAndroid Build Coastguard Worker 1795*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_x86_avx2_gather_q_d_256(<4 x i32> %a0, i8* %a1, <4 x i64> %idx, <4 x i32> %mask) { 1796*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_x86_avx2_gather_q_d_256: 1797*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1798*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1799*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vpgatherqd %xmm2, (%eax,%ymm1,2), %xmm0 1800*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vzeroupper 1801*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1802*9880d681SAndroid Build Coastguard Worker; 1803*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_x86_avx2_gather_q_d_256: 1804*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1805*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1806*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vpgatherqd %xmm2, (%eax,%ymm1,2), %xmm0 1807*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1808*9880d681SAndroid Build Coastguard Worker %res = call <4 x i32> @llvm.x86.avx2.gather.q.d.256(<4 x i32> %a0, 1809*9880d681SAndroid Build Coastguard Worker i8* %a1, <4 x i64> %idx, <4 x i32> %mask, i8 2) ; 1810*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1811*9880d681SAndroid Build Coastguard Worker} 1812*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx2.gather.q.d.256(<4 x i32>, i8*, 1813*9880d681SAndroid Build Coastguard Worker <4 x i64>, <4 x i32>, i8) nounwind readonly 1814*9880d681SAndroid Build Coastguard Worker 1815*9880d681SAndroid Build Coastguard Worker; PR13298 1816*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_gather_mask(<8 x float> %a0, float* %a, <8 x i32> %idx, <8 x float> %mask, float* nocapture %out) { 1817*9880d681SAndroid Build Coastguard Worker;; gather with mask 1818*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_gather_mask: 1819*9880d681SAndroid Build Coastguard Worker; AVX2: ## BB#0: 1820*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %eax 1821*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: movl {{[0-9]+}}(%esp), %ecx 1822*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovaps %ymm2, %ymm3 1823*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vgatherdps %ymm3, (%ecx,%ymm1,4), %ymm0 1824*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: vmovups %ymm2, (%eax) 1825*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT: retl 1826*9880d681SAndroid Build Coastguard Worker; 1827*9880d681SAndroid Build Coastguard Worker; AVX512VL-LABEL: test_gather_mask: 1828*9880d681SAndroid Build Coastguard Worker; AVX512VL: ## BB#0: 1829*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %eax 1830*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: movl {{[0-9]+}}(%esp), %ecx 1831*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovaps %zmm2, %zmm3 1832*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vgatherdps %ymm3, (%ecx,%ymm1,4), %ymm0 1833*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: vmovups %ymm2, (%eax) 1834*9880d681SAndroid Build Coastguard Worker; AVX512VL-NEXT: retl 1835*9880d681SAndroid Build Coastguard Worker %a_i8 = bitcast float* %a to i8* 1836*9880d681SAndroid Build Coastguard Worker %res = call <8 x float> @llvm.x86.avx2.gather.d.ps.256(<8 x float> %a0, 1837*9880d681SAndroid Build Coastguard Worker i8* %a_i8, <8 x i32> %idx, <8 x float> %mask, i8 4) ; 1838*9880d681SAndroid Build Coastguard Worker 1839*9880d681SAndroid Build Coastguard Worker;; for debugging, we'll just dump out the mask 1840*9880d681SAndroid Build Coastguard Worker %out_ptr = bitcast float * %out to <8 x float> * 1841*9880d681SAndroid Build Coastguard Worker store <8 x float> %mask, <8 x float> * %out_ptr, align 4 1842*9880d681SAndroid Build Coastguard Worker 1843*9880d681SAndroid Build Coastguard Worker ret <8 x float> %res 1844*9880d681SAndroid Build Coastguard Worker} 1845