1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by update_llc_test_checks.py 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=skx -mattr=+avx512vl -mattr=+avx512vbmi --show-mc-encoding| FileCheck %s 3*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.permvar.qi.128(<16 x i8>, <16 x i8>, <16 x i8>, i16) 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_permvar_qi_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) { 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_permvar_qi_128: 7*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf] 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermb %xmm0, %xmm1, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0x8d,0xd0] 10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermb %xmm0, %xmm1, %xmm3 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0x8d,0xd8] 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermb %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0x8d,0xc0] 12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm3, %xmm2, %xmm1 ## encoding: [0x62,0xf1,0x6d,0x08,0xfc,0xcb] 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfc,0xc0] 14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 15*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.avx512.mask.permvar.qi.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) 16*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i8> @llvm.x86.avx512.mask.permvar.qi.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> zeroinitializer, i16 %x3) 17*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i8> @llvm.x86.avx512.mask.permvar.qi.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 -1) 18*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i8> %res, %res1 19*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i8> %res3, %res2 20*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res4 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.permvar.qi.256(<32 x i8>, <32 x i8>, <32 x i8>, i32) 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_permvar_qi_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) { 26*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_permvar_qi_256: 27*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf] 29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermb %ymm0, %ymm1, %ymm2 {%k1} ## encoding: [0x62,0xf2,0x75,0x29,0x8d,0xd0] 30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermb %ymm0, %ymm1, %ymm3 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xa9,0x8d,0xd8] 31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermb %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0x75,0x28,0x8d,0xc0] 32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %ymm3, %ymm2, %ymm1 ## encoding: [0x62,0xf1,0x6d,0x28,0xfc,0xcb] 33*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfc,0xc0] 34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 35*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx512.mask.permvar.qi.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) 36*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i8> @llvm.x86.avx512.mask.permvar.qi.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> zeroinitializer, i32 %x3) 37*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i8> @llvm.x86.avx512.mask.permvar.qi.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1) 38*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i8> %res, %res1 39*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i8> %res3, %res2 40*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res4 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmultishift.qb.128(<16 x i8>, <16 x i8>, <16 x i8>, i16) 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmultishift_qb_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) { 46*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmultishift_qb_128: 47*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 48*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf] 49*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmultishiftqb %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x83,0xd1] 50*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmultishiftqb %xmm1, %xmm0, %xmm3 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0x89,0x83,0xd9] 51*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmultishiftqb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf2,0xfd,0x08,0x83,0xc1] 52*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm3, %xmm2, %xmm1 ## encoding: [0x62,0xf1,0x6d,0x08,0xfc,0xcb] 53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfc,0xc0] 54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 55*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.avx512.mask.pmultishift.qb.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) 56*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmultishift.qb.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> zeroinitializer, i16 %x3) 57*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmultishift.qb.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 -1) 58*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i8> %res, %res1 59*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i8> %res3, %res2 60*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res4 61*9880d681SAndroid Build Coastguard Worker} 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pmultishift.qb.256(<32 x i8>, <32 x i8>, <32 x i8>, i32) 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pmultishift_qb_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) { 66*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmultishift_qb_256: 67*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf] 69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmultishiftqb %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x83,0xd1] 70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmultishiftqb %ymm1, %ymm0, %ymm3 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0xa9,0x83,0xd9] 71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpmultishiftqb %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf2,0xfd,0x28,0x83,0xc1] 72*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %ymm3, %ymm2, %ymm1 ## encoding: [0x62,0xf1,0x6d,0x28,0xfc,0xcb] 73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfc,0xc0] 74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 75*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx512.mask.pmultishift.qb.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) 76*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmultishift.qb.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> zeroinitializer, i32 %x3) 77*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i8> @llvm.x86.avx512.mask.pmultishift.qb.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1) 78*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i8> %res, %res1 79*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i8> %res3, %res2 80*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res4 81*9880d681SAndroid Build Coastguard Worker} 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.vpermi2var.qi.128(<16 x i8>, <16 x i8>, <16 x i8>, i16) 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_vpermi2var_qi_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) { 86*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermi2var_qi_128: 87*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf] 89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd9] 90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %xmm2, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x7d,0xda] 91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %xmm2, %xmm0, %xmm1 ## encoding: [0x62,0xf2,0x7d,0x08,0x7d,0xca] 92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm4, %xmm4, %xmm4 ## encoding: [0x62,0xf1,0x5d,0x08,0xef,0xe4] 93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %xmm2, %xmm0, %xmm4 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x7d,0xe2] 94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm4, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x65,0x08,0xfc,0xc4] 95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc1] 96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 97*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.avx512.mask.vpermi2var.qi.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) 98*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i8> @llvm.x86.avx512.mask.vpermi2var.qi.128(<16 x i8> %x0, <16 x i8> zeroinitializer, <16 x i8> %x2, i16 %x3) 99*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i8> @llvm.x86.avx512.mask.vpermi2var.qi.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 -1) 100*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i8> %res, %res1 101*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i8> %res3, %res2 102*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res4 103*9880d681SAndroid Build Coastguard Worker} 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.vpermi2var.qi.256(<32 x i8>, <32 x i8>, <32 x i8>, i32) 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_vpermi2var_qi_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) { 108*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermi2var_qi_256: 109*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf] 111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd9] 112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %ymm2, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x7d,0xda] 113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %ymm2, %ymm0, %ymm1 ## encoding: [0x62,0xf2,0x7d,0x28,0x7d,0xca] 114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm4, %ymm4, %ymm4 ## encoding: [0x62,0xf1,0x5d,0x28,0xef,0xe4] 115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %ymm2, %ymm0, %ymm4 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x7d,0xe2] 116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %ymm4, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x65,0x28,0xfc,0xc4] 117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xfc,0xc1] 118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 119*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx512.mask.vpermi2var.qi.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) 120*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i8> @llvm.x86.avx512.mask.vpermi2var.qi.256(<32 x i8> %x0, <32 x i8> zeroinitializer, <32 x i8> %x2, i32 %x3) 121*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i8> @llvm.x86.avx512.mask.vpermi2var.qi.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1) 122*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i8> %res, %res1 123*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i8> %res3, %res2 124*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res4 125*9880d681SAndroid Build Coastguard Worker} 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.vpermt2var.qi.128(<16 x i8>, <16 x i8>, <16 x i8>, i16) 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_vpermt2var_qi_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) { 130*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermt2var_qi_128: 131*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf] 133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd9] 134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %xmm2, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x7d,0xda] 135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %xmm2, %xmm0, %xmm1 ## encoding: [0x62,0xf2,0x7d,0x08,0x7d,0xca] 136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %xmm4, %xmm4, %xmm4 ## encoding: [0x62,0xf1,0x5d,0x08,0xef,0xe4] 137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %xmm2, %xmm0, %xmm4 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x7d,0xe2] 138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm4, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x65,0x08,0xfc,0xc4] 139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc1] 140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 141*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.avx512.mask.vpermt2var.qi.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) 142*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i8> @llvm.x86.avx512.mask.vpermt2var.qi.128(<16 x i8> %x0, <16 x i8> zeroinitializer, <16 x i8> %x2, i16 %x3) 143*9880d681SAndroid Build Coastguard Worker %res2 = call <16 x i8> @llvm.x86.avx512.mask.vpermt2var.qi.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 -1) 144*9880d681SAndroid Build Coastguard Worker %res3 = add <16 x i8> %res, %res1 145*9880d681SAndroid Build Coastguard Worker %res4 = add <16 x i8> %res3, %res2 146*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res4 147*9880d681SAndroid Build Coastguard Worker} 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.vpermt2var.qi.256(<32 x i8>, <32 x i8>, <32 x i8>, i32) 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_vpermt2var_qi_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) { 152*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermt2var_qi_256: 153*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf] 155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd9] 156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %ymm2, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x7d,0xda] 157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %ymm2, %ymm0, %ymm1 ## encoding: [0x62,0xf2,0x7d,0x28,0x7d,0xca] 158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpxord %ymm4, %ymm4, %ymm4 ## encoding: [0x62,0xf1,0x5d,0x28,0xef,0xe4] 159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %ymm2, %ymm0, %ymm4 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x7d,0xe2] 160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %ymm4, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x65,0x28,0xfc,0xc4] 161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpaddb %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xfc,0xc1] 162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 163*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx512.mask.vpermt2var.qi.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) 164*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i8> @llvm.x86.avx512.mask.vpermt2var.qi.256(<32 x i8> %x0, <32 x i8> zeroinitializer, <32 x i8> %x2, i32 %x3) 165*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i8> @llvm.x86.avx512.mask.vpermt2var.qi.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1) 166*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i8> %res, %res1 167*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i8> %res3, %res2 168*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res4 169*9880d681SAndroid Build Coastguard Worker} 170*9880d681SAndroid Build Coastguard Worker 171*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.maskz.vpermt2var.qi.128(<16 x i8>, <16 x i8>, <16 x i8>, i16) 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_maskz_vpermt2var_qi_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) { 174*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpermt2var_qi_128: 175*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 176*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf] 177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %xmm2, %xmm0, %xmm1 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x7d,0xca] 178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1] 179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 180*9880d681SAndroid Build Coastguard Worker %res = call <16 x i8> @llvm.x86.avx512.maskz.vpermt2var.qi.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) 181*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 182*9880d681SAndroid Build Coastguard Worker} 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.maskz.vpermt2var.qi.256(<32 x i8>, <32 x i8>, <32 x i8>, i32) 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_maskz_vpermt2var_qi_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) { 187*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpermt2var_qi_256: 188*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf] 190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpermt2b %ymm2, %ymm0, %ymm1 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x7d,0xca] 191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1] 192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq ## encoding: [0xc3] 193*9880d681SAndroid Build Coastguard Worker %res = call <32 x i8> @llvm.x86.avx512.maskz.vpermt2var.qi.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) 194*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res 195*9880d681SAndroid Build Coastguard Worker} 196