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=x86_64-apple-darwin -mcpu=knl -mattr=+avx512bw | FileCheck %s --check-prefix=ALL --check-prefix=AVX512BW 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i386-unknown-linux-gnu -mcpu=knl -mattr=+avx512bw | FileCheck %s --check-prefix=ALL --check-prefix=AVX512F-32 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine i64 @test_cmp_b_512(<64 x i8> %a0, <64 x i8> %a1) { 6*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_cmp_b_512: 7*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 8*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpeqb %zmm1, %zmm0, %k0 9*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 10*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpltb %zmm1, %zmm0, %k0 11*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 12*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rax, %rcx 13*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpleb %zmm1, %zmm0, %k0 14*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 15*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rax 16*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpunordb %zmm1, %zmm0, %k0 17*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 18*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rax, %rcx 19*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpneqb %zmm1, %zmm0, %k0 20*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 21*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rax 22*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnltb %zmm1, %zmm0, %k0 23*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 24*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rax, %rcx 25*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnleb %zmm1, %zmm0, %k0 26*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rdx 27*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rdx 28*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpordb %zmm1, %zmm0, %k0 29*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 30*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rdx, %rax 31*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 32*9880d681SAndroid Build Coastguard Worker; 33*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_cmp_b_512: 34*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 35*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: subl $68, %esp 36*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .Ltmp0: 37*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .cfi_def_cfa_offset 72 38*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpeqb %zmm1, %zmm0, %k0 39*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 40*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 41*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %edx 42*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpltb %zmm1, %zmm0, %k0 43*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 44*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 45*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 46*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpleb %zmm1, %zmm0, %k0 47*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 48*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 49*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 50*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpunordb %zmm1, %zmm0, %k0 51*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 52*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 53*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 54*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpneqb %zmm1, %zmm0, %k0 55*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 56*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 57*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 58*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnltb %zmm1, %zmm0, %k0 59*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 60*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 61*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 62*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnleb %zmm1, %zmm0, %k0 63*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 64*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 65*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 66*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpordb %zmm1, %zmm0, %k0 67*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, (%esp) 68*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl (%esp), %eax 69*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 70*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl $68, %esp 71*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 72*9880d681SAndroid Build Coastguard Worker %res0 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 0, i64 -1) 73*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 1, i64 -1) 74*9880d681SAndroid Build Coastguard Worker %ret1 = add i64 %res0, %res1 75*9880d681SAndroid Build Coastguard Worker %res2 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 2, i64 -1) 76*9880d681SAndroid Build Coastguard Worker %ret2 = add i64 %ret1, %res2 77*9880d681SAndroid Build Coastguard Worker %res3 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 3, i64 -1) 78*9880d681SAndroid Build Coastguard Worker %ret3 = add i64 %ret2, %res3 79*9880d681SAndroid Build Coastguard Worker %res4 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 4, i64 -1) 80*9880d681SAndroid Build Coastguard Worker %ret4 = add i64 %ret3, %res4 81*9880d681SAndroid Build Coastguard Worker %res5 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 5, i64 -1) 82*9880d681SAndroid Build Coastguard Worker %ret5 = add i64 %ret4, %res5 83*9880d681SAndroid Build Coastguard Worker %res6 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 6, i64 -1) 84*9880d681SAndroid Build Coastguard Worker %ret6 = add i64 %ret5, %res6 85*9880d681SAndroid Build Coastguard Worker %res7 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 7, i64 -1) 86*9880d681SAndroid Build Coastguard Worker %ret7 = add i64 %ret6, %res7 87*9880d681SAndroid Build Coastguard Worker ret i64 %ret7 88*9880d681SAndroid Build Coastguard Worker} 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Workerdefine i64 @test_mask_cmp_b_512(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) { 91*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_cmp_b_512: 92*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 93*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 94*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpeqb %zmm1, %zmm0, %k0 {%k1} 95*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 96*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpltb %zmm1, %zmm0, %k0 {%k1} 97*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 98*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rax, %rcx 99*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpleb %zmm1, %zmm0, %k0 {%k1} 100*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 101*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rax 102*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpunordb %zmm1, %zmm0, %k0 {%k1} 103*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 104*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rax, %rcx 105*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpneqb %zmm1, %zmm0, %k0 {%k1} 106*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 107*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rax 108*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnltb %zmm1, %zmm0, %k0 {%k1} 109*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 110*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rax, %rcx 111*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnleb %zmm1, %zmm0, %k0 {%k1} 112*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rdx 113*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rdx 114*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpordb %zmm1, %zmm0, %k0 {%k1} 115*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 116*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rdx, %rax 117*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 118*9880d681SAndroid Build Coastguard Worker; 119*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_cmp_b_512: 120*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 121*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: subl $68, %esp 122*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .Ltmp1: 123*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .cfi_def_cfa_offset 72 124*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 125*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 126*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 127*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpeqb %zmm1, %zmm0, %k0 {%k1} 128*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, (%esp) 129*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl (%esp), %eax 130*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %edx 131*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpltb %zmm1, %zmm0, %k0 {%k1} 132*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 133*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 134*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 135*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpleb %zmm1, %zmm0, %k0 {%k1} 136*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 137*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 138*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 139*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpunordb %zmm1, %zmm0, %k0 {%k1} 140*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 141*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 142*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 143*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpneqb %zmm1, %zmm0, %k0 {%k1} 144*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 145*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 146*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 147*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnltb %zmm1, %zmm0, %k0 {%k1} 148*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 149*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 150*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 151*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnleb %zmm1, %zmm0, %k0 {%k1} 152*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 153*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 154*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 155*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpordb %zmm1, %zmm0, %k0 {%k1} 156*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 157*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 158*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 159*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl $68, %esp 160*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 161*9880d681SAndroid Build Coastguard Worker %res0 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 0, i64 %mask) 162*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 1, i64 %mask) 163*9880d681SAndroid Build Coastguard Worker %ret1 = add i64 %res0, %res1 164*9880d681SAndroid Build Coastguard Worker %res2 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 2, i64 %mask) 165*9880d681SAndroid Build Coastguard Worker %ret2 = add i64 %ret1, %res2 166*9880d681SAndroid Build Coastguard Worker %res3 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 3, i64 %mask) 167*9880d681SAndroid Build Coastguard Worker %ret3 = add i64 %ret2, %res3 168*9880d681SAndroid Build Coastguard Worker %res4 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 4, i64 %mask) 169*9880d681SAndroid Build Coastguard Worker %ret4 = add i64 %ret3, %res4 170*9880d681SAndroid Build Coastguard Worker %res5 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 5, i64 %mask) 171*9880d681SAndroid Build Coastguard Worker %ret5 = add i64 %ret4, %res5 172*9880d681SAndroid Build Coastguard Worker %res6 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 6, i64 %mask) 173*9880d681SAndroid Build Coastguard Worker %ret6 = add i64 %ret5, %res6 174*9880d681SAndroid Build Coastguard Worker %res7 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 7, i64 %mask) 175*9880d681SAndroid Build Coastguard Worker %ret7 = add i64 %ret6, %res7 176*9880d681SAndroid Build Coastguard Worker ret i64 %ret7 177*9880d681SAndroid Build Coastguard Worker} 178*9880d681SAndroid Build Coastguard Worker 179*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8>, <64 x i8>, i32, i64) nounwind readnone 180*9880d681SAndroid Build Coastguard Worker 181*9880d681SAndroid Build Coastguard Workerdefine i64 @test_ucmp_b_512(<64 x i8> %a0, <64 x i8> %a1) { 182*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_ucmp_b_512: 183*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 184*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpequb %zmm1, %zmm0, %k0 185*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 186*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpltub %zmm1, %zmm0, %k0 187*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 188*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rax, %rcx 189*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpleub %zmm1, %zmm0, %k0 190*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 191*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rax 192*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpunordub %zmm1, %zmm0, %k0 193*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 194*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rax, %rcx 195*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnequb %zmm1, %zmm0, %k0 196*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 197*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rax 198*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnltub %zmm1, %zmm0, %k0 199*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 200*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rax, %rcx 201*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnleub %zmm1, %zmm0, %k0 202*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rdx 203*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rdx 204*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpordub %zmm1, %zmm0, %k0 205*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 206*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rdx, %rax 207*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 208*9880d681SAndroid Build Coastguard Worker; 209*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_ucmp_b_512: 210*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 211*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: subl $68, %esp 212*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .Ltmp2: 213*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .cfi_def_cfa_offset 72 214*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpequb %zmm1, %zmm0, %k0 215*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 216*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 217*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %edx 218*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpltub %zmm1, %zmm0, %k0 219*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 220*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 221*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 222*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpleub %zmm1, %zmm0, %k0 223*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 224*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 225*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 226*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpunordub %zmm1, %zmm0, %k0 227*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 228*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 229*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 230*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnequb %zmm1, %zmm0, %k0 231*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 232*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 233*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 234*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnltub %zmm1, %zmm0, %k0 235*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 236*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 237*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 238*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnleub %zmm1, %zmm0, %k0 239*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 240*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 241*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 242*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpordub %zmm1, %zmm0, %k0 243*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, (%esp) 244*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl (%esp), %eax 245*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 246*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl $68, %esp 247*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 248*9880d681SAndroid Build Coastguard Worker %res0 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 0, i64 -1) 249*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 1, i64 -1) 250*9880d681SAndroid Build Coastguard Worker %ret1 = add i64 %res0, %res1 251*9880d681SAndroid Build Coastguard Worker %res2 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 2, i64 -1) 252*9880d681SAndroid Build Coastguard Worker %ret2 = add i64 %ret1, %res2 253*9880d681SAndroid Build Coastguard Worker %res3 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 3, i64 -1) 254*9880d681SAndroid Build Coastguard Worker %ret3 = add i64 %ret2, %res3 255*9880d681SAndroid Build Coastguard Worker %res4 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 4, i64 -1) 256*9880d681SAndroid Build Coastguard Worker %ret4 = add i64 %ret3, %res4 257*9880d681SAndroid Build Coastguard Worker %res5 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 5, i64 -1) 258*9880d681SAndroid Build Coastguard Worker %ret5 = add i64 %ret4, %res5 259*9880d681SAndroid Build Coastguard Worker %res6 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 6, i64 -1) 260*9880d681SAndroid Build Coastguard Worker %ret6 = add i64 %ret5, %res6 261*9880d681SAndroid Build Coastguard Worker %res7 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 7, i64 -1) 262*9880d681SAndroid Build Coastguard Worker %ret7 = add i64 %ret6, %res7 263*9880d681SAndroid Build Coastguard Worker ret i64 %ret7 264*9880d681SAndroid Build Coastguard Worker} 265*9880d681SAndroid Build Coastguard Worker 266*9880d681SAndroid Build Coastguard Workerdefine i64 @test_mask_x86_avx512_ucmp_b_512(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) { 267*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_x86_avx512_ucmp_b_512: 268*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 269*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 270*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpequb %zmm1, %zmm0, %k0 {%k1} 271*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 272*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpltub %zmm1, %zmm0, %k0 {%k1} 273*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 274*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rax, %rcx 275*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpleub %zmm1, %zmm0, %k0 {%k1} 276*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 277*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rax 278*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpunordub %zmm1, %zmm0, %k0 {%k1} 279*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 280*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rax, %rcx 281*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnequb %zmm1, %zmm0, %k0 {%k1} 282*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 283*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rax 284*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnltub %zmm1, %zmm0, %k0 {%k1} 285*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 286*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rax, %rcx 287*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnleub %zmm1, %zmm0, %k0 {%k1} 288*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rdx 289*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rdx 290*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpordub %zmm1, %zmm0, %k0 {%k1} 291*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 292*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rdx, %rax 293*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 294*9880d681SAndroid Build Coastguard Worker; 295*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_x86_avx512_ucmp_b_512: 296*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 297*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: subl $68, %esp 298*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .Ltmp3: 299*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .cfi_def_cfa_offset 72 300*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 301*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 302*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 303*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpequb %zmm1, %zmm0, %k0 {%k1} 304*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, (%esp) 305*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl (%esp), %eax 306*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %edx 307*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpltub %zmm1, %zmm0, %k0 {%k1} 308*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 309*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 310*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 311*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpleub %zmm1, %zmm0, %k0 {%k1} 312*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 313*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 314*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 315*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpunordub %zmm1, %zmm0, %k0 {%k1} 316*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 317*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 318*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 319*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnequb %zmm1, %zmm0, %k0 {%k1} 320*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 321*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 322*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 323*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnltub %zmm1, %zmm0, %k0 {%k1} 324*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 325*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 326*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 327*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnleub %zmm1, %zmm0, %k0 {%k1} 328*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 329*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 330*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 331*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpordub %zmm1, %zmm0, %k0 {%k1} 332*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 333*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 334*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 335*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl $68, %esp 336*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 337*9880d681SAndroid Build Coastguard Worker %res0 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 0, i64 %mask) 338*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 1, i64 %mask) 339*9880d681SAndroid Build Coastguard Worker %ret1 = add i64 %res0, %res1 340*9880d681SAndroid Build Coastguard Worker %res2 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 2, i64 %mask) 341*9880d681SAndroid Build Coastguard Worker %ret2 = add i64 %ret1, %res2 342*9880d681SAndroid Build Coastguard Worker %res3 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 3, i64 %mask) 343*9880d681SAndroid Build Coastguard Worker %ret3 = add i64 %ret2, %res3 344*9880d681SAndroid Build Coastguard Worker %res4 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 4, i64 %mask) 345*9880d681SAndroid Build Coastguard Worker %ret4 = add i64 %ret3, %res4 346*9880d681SAndroid Build Coastguard Worker %res5 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 5, i64 %mask) 347*9880d681SAndroid Build Coastguard Worker %ret5 = add i64 %ret4, %res5 348*9880d681SAndroid Build Coastguard Worker %res6 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 6, i64 %mask) 349*9880d681SAndroid Build Coastguard Worker %ret6 = add i64 %ret5, %res6 350*9880d681SAndroid Build Coastguard Worker %res7 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 7, i64 %mask) 351*9880d681SAndroid Build Coastguard Worker %ret7 = add i64 %ret6, %res7 352*9880d681SAndroid Build Coastguard Worker ret i64 %ret7 353*9880d681SAndroid Build Coastguard Worker} 354*9880d681SAndroid Build Coastguard Worker 355*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8>, <64 x i8>, i32, i64) nounwind readnone 356*9880d681SAndroid Build Coastguard Worker 357*9880d681SAndroid Build Coastguard Workerdefine i32 @test_cmp_w_512(<32 x i16> %a0, <32 x i16> %a1) { 358*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_cmp_w_512: 359*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 360*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpeqw %zmm1, %zmm0, %k0 361*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 362*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpltw %zmm1, %zmm0, %k0 363*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 364*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %eax, %ecx 365*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmplew %zmm1, %zmm0, %k0 366*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 367*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %eax 368*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpunordw %zmm1, %zmm0, %k0 369*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 370*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %eax, %ecx 371*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpneqw %zmm1, %zmm0, %k0 372*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 373*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %eax 374*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnltw %zmm1, %zmm0, %k0 375*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 376*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %eax, %ecx 377*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnlew %zmm1, %zmm0, %k0 378*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %edx 379*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %edx 380*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpordw %zmm1, %zmm0, %k0 381*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 382*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %edx, %eax 383*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 384*9880d681SAndroid Build Coastguard Worker; 385*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_cmp_w_512: 386*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 387*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpeqw %zmm1, %zmm0, %k0 388*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 389*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpltw %zmm1, %zmm0, %k0 390*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 391*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %eax, %ecx 392*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmplew %zmm1, %zmm0, %k0 393*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 394*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %eax 395*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpunordw %zmm1, %zmm0, %k0 396*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 397*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %eax, %ecx 398*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpneqw %zmm1, %zmm0, %k0 399*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 400*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %eax 401*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnltw %zmm1, %zmm0, %k0 402*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 403*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %eax, %ecx 404*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnlew %zmm1, %zmm0, %k0 405*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %edx 406*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %edx 407*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpordw %zmm1, %zmm0, %k0 408*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 409*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %edx, %eax 410*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 411*9880d681SAndroid Build Coastguard Worker %res0 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 0, i32 -1) 412*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 1, i32 -1) 413*9880d681SAndroid Build Coastguard Worker %ret1 = add i32 %res0, %res1 414*9880d681SAndroid Build Coastguard Worker %res2 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 2, i32 -1) 415*9880d681SAndroid Build Coastguard Worker %ret2 = add i32 %ret1, %res2 416*9880d681SAndroid Build Coastguard Worker %res3 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 3, i32 -1) 417*9880d681SAndroid Build Coastguard Worker %ret3 = add i32 %ret2, %res3 418*9880d681SAndroid Build Coastguard Worker %res4 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 4, i32 -1) 419*9880d681SAndroid Build Coastguard Worker %ret4 = add i32 %ret3, %res4 420*9880d681SAndroid Build Coastguard Worker %res5 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 5, i32 -1) 421*9880d681SAndroid Build Coastguard Worker %ret5 = add i32 %ret4, %res5 422*9880d681SAndroid Build Coastguard Worker %res6 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 6, i32 -1) 423*9880d681SAndroid Build Coastguard Worker %ret6 = add i32 %ret5, %res6 424*9880d681SAndroid Build Coastguard Worker %res7 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 7, i32 -1) 425*9880d681SAndroid Build Coastguard Worker %ret7 = add i32 %ret6, %res7 426*9880d681SAndroid Build Coastguard Worker ret i32 %ret7 427*9880d681SAndroid Build Coastguard Worker} 428*9880d681SAndroid Build Coastguard Worker 429*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mask_cmp_w_512(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) { 430*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_cmp_w_512: 431*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 432*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 433*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpeqw %zmm1, %zmm0, %k0 {%k1} 434*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 435*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpltw %zmm1, %zmm0, %k0 {%k1} 436*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 437*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %eax, %ecx 438*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmplew %zmm1, %zmm0, %k0 {%k1} 439*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 440*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %eax 441*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpunordw %zmm1, %zmm0, %k0 {%k1} 442*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 443*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %eax, %ecx 444*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpneqw %zmm1, %zmm0, %k0 {%k1} 445*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 446*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %eax 447*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnltw %zmm1, %zmm0, %k0 {%k1} 448*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 449*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %eax, %ecx 450*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnlew %zmm1, %zmm0, %k0 {%k1} 451*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %edx 452*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %edx 453*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpordw %zmm1, %zmm0, %k0 {%k1} 454*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 455*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %edx, %eax 456*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 457*9880d681SAndroid Build Coastguard Worker; 458*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_cmp_w_512: 459*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 460*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 461*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpeqw %zmm1, %zmm0, %k0 {%k1} 462*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 463*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpltw %zmm1, %zmm0, %k0 {%k1} 464*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 465*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %eax, %ecx 466*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmplew %zmm1, %zmm0, %k0 {%k1} 467*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 468*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %eax 469*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpunordw %zmm1, %zmm0, %k0 {%k1} 470*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 471*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %eax, %ecx 472*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpneqw %zmm1, %zmm0, %k0 {%k1} 473*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 474*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %eax 475*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnltw %zmm1, %zmm0, %k0 {%k1} 476*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 477*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %eax, %ecx 478*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnlew %zmm1, %zmm0, %k0 {%k1} 479*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %edx 480*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %edx 481*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpordw %zmm1, %zmm0, %k0 {%k1} 482*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 483*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %edx, %eax 484*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 485*9880d681SAndroid Build Coastguard Worker %res0 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 0, i32 %mask) 486*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 1, i32 %mask) 487*9880d681SAndroid Build Coastguard Worker %ret1 = add i32 %res0, %res1 488*9880d681SAndroid Build Coastguard Worker %res2 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 2, i32 %mask) 489*9880d681SAndroid Build Coastguard Worker %ret2 = add i32 %ret1, %res2 490*9880d681SAndroid Build Coastguard Worker %res3 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 3, i32 %mask) 491*9880d681SAndroid Build Coastguard Worker %ret3 = add i32 %ret2, %res3 492*9880d681SAndroid Build Coastguard Worker %res4 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 4, i32 %mask) 493*9880d681SAndroid Build Coastguard Worker %ret4 = add i32 %ret3, %res4 494*9880d681SAndroid Build Coastguard Worker %res5 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 5, i32 %mask) 495*9880d681SAndroid Build Coastguard Worker %ret5 = add i32 %ret4, %res5 496*9880d681SAndroid Build Coastguard Worker %res6 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 6, i32 %mask) 497*9880d681SAndroid Build Coastguard Worker %ret6 = add i32 %ret5, %res6 498*9880d681SAndroid Build Coastguard Worker %res7 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 7, i32 %mask) 499*9880d681SAndroid Build Coastguard Worker %ret7 = add i32 %ret6, %res7 500*9880d681SAndroid Build Coastguard Worker ret i32 %ret7 501*9880d681SAndroid Build Coastguard Worker} 502*9880d681SAndroid Build Coastguard Worker 503*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16>, <32 x i16>, i32, i32) nounwind readnone 504*9880d681SAndroid Build Coastguard Worker 505*9880d681SAndroid Build Coastguard Workerdefine i32 @test_ucmp_w_512(<32 x i16> %a0, <32 x i16> %a1) { 506*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_ucmp_w_512: 507*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 508*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpequw %zmm1, %zmm0, %k0 509*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 510*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpltuw %zmm1, %zmm0, %k0 511*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 512*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %eax, %ecx 513*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpleuw %zmm1, %zmm0, %k0 514*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 515*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %eax 516*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpunorduw %zmm1, %zmm0, %k0 517*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 518*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %eax, %ecx 519*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnequw %zmm1, %zmm0, %k0 520*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 521*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %eax 522*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnltuw %zmm1, %zmm0, %k0 523*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 524*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %eax, %ecx 525*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnleuw %zmm1, %zmm0, %k0 526*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %edx 527*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %edx 528*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmporduw %zmm1, %zmm0, %k0 529*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 530*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %edx, %eax 531*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 532*9880d681SAndroid Build Coastguard Worker; 533*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_ucmp_w_512: 534*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 535*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpequw %zmm1, %zmm0, %k0 536*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 537*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpltuw %zmm1, %zmm0, %k0 538*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 539*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %eax, %ecx 540*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpleuw %zmm1, %zmm0, %k0 541*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 542*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %eax 543*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpunorduw %zmm1, %zmm0, %k0 544*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 545*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %eax, %ecx 546*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnequw %zmm1, %zmm0, %k0 547*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 548*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %eax 549*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnltuw %zmm1, %zmm0, %k0 550*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 551*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %eax, %ecx 552*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnleuw %zmm1, %zmm0, %k0 553*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %edx 554*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %edx 555*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmporduw %zmm1, %zmm0, %k0 556*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 557*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %edx, %eax 558*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 559*9880d681SAndroid Build Coastguard Worker %res0 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 0, i32 -1) 560*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 1, i32 -1) 561*9880d681SAndroid Build Coastguard Worker %ret1 = add i32 %res0, %res1 562*9880d681SAndroid Build Coastguard Worker %res2 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 2, i32 -1) 563*9880d681SAndroid Build Coastguard Worker %ret2 = add i32 %ret1, %res2 564*9880d681SAndroid Build Coastguard Worker %res3 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 3, i32 -1) 565*9880d681SAndroid Build Coastguard Worker %ret3 = add i32 %ret2, %res3 566*9880d681SAndroid Build Coastguard Worker %res4 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 4, i32 -1) 567*9880d681SAndroid Build Coastguard Worker %ret4 = add i32 %ret3, %res4 568*9880d681SAndroid Build Coastguard Worker %res5 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 5, i32 -1) 569*9880d681SAndroid Build Coastguard Worker %ret5 = add i32 %ret4, %res5 570*9880d681SAndroid Build Coastguard Worker %res6 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 6, i32 -1) 571*9880d681SAndroid Build Coastguard Worker %ret6 = add i32 %ret5, %res6 572*9880d681SAndroid Build Coastguard Worker %res7 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 7, i32 -1) 573*9880d681SAndroid Build Coastguard Worker %ret7 = add i32 %ret6, %res7 574*9880d681SAndroid Build Coastguard Worker ret i32 %ret7 575*9880d681SAndroid Build Coastguard Worker} 576*9880d681SAndroid Build Coastguard Worker 577*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mask_ucmp_w_512(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) { 578*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_ucmp_w_512: 579*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 580*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 581*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpequw %zmm1, %zmm0, %k0 {%k1} 582*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 583*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpltuw %zmm1, %zmm0, %k0 {%k1} 584*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 585*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %eax, %ecx 586*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpleuw %zmm1, %zmm0, %k0 {%k1} 587*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 588*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %eax 589*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpunorduw %zmm1, %zmm0, %k0 {%k1} 590*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 591*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %eax, %ecx 592*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnequw %zmm1, %zmm0, %k0 {%k1} 593*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 594*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %eax 595*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnltuw %zmm1, %zmm0, %k0 {%k1} 596*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 597*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %eax, %ecx 598*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmpnleuw %zmm1, %zmm0, %k0 {%k1} 599*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %edx 600*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %edx 601*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpcmporduw %zmm1, %zmm0, %k0 {%k1} 602*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 603*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %edx, %eax 604*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 605*9880d681SAndroid Build Coastguard Worker; 606*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_ucmp_w_512: 607*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 608*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 609*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpequw %zmm1, %zmm0, %k0 {%k1} 610*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 611*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpltuw %zmm1, %zmm0, %k0 {%k1} 612*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 613*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %eax, %ecx 614*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpleuw %zmm1, %zmm0, %k0 {%k1} 615*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 616*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %eax 617*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpunorduw %zmm1, %zmm0, %k0 {%k1} 618*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 619*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %eax, %ecx 620*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnequw %zmm1, %zmm0, %k0 {%k1} 621*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 622*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %eax 623*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnltuw %zmm1, %zmm0, %k0 {%k1} 624*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 625*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %eax, %ecx 626*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmpnleuw %zmm1, %zmm0, %k0 {%k1} 627*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %edx 628*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %edx 629*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpcmporduw %zmm1, %zmm0, %k0 {%k1} 630*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 631*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %edx, %eax 632*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 633*9880d681SAndroid Build Coastguard Worker %res0 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 0, i32 %mask) 634*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 1, i32 %mask) 635*9880d681SAndroid Build Coastguard Worker %ret1 = add i32 %res0, %res1 636*9880d681SAndroid Build Coastguard Worker %res2 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 2, i32 %mask) 637*9880d681SAndroid Build Coastguard Worker %ret2 = add i32 %ret1, %res2 638*9880d681SAndroid Build Coastguard Worker %res3 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 3, i32 %mask) 639*9880d681SAndroid Build Coastguard Worker %ret3 = add i32 %ret2, %res3 640*9880d681SAndroid Build Coastguard Worker %res4 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 4, i32 %mask) 641*9880d681SAndroid Build Coastguard Worker %ret4 = add i32 %ret3, %res4 642*9880d681SAndroid Build Coastguard Worker %res5 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 5, i32 %mask) 643*9880d681SAndroid Build Coastguard Worker %ret5 = add i32 %ret4, %res5 644*9880d681SAndroid Build Coastguard Worker %res6 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 6, i32 %mask) 645*9880d681SAndroid Build Coastguard Worker %ret6 = add i32 %ret5, %res6 646*9880d681SAndroid Build Coastguard Worker %res7 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 7, i32 %mask) 647*9880d681SAndroid Build Coastguard Worker %ret7 = add i32 %ret6, %res7 648*9880d681SAndroid Build Coastguard Worker ret i32 %ret7 649*9880d681SAndroid Build Coastguard Worker} 650*9880d681SAndroid Build Coastguard Worker 651*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16>, <32 x i16>, i32, i32) nounwind readnone 652*9880d681SAndroid Build Coastguard Worker 653*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rr_512(<16 x i32> %a, <16 x i32> %b) { 654*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rr_512: 655*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 656*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackssdw %zmm1, %zmm0, %zmm0 657*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 658*9880d681SAndroid Build Coastguard Worker; 659*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rr_512: 660*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 661*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackssdw %zmm1, %zmm0, %zmm0 662*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 663*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 -1) 664*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 665*9880d681SAndroid Build Coastguard Worker} 666*9880d681SAndroid Build Coastguard Worker 667*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rrk_512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask) { 668*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rrk_512: 669*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 670*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 671*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackssdw %zmm1, %zmm0, %zmm2 {%k1} 672*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm2, %zmm0 673*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 674*9880d681SAndroid Build Coastguard Worker; 675*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rrk_512: 676*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 677*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 678*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackssdw %zmm1, %zmm0, %zmm2 {%k1} 679*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm2, %zmm0 680*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 681*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask) 682*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 683*9880d681SAndroid Build Coastguard Worker} 684*9880d681SAndroid Build Coastguard Worker 685*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rrkz_512(<16 x i32> %a, <16 x i32> %b, i32 %mask) { 686*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rrkz_512: 687*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 688*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 689*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackssdw %zmm1, %zmm0, %zmm0 {%k1} {z} 690*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 691*9880d681SAndroid Build Coastguard Worker; 692*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rrkz_512: 693*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 694*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 695*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackssdw %zmm1, %zmm0, %zmm0 {%k1} {z} 696*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 697*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 %mask) 698*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 699*9880d681SAndroid Build Coastguard Worker} 700*9880d681SAndroid Build Coastguard Worker 701*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rm_512(<16 x i32> %a, <16 x i32>* %ptr_b) { 702*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rm_512: 703*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 704*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackssdw (%rdi), %zmm0, %zmm0 705*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 706*9880d681SAndroid Build Coastguard Worker; 707*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rm_512: 708*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 709*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 710*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackssdw (%eax), %zmm0, %zmm0 711*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 712*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 713*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 -1) 714*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 715*9880d681SAndroid Build Coastguard Worker} 716*9880d681SAndroid Build Coastguard Worker 717*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rmk_512(<16 x i32> %a, <16 x i32>* %ptr_b, <32 x i16> %passThru, i32 %mask) { 718*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rmk_512: 719*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 720*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 721*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackssdw (%rdi), %zmm0, %zmm1 {%k1} 722*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm0 723*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 724*9880d681SAndroid Build Coastguard Worker; 725*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rmk_512: 726*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 727*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 728*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 729*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackssdw (%eax), %zmm0, %zmm1 {%k1} 730*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm0 731*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 732*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 733*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask) 734*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 735*9880d681SAndroid Build Coastguard Worker} 736*9880d681SAndroid Build Coastguard Worker 737*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rmkz_512(<16 x i32> %a, <16 x i32>* %ptr_b, i32 %mask) { 738*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rmkz_512: 739*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 740*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 741*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackssdw (%rdi), %zmm0, %zmm0 {%k1} {z} 742*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 743*9880d681SAndroid Build Coastguard Worker; 744*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rmkz_512: 745*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 746*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 747*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 748*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackssdw (%eax), %zmm0, %zmm0 {%k1} {z} 749*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 750*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 751*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 %mask) 752*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 753*9880d681SAndroid Build Coastguard Worker} 754*9880d681SAndroid Build Coastguard Worker 755*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rmb_512(<16 x i32> %a, i32* %ptr_b) { 756*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rmb_512: 757*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 758*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackssdw (%rdi){1to16}, %zmm0, %zmm0 759*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 760*9880d681SAndroid Build Coastguard Worker; 761*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rmb_512: 762*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 763*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 764*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackssdw (%eax){1to16}, %zmm0, %zmm0 765*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 766*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 767*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 768*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 769*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 -1) 770*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 771*9880d681SAndroid Build Coastguard Worker} 772*9880d681SAndroid Build Coastguard Worker 773*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rmbk_512(<16 x i32> %a, i32* %ptr_b, <32 x i16> %passThru, i32 %mask) { 774*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rmbk_512: 775*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 776*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 777*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackssdw (%rdi){1to16}, %zmm0, %zmm1 {%k1} 778*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm0 779*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 780*9880d681SAndroid Build Coastguard Worker; 781*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rmbk_512: 782*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 783*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 784*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 785*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackssdw (%eax){1to16}, %zmm0, %zmm1 {%k1} 786*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm0 787*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 788*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 789*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 790*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 791*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask) 792*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 793*9880d681SAndroid Build Coastguard Worker} 794*9880d681SAndroid Build Coastguard Worker 795*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rmbkz_512(<16 x i32> %a, i32* %ptr_b, i32 %mask) { 796*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rmbkz_512: 797*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 798*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 799*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackssdw (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z} 800*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 801*9880d681SAndroid Build Coastguard Worker; 802*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rmbkz_512: 803*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 804*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 805*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 806*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackssdw (%eax){1to16}, %zmm0, %zmm0 {%k1} {z} 807*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 808*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 809*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 810*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 811*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 %mask) 812*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 813*9880d681SAndroid Build Coastguard Worker} 814*9880d681SAndroid Build Coastguard Worker 815*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32>, <16 x i32>, <32 x i16>, i32) 816*9880d681SAndroid Build Coastguard Worker 817*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packs_epi16_rr_512(<32 x i16> %a, <32 x i16> %b) { 818*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi16_rr_512: 819*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 820*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpacksswb %zmm1, %zmm0, %zmm0 821*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 822*9880d681SAndroid Build Coastguard Worker; 823*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi16_rr_512: 824*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 825*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpacksswb %zmm1, %zmm0, %zmm0 826*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 827*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 -1) 828*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 829*9880d681SAndroid Build Coastguard Worker} 830*9880d681SAndroid Build Coastguard Worker 831*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packs_epi16_rrk_512(<32 x i16> %a, <32 x i16> %b, <64 x i8> %passThru, i64 %mask) { 832*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi16_rrk_512: 833*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 834*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 835*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpacksswb %zmm1, %zmm0, %zmm2 {%k1} 836*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm2, %zmm0 837*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 838*9880d681SAndroid Build Coastguard Worker; 839*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi16_rrk_512: 840*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 841*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 842*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 843*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 844*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpacksswb %zmm1, %zmm0, %zmm2 {%k1} 845*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm2, %zmm0 846*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 847*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> %passThru, i64 %mask) 848*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 849*9880d681SAndroid Build Coastguard Worker} 850*9880d681SAndroid Build Coastguard Worker 851*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packs_epi16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i64 %mask) { 852*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi16_rrkz_512: 853*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 854*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 855*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpacksswb %zmm1, %zmm0, %zmm0 {%k1} {z} 856*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 857*9880d681SAndroid Build Coastguard Worker; 858*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi16_rrkz_512: 859*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 860*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 861*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 862*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 863*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpacksswb %zmm1, %zmm0, %zmm0 {%k1} {z} 864*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 865*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 %mask) 866*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 867*9880d681SAndroid Build Coastguard Worker} 868*9880d681SAndroid Build Coastguard Worker 869*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packs_epi16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) { 870*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi16_rm_512: 871*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 872*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpacksswb (%rdi), %zmm0, %zmm0 873*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 874*9880d681SAndroid Build Coastguard Worker; 875*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi16_rm_512: 876*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 877*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 878*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpacksswb (%eax), %zmm0, %zmm0 879*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 880*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 881*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 -1) 882*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 883*9880d681SAndroid Build Coastguard Worker} 884*9880d681SAndroid Build Coastguard Worker 885*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packs_epi16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <64 x i8> %passThru, i64 %mask) { 886*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi16_rmk_512: 887*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 888*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rsi, %k1 889*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpacksswb (%rdi), %zmm0, %zmm1 {%k1} 890*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm0 891*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 892*9880d681SAndroid Build Coastguard Worker; 893*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi16_rmk_512: 894*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 895*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 896*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 897*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 898*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 899*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpacksswb (%eax), %zmm0, %zmm1 {%k1} 900*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm0 901*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 902*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 903*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> %passThru, i64 %mask) 904*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 905*9880d681SAndroid Build Coastguard Worker} 906*9880d681SAndroid Build Coastguard Worker 907*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packs_epi16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i64 %mask) { 908*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi16_rmkz_512: 909*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 910*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rsi, %k1 911*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpacksswb (%rdi), %zmm0, %zmm0 {%k1} {z} 912*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 913*9880d681SAndroid Build Coastguard Worker; 914*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi16_rmkz_512: 915*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 916*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 917*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 918*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 919*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 920*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpacksswb (%eax), %zmm0, %zmm0 {%k1} {z} 921*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 922*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 923*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 %mask) 924*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 925*9880d681SAndroid Build Coastguard Worker} 926*9880d681SAndroid Build Coastguard Worker 927*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16>, <32 x i16>, <64 x i8>, i64) 928*9880d681SAndroid Build Coastguard Worker 929*9880d681SAndroid Build Coastguard Worker 930*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rr_512(<16 x i32> %a, <16 x i32> %b) { 931*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rr_512: 932*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 933*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackusdw %zmm1, %zmm0, %zmm0 934*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 935*9880d681SAndroid Build Coastguard Worker; 936*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rr_512: 937*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 938*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackusdw %zmm1, %zmm0, %zmm0 939*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 940*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 -1) 941*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 942*9880d681SAndroid Build Coastguard Worker} 943*9880d681SAndroid Build Coastguard Worker 944*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rrk_512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask) { 945*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rrk_512: 946*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 947*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 948*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackusdw %zmm1, %zmm0, %zmm2 {%k1} 949*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm2, %zmm0 950*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 951*9880d681SAndroid Build Coastguard Worker; 952*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rrk_512: 953*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 954*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 955*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackusdw %zmm1, %zmm0, %zmm2 {%k1} 956*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm2, %zmm0 957*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 958*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask) 959*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 960*9880d681SAndroid Build Coastguard Worker} 961*9880d681SAndroid Build Coastguard Worker 962*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rrkz_512(<16 x i32> %a, <16 x i32> %b, i32 %mask) { 963*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rrkz_512: 964*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 965*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 966*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackusdw %zmm1, %zmm0, %zmm0 {%k1} {z} 967*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 968*9880d681SAndroid Build Coastguard Worker; 969*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rrkz_512: 970*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 971*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 972*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackusdw %zmm1, %zmm0, %zmm0 {%k1} {z} 973*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 974*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 %mask) 975*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 976*9880d681SAndroid Build Coastguard Worker} 977*9880d681SAndroid Build Coastguard Worker 978*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rm_512(<16 x i32> %a, <16 x i32>* %ptr_b) { 979*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rm_512: 980*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 981*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackusdw (%rdi), %zmm0, %zmm0 982*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 983*9880d681SAndroid Build Coastguard Worker; 984*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rm_512: 985*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 986*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 987*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackusdw (%eax), %zmm0, %zmm0 988*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 989*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 990*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 -1) 991*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 992*9880d681SAndroid Build Coastguard Worker} 993*9880d681SAndroid Build Coastguard Worker 994*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rmk_512(<16 x i32> %a, <16 x i32>* %ptr_b, <32 x i16> %passThru, i32 %mask) { 995*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rmk_512: 996*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 997*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 998*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackusdw (%rdi), %zmm0, %zmm1 {%k1} 999*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm0 1000*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1001*9880d681SAndroid Build Coastguard Worker; 1002*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rmk_512: 1003*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1004*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1005*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1006*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackusdw (%eax), %zmm0, %zmm1 {%k1} 1007*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm0 1008*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1009*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 1010*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask) 1011*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1012*9880d681SAndroid Build Coastguard Worker} 1013*9880d681SAndroid Build Coastguard Worker 1014*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rmkz_512(<16 x i32> %a, <16 x i32>* %ptr_b, i32 %mask) { 1015*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rmkz_512: 1016*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1017*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 1018*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackusdw (%rdi), %zmm0, %zmm0 {%k1} {z} 1019*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1020*9880d681SAndroid Build Coastguard Worker; 1021*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rmkz_512: 1022*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1023*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1024*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1025*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackusdw (%eax), %zmm0, %zmm0 {%k1} {z} 1026*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1027*9880d681SAndroid Build Coastguard Worker %b = load <16 x i32>, <16 x i32>* %ptr_b 1028*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 %mask) 1029*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1030*9880d681SAndroid Build Coastguard Worker} 1031*9880d681SAndroid Build Coastguard Worker 1032*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rmb_512(<16 x i32> %a, i32* %ptr_b) { 1033*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rmb_512: 1034*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1035*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackusdw (%rdi){1to16}, %zmm0, %zmm0 1036*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1037*9880d681SAndroid Build Coastguard Worker; 1038*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rmb_512: 1039*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1040*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1041*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackusdw (%eax){1to16}, %zmm0, %zmm0 1042*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1043*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 1044*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 1045*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 1046*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 -1) 1047*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1048*9880d681SAndroid Build Coastguard Worker} 1049*9880d681SAndroid Build Coastguard Worker 1050*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rmbk_512(<16 x i32> %a, i32* %ptr_b, <32 x i16> %passThru, i32 %mask) { 1051*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rmbk_512: 1052*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1053*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 1054*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackusdw (%rdi){1to16}, %zmm0, %zmm1 {%k1} 1055*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm0 1056*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1057*9880d681SAndroid Build Coastguard Worker; 1058*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rmbk_512: 1059*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1060*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1061*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1062*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackusdw (%eax){1to16}, %zmm0, %zmm1 {%k1} 1063*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm0 1064*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1065*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 1066*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 1067*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 1068*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask) 1069*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1070*9880d681SAndroid Build Coastguard Worker} 1071*9880d681SAndroid Build Coastguard Worker 1072*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rmbkz_512(<16 x i32> %a, i32* %ptr_b, i32 %mask) { 1073*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rmbkz_512: 1074*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1075*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 1076*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackusdw (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z} 1077*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1078*9880d681SAndroid Build Coastguard Worker; 1079*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rmbkz_512: 1080*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1081*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1082*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1083*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackusdw (%eax){1to16}, %zmm0, %zmm0 {%k1} {z} 1084*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1085*9880d681SAndroid Build Coastguard Worker %q = load i32, i32* %ptr_b 1086*9880d681SAndroid Build Coastguard Worker %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0 1087*9880d681SAndroid Build Coastguard Worker %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer 1088*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 %mask) 1089*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1090*9880d681SAndroid Build Coastguard Worker} 1091*9880d681SAndroid Build Coastguard Worker 1092*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32>, <16 x i32>, <32 x i16>, i32) 1093*9880d681SAndroid Build Coastguard Worker 1094*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packus_epi16_rr_512(<32 x i16> %a, <32 x i16> %b) { 1095*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi16_rr_512: 1096*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1097*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackuswb %zmm1, %zmm0, %zmm0 1098*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1099*9880d681SAndroid Build Coastguard Worker; 1100*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi16_rr_512: 1101*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1102*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackuswb %zmm1, %zmm0, %zmm0 1103*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1104*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 -1) 1105*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 1106*9880d681SAndroid Build Coastguard Worker} 1107*9880d681SAndroid Build Coastguard Worker 1108*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packus_epi16_rrk_512(<32 x i16> %a, <32 x i16> %b, <64 x i8> %passThru, i64 %mask) { 1109*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi16_rrk_512: 1110*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1111*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 1112*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackuswb %zmm1, %zmm0, %zmm2 {%k1} 1113*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm2, %zmm0 1114*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1115*9880d681SAndroid Build Coastguard Worker; 1116*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi16_rrk_512: 1117*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1118*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 1119*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1120*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 1121*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackuswb %zmm1, %zmm0, %zmm2 {%k1} 1122*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm2, %zmm0 1123*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1124*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> %passThru, i64 %mask) 1125*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 1126*9880d681SAndroid Build Coastguard Worker} 1127*9880d681SAndroid Build Coastguard Worker 1128*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packus_epi16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i64 %mask) { 1129*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi16_rrkz_512: 1130*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1131*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 1132*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackuswb %zmm1, %zmm0, %zmm0 {%k1} {z} 1133*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1134*9880d681SAndroid Build Coastguard Worker; 1135*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi16_rrkz_512: 1136*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1137*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 1138*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1139*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 1140*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackuswb %zmm1, %zmm0, %zmm0 {%k1} {z} 1141*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1142*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 %mask) 1143*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 1144*9880d681SAndroid Build Coastguard Worker} 1145*9880d681SAndroid Build Coastguard Worker 1146*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packus_epi16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) { 1147*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi16_rm_512: 1148*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1149*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackuswb (%rdi), %zmm0, %zmm0 1150*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1151*9880d681SAndroid Build Coastguard Worker; 1152*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi16_rm_512: 1153*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1154*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1155*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackuswb (%eax), %zmm0, %zmm0 1156*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1157*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1158*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 -1) 1159*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 1160*9880d681SAndroid Build Coastguard Worker} 1161*9880d681SAndroid Build Coastguard Worker 1162*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packus_epi16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <64 x i8> %passThru, i64 %mask) { 1163*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi16_rmk_512: 1164*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1165*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rsi, %k1 1166*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackuswb (%rdi), %zmm0, %zmm1 {%k1} 1167*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm0 1168*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1169*9880d681SAndroid Build Coastguard Worker; 1170*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi16_rmk_512: 1171*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1172*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1173*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 1174*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1175*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 1176*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackuswb (%eax), %zmm0, %zmm1 {%k1} 1177*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm0 1178*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1179*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1180*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> %passThru, i64 %mask) 1181*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 1182*9880d681SAndroid Build Coastguard Worker} 1183*9880d681SAndroid Build Coastguard Worker 1184*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packus_epi16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i64 %mask) { 1185*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi16_rmkz_512: 1186*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1187*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rsi, %k1 1188*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpackuswb (%rdi), %zmm0, %zmm0 {%k1} {z} 1189*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1190*9880d681SAndroid Build Coastguard Worker; 1191*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi16_rmkz_512: 1192*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1193*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1194*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 1195*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1196*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 1197*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpackuswb (%eax), %zmm0, %zmm0 {%k1} {z} 1198*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1199*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1200*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 %mask) 1201*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 1202*9880d681SAndroid Build Coastguard Worker} 1203*9880d681SAndroid Build Coastguard Worker 1204*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16>, <32 x i16>, <64 x i8>, i64) 1205*9880d681SAndroid Build Coastguard Worker 1206*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epi16_rr_512(<32 x i16> %a, <32 x i16> %b) { 1207*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epi16_rr_512: 1208*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1209*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddsw %zmm1, %zmm0, %zmm0 1210*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1211*9880d681SAndroid Build Coastguard Worker; 1212*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epi16_rr_512: 1213*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1214*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddsw %zmm1, %zmm0, %zmm0 1215*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1216*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1) 1217*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1218*9880d681SAndroid Build Coastguard Worker} 1219*9880d681SAndroid Build Coastguard Worker 1220*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epi16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) { 1221*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epi16_rrk_512: 1222*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1223*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1224*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddsw %zmm1, %zmm0, %zmm2 {%k1} 1225*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm2, %zmm0 1226*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1227*9880d681SAndroid Build Coastguard Worker; 1228*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epi16_rrk_512: 1229*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1230*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1231*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddsw %zmm1, %zmm0, %zmm2 {%k1} 1232*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm2, %zmm0 1233*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1234*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) 1235*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1236*9880d681SAndroid Build Coastguard Worker} 1237*9880d681SAndroid Build Coastguard Worker 1238*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epi16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) { 1239*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epi16_rrkz_512: 1240*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1241*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1242*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddsw %zmm1, %zmm0, %zmm0 {%k1} {z} 1243*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1244*9880d681SAndroid Build Coastguard Worker; 1245*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epi16_rrkz_512: 1246*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1247*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1248*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddsw %zmm1, %zmm0, %zmm0 {%k1} {z} 1249*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1250*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) 1251*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1252*9880d681SAndroid Build Coastguard Worker} 1253*9880d681SAndroid Build Coastguard Worker 1254*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epi16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) { 1255*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epi16_rm_512: 1256*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1257*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddsw (%rdi), %zmm0, %zmm0 1258*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1259*9880d681SAndroid Build Coastguard Worker; 1260*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epi16_rm_512: 1261*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1262*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1263*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddsw (%eax), %zmm0, %zmm0 1264*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1265*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1266*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1) 1267*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1268*9880d681SAndroid Build Coastguard Worker} 1269*9880d681SAndroid Build Coastguard Worker 1270*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epi16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) { 1271*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epi16_rmk_512: 1272*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1273*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 1274*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddsw (%rdi), %zmm0, %zmm1 {%k1} 1275*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm0 1276*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1277*9880d681SAndroid Build Coastguard Worker; 1278*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epi16_rmk_512: 1279*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1280*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1281*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1282*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddsw (%eax), %zmm0, %zmm1 {%k1} 1283*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm0 1284*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1285*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1286*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) 1287*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1288*9880d681SAndroid Build Coastguard Worker} 1289*9880d681SAndroid Build Coastguard Worker 1290*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epi16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) { 1291*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epi16_rmkz_512: 1292*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1293*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 1294*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddsw (%rdi), %zmm0, %zmm0 {%k1} {z} 1295*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1296*9880d681SAndroid Build Coastguard Worker; 1297*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epi16_rmkz_512: 1298*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1299*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1300*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1301*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddsw (%eax), %zmm0, %zmm0 {%k1} {z} 1302*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1303*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1304*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) 1305*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1306*9880d681SAndroid Build Coastguard Worker} 1307*9880d681SAndroid Build Coastguard Worker 1308*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 1309*9880d681SAndroid Build Coastguard Worker 1310*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epi16_rr_512(<32 x i16> %a, <32 x i16> %b) { 1311*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epi16_rr_512: 1312*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1313*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsubsw %zmm1, %zmm0, %zmm0 1314*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1315*9880d681SAndroid Build Coastguard Worker; 1316*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epi16_rr_512: 1317*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1318*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsubsw %zmm1, %zmm0, %zmm0 1319*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1320*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1) 1321*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1322*9880d681SAndroid Build Coastguard Worker} 1323*9880d681SAndroid Build Coastguard Worker 1324*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epi16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) { 1325*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epi16_rrk_512: 1326*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1327*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1328*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsubsw %zmm1, %zmm0, %zmm2 {%k1} 1329*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm2, %zmm0 1330*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1331*9880d681SAndroid Build Coastguard Worker; 1332*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epi16_rrk_512: 1333*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1334*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1335*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsubsw %zmm1, %zmm0, %zmm2 {%k1} 1336*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm2, %zmm0 1337*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1338*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) 1339*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1340*9880d681SAndroid Build Coastguard Worker} 1341*9880d681SAndroid Build Coastguard Worker 1342*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epi16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) { 1343*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epi16_rrkz_512: 1344*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1345*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1346*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsubsw %zmm1, %zmm0, %zmm0 {%k1} {z} 1347*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1348*9880d681SAndroid Build Coastguard Worker; 1349*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epi16_rrkz_512: 1350*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1351*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1352*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsubsw %zmm1, %zmm0, %zmm0 {%k1} {z} 1353*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1354*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) 1355*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1356*9880d681SAndroid Build Coastguard Worker} 1357*9880d681SAndroid Build Coastguard Worker 1358*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epi16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) { 1359*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epi16_rm_512: 1360*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1361*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsubsw (%rdi), %zmm0, %zmm0 1362*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1363*9880d681SAndroid Build Coastguard Worker; 1364*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epi16_rm_512: 1365*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1366*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1367*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsubsw (%eax), %zmm0, %zmm0 1368*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1369*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1370*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1) 1371*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1372*9880d681SAndroid Build Coastguard Worker} 1373*9880d681SAndroid Build Coastguard Worker 1374*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epi16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) { 1375*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epi16_rmk_512: 1376*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1377*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 1378*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsubsw (%rdi), %zmm0, %zmm1 {%k1} 1379*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm0 1380*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1381*9880d681SAndroid Build Coastguard Worker; 1382*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epi16_rmk_512: 1383*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1384*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1385*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1386*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsubsw (%eax), %zmm0, %zmm1 {%k1} 1387*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm0 1388*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1389*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1390*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) 1391*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1392*9880d681SAndroid Build Coastguard Worker} 1393*9880d681SAndroid Build Coastguard Worker 1394*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epi16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) { 1395*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epi16_rmkz_512: 1396*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1397*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 1398*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsubsw (%rdi), %zmm0, %zmm0 {%k1} {z} 1399*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1400*9880d681SAndroid Build Coastguard Worker; 1401*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epi16_rmkz_512: 1402*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1403*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1404*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1405*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsubsw (%eax), %zmm0, %zmm0 {%k1} {z} 1406*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1407*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1408*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) 1409*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1410*9880d681SAndroid Build Coastguard Worker} 1411*9880d681SAndroid Build Coastguard Worker 1412*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 1413*9880d681SAndroid Build Coastguard Worker 1414*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epu16_rr_512(<32 x i16> %a, <32 x i16> %b) { 1415*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epu16_rr_512: 1416*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1417*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddusw %zmm1, %zmm0, %zmm0 1418*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1419*9880d681SAndroid Build Coastguard Worker; 1420*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epu16_rr_512: 1421*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1422*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddusw %zmm1, %zmm0, %zmm0 1423*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1424*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1) 1425*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1426*9880d681SAndroid Build Coastguard Worker} 1427*9880d681SAndroid Build Coastguard Worker 1428*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epu16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) { 1429*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epu16_rrk_512: 1430*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1431*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1432*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddusw %zmm1, %zmm0, %zmm2 {%k1} 1433*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm2, %zmm0 1434*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1435*9880d681SAndroid Build Coastguard Worker; 1436*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epu16_rrk_512: 1437*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1438*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1439*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddusw %zmm1, %zmm0, %zmm2 {%k1} 1440*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm2, %zmm0 1441*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1442*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) 1443*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1444*9880d681SAndroid Build Coastguard Worker} 1445*9880d681SAndroid Build Coastguard Worker 1446*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epu16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) { 1447*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epu16_rrkz_512: 1448*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1449*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1450*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddusw %zmm1, %zmm0, %zmm0 {%k1} {z} 1451*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1452*9880d681SAndroid Build Coastguard Worker; 1453*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epu16_rrkz_512: 1454*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1455*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1456*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddusw %zmm1, %zmm0, %zmm0 {%k1} {z} 1457*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1458*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) 1459*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1460*9880d681SAndroid Build Coastguard Worker} 1461*9880d681SAndroid Build Coastguard Worker 1462*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epu16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) { 1463*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epu16_rm_512: 1464*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1465*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddusw (%rdi), %zmm0, %zmm0 1466*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1467*9880d681SAndroid Build Coastguard Worker; 1468*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epu16_rm_512: 1469*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1470*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1471*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddusw (%eax), %zmm0, %zmm0 1472*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1473*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1474*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1) 1475*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1476*9880d681SAndroid Build Coastguard Worker} 1477*9880d681SAndroid Build Coastguard Worker 1478*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epu16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) { 1479*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epu16_rmk_512: 1480*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1481*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 1482*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddusw (%rdi), %zmm0, %zmm1 {%k1} 1483*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm0 1484*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1485*9880d681SAndroid Build Coastguard Worker; 1486*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epu16_rmk_512: 1487*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1488*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1489*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1490*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddusw (%eax), %zmm0, %zmm1 {%k1} 1491*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm0 1492*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1493*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1494*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) 1495*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1496*9880d681SAndroid Build Coastguard Worker} 1497*9880d681SAndroid Build Coastguard Worker 1498*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epu16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) { 1499*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epu16_rmkz_512: 1500*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1501*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 1502*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddusw (%rdi), %zmm0, %zmm0 {%k1} {z} 1503*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1504*9880d681SAndroid Build Coastguard Worker; 1505*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epu16_rmkz_512: 1506*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1507*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1508*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1509*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddusw (%eax), %zmm0, %zmm0 {%k1} {z} 1510*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1511*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1512*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) 1513*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1514*9880d681SAndroid Build Coastguard Worker} 1515*9880d681SAndroid Build Coastguard Worker 1516*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 1517*9880d681SAndroid Build Coastguard Worker 1518*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epu16_rr_512(<32 x i16> %a, <32 x i16> %b) { 1519*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epu16_rr_512: 1520*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1521*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsubusw %zmm1, %zmm0, %zmm0 1522*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1523*9880d681SAndroid Build Coastguard Worker; 1524*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epu16_rr_512: 1525*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1526*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsubusw %zmm1, %zmm0, %zmm0 1527*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1528*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1) 1529*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1530*9880d681SAndroid Build Coastguard Worker} 1531*9880d681SAndroid Build Coastguard Worker 1532*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epu16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) { 1533*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epu16_rrk_512: 1534*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1535*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1536*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsubusw %zmm1, %zmm0, %zmm2 {%k1} 1537*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm2, %zmm0 1538*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1539*9880d681SAndroid Build Coastguard Worker; 1540*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epu16_rrk_512: 1541*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1542*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1543*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsubusw %zmm1, %zmm0, %zmm2 {%k1} 1544*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm2, %zmm0 1545*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1546*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) 1547*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1548*9880d681SAndroid Build Coastguard Worker} 1549*9880d681SAndroid Build Coastguard Worker 1550*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epu16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) { 1551*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epu16_rrkz_512: 1552*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1553*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1554*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsubusw %zmm1, %zmm0, %zmm0 {%k1} {z} 1555*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1556*9880d681SAndroid Build Coastguard Worker; 1557*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epu16_rrkz_512: 1558*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1559*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1560*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsubusw %zmm1, %zmm0, %zmm0 {%k1} {z} 1561*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1562*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) 1563*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1564*9880d681SAndroid Build Coastguard Worker} 1565*9880d681SAndroid Build Coastguard Worker 1566*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epu16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) { 1567*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epu16_rm_512: 1568*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1569*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsubusw (%rdi), %zmm0, %zmm0 1570*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1571*9880d681SAndroid Build Coastguard Worker; 1572*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epu16_rm_512: 1573*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1574*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1575*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsubusw (%eax), %zmm0, %zmm0 1576*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1577*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1578*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1) 1579*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1580*9880d681SAndroid Build Coastguard Worker} 1581*9880d681SAndroid Build Coastguard Worker 1582*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epu16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) { 1583*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epu16_rmk_512: 1584*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1585*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 1586*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsubusw (%rdi), %zmm0, %zmm1 {%k1} 1587*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm0 1588*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1589*9880d681SAndroid Build Coastguard Worker; 1590*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epu16_rmk_512: 1591*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1592*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1593*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1594*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsubusw (%eax), %zmm0, %zmm1 {%k1} 1595*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm0 1596*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1597*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1598*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) 1599*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1600*9880d681SAndroid Build Coastguard Worker} 1601*9880d681SAndroid Build Coastguard Worker 1602*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epu16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) { 1603*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epu16_rmkz_512: 1604*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1605*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 1606*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsubusw (%rdi), %zmm0, %zmm0 {%k1} {z} 1607*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1608*9880d681SAndroid Build Coastguard Worker; 1609*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epu16_rmkz_512: 1610*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1611*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 1612*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1613*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsubusw (%eax), %zmm0, %zmm0 {%k1} {z} 1614*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1615*9880d681SAndroid Build Coastguard Worker %b = load <32 x i16>, <32 x i16>* %ptr_b 1616*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask) 1617*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 1618*9880d681SAndroid Build Coastguard Worker} 1619*9880d681SAndroid Build Coastguard Worker 1620*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 1621*9880d681SAndroid Build Coastguard Worker 1622*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pmaxs.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64) 1623*9880d681SAndroid Build Coastguard Worker 1624*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pmaxs_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) { 1625*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmaxs_b_512: 1626*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1627*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 1628*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmaxsb %zmm1, %zmm0, %zmm2 {%k1} 1629*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmaxsb %zmm1, %zmm0, %zmm0 1630*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %zmm0, %zmm2, %zmm0 1631*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1632*9880d681SAndroid Build Coastguard Worker; 1633*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmaxs_b_512: 1634*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1635*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 1636*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1637*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 1638*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmaxsb %zmm1, %zmm0, %zmm2 {%k1} 1639*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmaxsb %zmm1, %zmm0, %zmm0 1640*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %zmm0, %zmm2, %zmm0 1641*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1642*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.pmaxs.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) 1643*9880d681SAndroid Build Coastguard Worker %res1 = call <64 x i8> @llvm.x86.avx512.mask.pmaxs.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1) 1644*9880d681SAndroid Build Coastguard Worker %res2 = add <64 x i8> %res, %res1 1645*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res2 1646*9880d681SAndroid Build Coastguard Worker} 1647*9880d681SAndroid Build Coastguard Worker 1648*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmaxs.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 1649*9880d681SAndroid Build Coastguard Worker 1650*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmaxs_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 1651*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmaxs_w_512: 1652*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1653*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1654*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmaxsw %zmm1, %zmm0, %zmm2 {%k1} 1655*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmaxsw %zmm1, %zmm0, %zmm0 1656*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm2, %zmm0 1657*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1658*9880d681SAndroid Build Coastguard Worker; 1659*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmaxs_w_512: 1660*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1661*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1662*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmaxsw %zmm1, %zmm0, %zmm2 {%k1} 1663*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmaxsw %zmm1, %zmm0, %zmm0 1664*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm2, %zmm0 1665*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1666*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pmaxs.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 1667*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmaxs.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 1668*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 1669*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 1670*9880d681SAndroid Build Coastguard Worker} 1671*9880d681SAndroid Build Coastguard Worker 1672*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pmaxu.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64) 1673*9880d681SAndroid Build Coastguard Worker 1674*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pmaxu_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) { 1675*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmaxu_b_512: 1676*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1677*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 1678*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmaxub %zmm1, %zmm0, %zmm2 {%k1} 1679*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmaxub %zmm1, %zmm0, %zmm0 1680*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %zmm0, %zmm2, %zmm0 1681*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1682*9880d681SAndroid Build Coastguard Worker; 1683*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmaxu_b_512: 1684*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1685*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 1686*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1687*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 1688*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmaxub %zmm1, %zmm0, %zmm2 {%k1} 1689*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmaxub %zmm1, %zmm0, %zmm0 1690*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %zmm0, %zmm2, %zmm0 1691*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1692*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.pmaxu.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) 1693*9880d681SAndroid Build Coastguard Worker %res1 = call <64 x i8> @llvm.x86.avx512.mask.pmaxu.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1) 1694*9880d681SAndroid Build Coastguard Worker %res2 = add <64 x i8> %res, %res1 1695*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res2 1696*9880d681SAndroid Build Coastguard Worker} 1697*9880d681SAndroid Build Coastguard Worker 1698*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmaxu.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 1699*9880d681SAndroid Build Coastguard Worker 1700*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmaxu_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 1701*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmaxu_w_512: 1702*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1703*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1704*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmaxuw %zmm1, %zmm0, %zmm2 {%k1} 1705*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmaxuw %zmm1, %zmm0, %zmm0 1706*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm2, %zmm0 1707*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1708*9880d681SAndroid Build Coastguard Worker; 1709*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmaxu_w_512: 1710*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1711*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1712*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmaxuw %zmm1, %zmm0, %zmm2 {%k1} 1713*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmaxuw %zmm1, %zmm0, %zmm0 1714*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm2, %zmm0 1715*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1716*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pmaxu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 1717*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmaxu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 1718*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 1719*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 1720*9880d681SAndroid Build Coastguard Worker} 1721*9880d681SAndroid Build Coastguard Worker 1722*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pmins.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64) 1723*9880d681SAndroid Build Coastguard Worker 1724*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pmins_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) { 1725*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmins_b_512: 1726*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1727*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 1728*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpminsb %zmm1, %zmm0, %zmm2 {%k1} 1729*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpminsb %zmm1, %zmm0, %zmm0 1730*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %zmm0, %zmm2, %zmm0 1731*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1732*9880d681SAndroid Build Coastguard Worker; 1733*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmins_b_512: 1734*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1735*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 1736*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1737*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 1738*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpminsb %zmm1, %zmm0, %zmm2 {%k1} 1739*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpminsb %zmm1, %zmm0, %zmm0 1740*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %zmm0, %zmm2, %zmm0 1741*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1742*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.pmins.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) 1743*9880d681SAndroid Build Coastguard Worker %res1 = call <64 x i8> @llvm.x86.avx512.mask.pmins.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1) 1744*9880d681SAndroid Build Coastguard Worker %res2 = add <64 x i8> %res, %res1 1745*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res2 1746*9880d681SAndroid Build Coastguard Worker} 1747*9880d681SAndroid Build Coastguard Worker 1748*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmins.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 1749*9880d681SAndroid Build Coastguard Worker 1750*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmins_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 1751*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmins_w_512: 1752*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1753*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1754*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpminsw %zmm1, %zmm0, %zmm2 {%k1} 1755*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpminsw %zmm1, %zmm0, %zmm0 1756*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm2, %zmm0 1757*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1758*9880d681SAndroid Build Coastguard Worker; 1759*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmins_w_512: 1760*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1761*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1762*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpminsw %zmm1, %zmm0, %zmm2 {%k1} 1763*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpminsw %zmm1, %zmm0, %zmm0 1764*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm2, %zmm0 1765*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1766*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pmins.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 1767*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmins.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 1768*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 1769*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 1770*9880d681SAndroid Build Coastguard Worker} 1771*9880d681SAndroid Build Coastguard Worker 1772*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pminu.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64) 1773*9880d681SAndroid Build Coastguard Worker 1774*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pminu_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) { 1775*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pminu_b_512: 1776*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1777*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 1778*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpminub %zmm1, %zmm0, %zmm2 {%k1} 1779*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpminub %zmm1, %zmm0, %zmm0 1780*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %zmm0, %zmm2, %zmm0 1781*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1782*9880d681SAndroid Build Coastguard Worker; 1783*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pminu_b_512: 1784*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1785*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 1786*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1787*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 1788*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpminub %zmm1, %zmm0, %zmm2 {%k1} 1789*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpminub %zmm1, %zmm0, %zmm0 1790*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %zmm0, %zmm2, %zmm0 1791*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1792*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.pminu.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) 1793*9880d681SAndroid Build Coastguard Worker %res1 = call <64 x i8> @llvm.x86.avx512.mask.pminu.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1) 1794*9880d681SAndroid Build Coastguard Worker %res2 = add <64 x i8> %res, %res1 1795*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res2 1796*9880d681SAndroid Build Coastguard Worker} 1797*9880d681SAndroid Build Coastguard Worker 1798*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pminu.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 1799*9880d681SAndroid Build Coastguard Worker 1800*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pminu_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 1801*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pminu_w_512: 1802*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1803*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1804*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpminuw %zmm1, %zmm0, %zmm2 {%k1} 1805*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpminuw %zmm1, %zmm0, %zmm0 1806*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm2, %zmm0 1807*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1808*9880d681SAndroid Build Coastguard Worker; 1809*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pminu_w_512: 1810*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1811*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1812*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpminuw %zmm1, %zmm0, %zmm2 {%k1} 1813*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpminuw %zmm1, %zmm0, %zmm0 1814*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm2, %zmm0 1815*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1816*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pminu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 1817*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pminu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 1818*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 1819*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 1820*9880d681SAndroid Build Coastguard Worker} 1821*9880d681SAndroid Build Coastguard Worker 1822*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.vpermt2var.hi.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 1823*9880d681SAndroid Build Coastguard Worker 1824*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_vpermt2var_hi_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 1825*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_vpermt2var_hi_512: 1826*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1827*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1828*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm3 1829*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpermt2w %zmm2, %zmm0, %zmm3 {%k1} 1830*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpermt2w %zmm2, %zmm0, %zmm1 1831*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm1, %zmm3, %zmm0 1832*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1833*9880d681SAndroid Build Coastguard Worker; 1834*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_vpermt2var_hi_512: 1835*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1836*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1837*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm3 1838*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpermt2w %zmm2, %zmm0, %zmm3 {%k1} 1839*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpermt2w %zmm2, %zmm0, %zmm1 1840*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm1, %zmm3, %zmm0 1841*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1842*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.vpermt2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 1843*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.vpermt2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 1844*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 1845*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 1846*9880d681SAndroid Build Coastguard Worker} 1847*9880d681SAndroid Build Coastguard Worker 1848*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.maskz.vpermt2var.hi.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 1849*9880d681SAndroid Build Coastguard Worker 1850*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_maskz_vpermt2var_hi_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 1851*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_maskz_vpermt2var_hi_512: 1852*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1853*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1854*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm3 1855*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpermt2w %zmm2, %zmm0, %zmm3 {%k1} {z} 1856*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpermt2w %zmm2, %zmm0, %zmm1 1857*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm1, %zmm3, %zmm0 1858*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1859*9880d681SAndroid Build Coastguard Worker; 1860*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_maskz_vpermt2var_hi_512: 1861*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1862*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1863*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm3 1864*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpermt2w %zmm2, %zmm0, %zmm3 {%k1} {z} 1865*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpermt2w %zmm2, %zmm0, %zmm1 1866*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm1, %zmm3, %zmm0 1867*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1868*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.maskz.vpermt2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 1869*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.maskz.vpermt2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 1870*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 1871*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 1872*9880d681SAndroid Build Coastguard Worker} 1873*9880d681SAndroid Build Coastguard Worker 1874*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.vpermi2var.hi.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 1875*9880d681SAndroid Build Coastguard Worker 1876*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_vpermi2var_hi_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 1877*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_vpermi2var_hi_512: 1878*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1879*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1880*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovaps %zmm1, %zmm3 1881*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpermi2w %zmm2, %zmm0, %zmm3 {%k1} 1882*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpermi2w %zmm2, %zmm0, %zmm1 1883*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm1, %zmm3, %zmm0 1884*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1885*9880d681SAndroid Build Coastguard Worker; 1886*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_vpermi2var_hi_512: 1887*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1888*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1889*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovaps %zmm1, %zmm3 1890*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpermi2w %zmm2, %zmm0, %zmm3 {%k1} 1891*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpermi2w %zmm2, %zmm0, %zmm1 1892*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm1, %zmm3, %zmm0 1893*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1894*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.vpermi2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 1895*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.vpermi2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 1896*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 1897*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 1898*9880d681SAndroid Build Coastguard Worker} 1899*9880d681SAndroid Build Coastguard Worker 1900*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pavg.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64) 1901*9880d681SAndroid Build Coastguard Worker 1902*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pavg_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) { 1903*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pavg_b_512: 1904*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1905*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 1906*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpavgb %zmm1, %zmm0, %zmm2 {%k1} 1907*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpavgb %zmm1, %zmm0, %zmm0 1908*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %zmm0, %zmm2, %zmm0 1909*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1910*9880d681SAndroid Build Coastguard Worker; 1911*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pavg_b_512: 1912*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1913*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 1914*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1915*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 1916*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpavgb %zmm1, %zmm0, %zmm2 {%k1} 1917*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpavgb %zmm1, %zmm0, %zmm0 1918*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %zmm0, %zmm2, %zmm0 1919*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1920*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.pavg.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) 1921*9880d681SAndroid Build Coastguard Worker %res1 = call <64 x i8> @llvm.x86.avx512.mask.pavg.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1) 1922*9880d681SAndroid Build Coastguard Worker %res2 = add <64 x i8> %res, %res1 1923*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res2 1924*9880d681SAndroid Build Coastguard Worker} 1925*9880d681SAndroid Build Coastguard Worker 1926*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pavg.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 1927*9880d681SAndroid Build Coastguard Worker 1928*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pavg_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 1929*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pavg_w_512: 1930*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1931*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1932*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpavgw %zmm1, %zmm0, %zmm2 {%k1} 1933*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpavgw %zmm1, %zmm0, %zmm0 1934*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm2, %zmm0 1935*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1936*9880d681SAndroid Build Coastguard Worker; 1937*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pavg_w_512: 1938*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1939*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1940*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpavgw %zmm1, %zmm0, %zmm2 {%k1} 1941*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpavgw %zmm1, %zmm0, %zmm0 1942*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm2, %zmm0 1943*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1944*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pavg.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 1945*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pavg.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 1946*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 1947*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 1948*9880d681SAndroid Build Coastguard Worker} 1949*9880d681SAndroid Build Coastguard Worker 1950*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pshuf.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64) 1951*9880d681SAndroid Build Coastguard Worker 1952*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pshuf_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) { 1953*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pshuf_b_512: 1954*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1955*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 1956*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpshufb %zmm1, %zmm0, %zmm2 {%k1} 1957*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpshufb %zmm1, %zmm0, %zmm0 1958*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %zmm0, %zmm2, %zmm0 1959*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1960*9880d681SAndroid Build Coastguard Worker; 1961*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pshuf_b_512: 1962*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1963*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 1964*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1965*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 1966*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpshufb %zmm1, %zmm0, %zmm2 {%k1} 1967*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpshufb %zmm1, %zmm0, %zmm0 1968*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %zmm0, %zmm2, %zmm0 1969*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1970*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.pshuf.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) 1971*9880d681SAndroid Build Coastguard Worker %res1 = call <64 x i8> @llvm.x86.avx512.mask.pshuf.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1) 1972*9880d681SAndroid Build Coastguard Worker %res2 = add <64 x i8> %res, %res1 1973*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res2 1974*9880d681SAndroid Build Coastguard Worker} 1975*9880d681SAndroid Build Coastguard Worker 1976*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pabs.w.512(<32 x i16>, <32 x i16>, i32) 1977*9880d681SAndroid Build Coastguard Worker 1978*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pabs_w_512(<32 x i16> %x0, <32 x i16> %x1, i32 %x2) { 1979*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pabs_w_512: 1980*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 1981*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 1982*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpabsw %zmm0, %zmm1 {%k1} 1983*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpabsw %zmm0, %zmm0 1984*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 1985*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 1986*9880d681SAndroid Build Coastguard Worker; 1987*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pabs_w_512: 1988*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 1989*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 1990*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpabsw %zmm0, %zmm1 {%k1} 1991*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpabsw %zmm0, %zmm0 1992*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 1993*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 1994*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pabs.w.512(<32 x i16> %x0, <32 x i16> %x1, i32 %x2) 1995*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pabs.w.512(<32 x i16> %x0, <32 x i16> %x1, i32 -1) 1996*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 1997*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 1998*9880d681SAndroid Build Coastguard Worker} 1999*9880d681SAndroid Build Coastguard Worker 2000*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pabs.b.512(<64 x i8>, <64 x i8>, i64) 2001*9880d681SAndroid Build Coastguard Worker 2002*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pabs_b_512(<64 x i8> %x0, <64 x i8> %x1, i64 %x2) { 2003*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pabs_b_512: 2004*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2005*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 2006*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpabsb %zmm0, %zmm1 {%k1} 2007*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpabsb %zmm0, %zmm0 2008*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %zmm0, %zmm1, %zmm0 2009*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2010*9880d681SAndroid Build Coastguard Worker; 2011*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pabs_b_512: 2012*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2013*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 2014*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2015*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 2016*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpabsb %zmm0, %zmm1 {%k1} 2017*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpabsb %zmm0, %zmm0 2018*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %zmm0, %zmm1, %zmm0 2019*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2020*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.pabs.b.512(<64 x i8> %x0, <64 x i8> %x1, i64 %x2) 2021*9880d681SAndroid Build Coastguard Worker %res1 = call <64 x i8> @llvm.x86.avx512.mask.pabs.b.512(<64 x i8> %x0, <64 x i8> %x1, i64 -1) 2022*9880d681SAndroid Build Coastguard Worker %res2 = add <64 x i8> %res, %res1 2023*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res2 2024*9880d681SAndroid Build Coastguard Worker} 2025*9880d681SAndroid Build Coastguard Worker 2026*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmulhu.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 2027*9880d681SAndroid Build Coastguard Worker 2028*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmulhu_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 2029*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmulhu_w_512: 2030*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2031*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2032*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmulhuw %zmm1, %zmm0, %zmm2 {%k1} 2033*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmulhuw %zmm1, %zmm0, %zmm0 2034*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm2, %zmm0 2035*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2036*9880d681SAndroid Build Coastguard Worker; 2037*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmulhu_w_512: 2038*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2039*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2040*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmulhuw %zmm1, %zmm0, %zmm2 {%k1} 2041*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmulhuw %zmm1, %zmm0, %zmm0 2042*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm2, %zmm0 2043*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2044*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pmulhu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 2045*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmulhu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 2046*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 2047*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 2048*9880d681SAndroid Build Coastguard Worker} 2049*9880d681SAndroid Build Coastguard Worker 2050*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmulh.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 2051*9880d681SAndroid Build Coastguard Worker 2052*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmulh_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 2053*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmulh_w_512: 2054*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2055*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2056*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmulhw %zmm1, %zmm0, %zmm2 {%k1} 2057*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmulhw %zmm1, %zmm0, %zmm0 2058*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm2, %zmm0 2059*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2060*9880d681SAndroid Build Coastguard Worker; 2061*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmulh_w_512: 2062*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2063*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2064*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmulhw %zmm1, %zmm0, %zmm2 {%k1} 2065*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmulhw %zmm1, %zmm0, %zmm0 2066*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm2, %zmm0 2067*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2068*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pmulh.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 2069*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmulh.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 2070*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 2071*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 2072*9880d681SAndroid Build Coastguard Worker} 2073*9880d681SAndroid Build Coastguard Worker 2074*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmul.hr.sw.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 2075*9880d681SAndroid Build Coastguard Worker 2076*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmulhr_sw_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 2077*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmulhr_sw_512: 2078*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2079*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2080*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmulhrsw %zmm1, %zmm0, %zmm2 {%k1} 2081*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmulhrsw %zmm1, %zmm0, %zmm0 2082*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm2, %zmm0 2083*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2084*9880d681SAndroid Build Coastguard Worker; 2085*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmulhr_sw_512: 2086*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2087*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2088*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmulhrsw %zmm1, %zmm0, %zmm2 {%k1} 2089*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmulhrsw %zmm1, %zmm0, %zmm0 2090*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm2, %zmm0 2091*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2092*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pmul.hr.sw.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 2093*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmul.hr.sw.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 2094*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 2095*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 2096*9880d681SAndroid Build Coastguard Worker} 2097*9880d681SAndroid Build Coastguard Worker 2098*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pmov.wb.512(<32 x i16>, <32 x i8>, i32) 2099*9880d681SAndroid Build Coastguard Worker 2100*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pmov_wb_512(<32 x i16> %x0, <32 x i8> %x1, i32 %x2) { 2101*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmov_wb_512: 2102*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2103*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2104*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovwb %zmm0, %ymm1 {%k1} 2105*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovwb %zmm0, %ymm2 {%k1} {z} 2106*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovwb %zmm0, %ymm0 2107*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %ymm1, %ymm0, %ymm0 2108*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %ymm2, %ymm0, %ymm0 2109*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2110*9880d681SAndroid Build Coastguard Worker; 2111*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmov_wb_512: 2112*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2113*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2114*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovwb %zmm0, %ymm1 {%k1} 2115*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovwb %zmm0, %ymm2 {%k1} {z} 2116*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovwb %zmm0, %ymm0 2117*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %ymm1, %ymm0, %ymm0 2118*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %ymm2, %ymm0, %ymm0 2119*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2120*9880d681SAndroid Build Coastguard Worker %res0 = call <32 x i8> @llvm.x86.avx512.mask.pmov.wb.512(<32 x i16> %x0, <32 x i8> %x1, i32 -1) 2121*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmov.wb.512(<32 x i16> %x0, <32 x i8> %x1, i32 %x2) 2122*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i8> @llvm.x86.avx512.mask.pmov.wb.512(<32 x i16> %x0, <32 x i8> zeroinitializer, i32 %x2) 2123*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i8> %res0, %res1 2124*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i8> %res3, %res2 2125*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res4 2126*9880d681SAndroid Build Coastguard Worker} 2127*9880d681SAndroid Build Coastguard Worker 2128*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.wb.mem.512(i8* %ptr, <32 x i16>, i32) 2129*9880d681SAndroid Build Coastguard Worker 2130*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_wb_mem_512(i8* %ptr, <32 x i16> %x1, i32 %x2) { 2131*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmov_wb_mem_512: 2132*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2133*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 2134*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovwb %zmm0, (%rdi) 2135*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovwb %zmm0, (%rdi) {%k1} 2136*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2137*9880d681SAndroid Build Coastguard Worker; 2138*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmov_wb_mem_512: 2139*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2140*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2141*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 2142*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovwb %zmm0, (%eax) 2143*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovwb %zmm0, (%eax) {%k1} 2144*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2145*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmov.wb.mem.512(i8* %ptr, <32 x i16> %x1, i32 -1) 2146*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmov.wb.mem.512(i8* %ptr, <32 x i16> %x1, i32 %x2) 2147*9880d681SAndroid Build Coastguard Worker ret void 2148*9880d681SAndroid Build Coastguard Worker} 2149*9880d681SAndroid Build Coastguard Worker 2150*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pmovs.wb.512(<32 x i16>, <32 x i8>, i32) 2151*9880d681SAndroid Build Coastguard Worker 2152*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pmovs_wb_512(<32 x i16> %x0, <32 x i8> %x1, i32 %x2) { 2153*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmovs_wb_512: 2154*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2155*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2156*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovswb %zmm0, %ymm1 {%k1} 2157*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovswb %zmm0, %ymm2 {%k1} {z} 2158*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovswb %zmm0, %ymm0 2159*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %ymm1, %ymm0, %ymm0 2160*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %ymm2, %ymm0, %ymm0 2161*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2162*9880d681SAndroid Build Coastguard Worker; 2163*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmovs_wb_512: 2164*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2165*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2166*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovswb %zmm0, %ymm1 {%k1} 2167*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovswb %zmm0, %ymm2 {%k1} {z} 2168*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovswb %zmm0, %ymm0 2169*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %ymm1, %ymm0, %ymm0 2170*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %ymm2, %ymm0, %ymm0 2171*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2172*9880d681SAndroid Build Coastguard Worker %res0 = call <32 x i8> @llvm.x86.avx512.mask.pmovs.wb.512(<32 x i16> %x0, <32 x i8> %x1, i32 -1) 2173*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmovs.wb.512(<32 x i16> %x0, <32 x i8> %x1, i32 %x2) 2174*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i8> @llvm.x86.avx512.mask.pmovs.wb.512(<32 x i16> %x0, <32 x i8> zeroinitializer, i32 %x2) 2175*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i8> %res0, %res1 2176*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i8> %res3, %res2 2177*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res4 2178*9880d681SAndroid Build Coastguard Worker} 2179*9880d681SAndroid Build Coastguard Worker 2180*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.wb.mem.512(i8* %ptr, <32 x i16>, i32) 2181*9880d681SAndroid Build Coastguard Worker 2182*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_wb_mem_512(i8* %ptr, <32 x i16> %x1, i32 %x2) { 2183*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmovs_wb_mem_512: 2184*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2185*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovswb %zmm0, (%rdi) 2186*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 2187*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovswb %zmm0, (%rdi) {%k1} 2188*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2189*9880d681SAndroid Build Coastguard Worker; 2190*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmovs_wb_mem_512: 2191*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2192*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 2193*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %ecx 2194*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovswb %zmm0, (%ecx) 2195*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %eax, %k1 2196*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovswb %zmm0, (%ecx) {%k1} 2197*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2198*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovs.wb.mem.512(i8* %ptr, <32 x i16> %x1, i32 -1) 2199*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovs.wb.mem.512(i8* %ptr, <32 x i16> %x1, i32 %x2) 2200*9880d681SAndroid Build Coastguard Worker ret void 2201*9880d681SAndroid Build Coastguard Worker} 2202*9880d681SAndroid Build Coastguard Worker 2203*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pmovus.wb.512(<32 x i16>, <32 x i8>, i32) 2204*9880d681SAndroid Build Coastguard Worker 2205*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pmovus_wb_512(<32 x i16> %x0, <32 x i8> %x1, i32 %x2) { 2206*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmovus_wb_512: 2207*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2208*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2209*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovuswb %zmm0, %ymm1 {%k1} 2210*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovuswb %zmm0, %ymm2 {%k1} {z} 2211*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovuswb %zmm0, %ymm0 2212*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %ymm1, %ymm0, %ymm0 2213*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %ymm2, %ymm0, %ymm0 2214*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2215*9880d681SAndroid Build Coastguard Worker; 2216*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmovus_wb_512: 2217*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2218*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2219*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovuswb %zmm0, %ymm1 {%k1} 2220*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovuswb %zmm0, %ymm2 {%k1} {z} 2221*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovuswb %zmm0, %ymm0 2222*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %ymm1, %ymm0, %ymm0 2223*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %ymm2, %ymm0, %ymm0 2224*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2225*9880d681SAndroid Build Coastguard Worker %res0 = call <32 x i8> @llvm.x86.avx512.mask.pmovus.wb.512(<32 x i16> %x0, <32 x i8> %x1, i32 -1) 2226*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmovus.wb.512(<32 x i16> %x0, <32 x i8> %x1, i32 %x2) 2227*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i8> @llvm.x86.avx512.mask.pmovus.wb.512(<32 x i16> %x0, <32 x i8> zeroinitializer, i32 %x2) 2228*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i8> %res0, %res1 2229*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i8> %res3, %res2 2230*9880d681SAndroid Build Coastguard Worker ret <32 x i8> %res4 2231*9880d681SAndroid Build Coastguard Worker} 2232*9880d681SAndroid Build Coastguard Worker 2233*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.wb.mem.512(i8* %ptr, <32 x i16>, i32) 2234*9880d681SAndroid Build Coastguard Worker 2235*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_wb_mem_512(i8* %ptr, <32 x i16> %x1, i32 %x2) { 2236*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmovus_wb_mem_512: 2237*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2238*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovuswb %zmm0, (%rdi) 2239*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 2240*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovuswb %zmm0, (%rdi) {%k1} 2241*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2242*9880d681SAndroid Build Coastguard Worker; 2243*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmovus_wb_mem_512: 2244*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2245*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax 2246*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %ecx 2247*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovuswb %zmm0, (%ecx) 2248*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %eax, %k1 2249*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovuswb %zmm0, (%ecx) {%k1} 2250*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2251*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovus.wb.mem.512(i8* %ptr, <32 x i16> %x1, i32 -1) 2252*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.avx512.mask.pmovus.wb.mem.512(i8* %ptr, <32 x i16> %x1, i32 %x2) 2253*9880d681SAndroid Build Coastguard Worker ret void 2254*9880d681SAndroid Build Coastguard Worker} 2255*9880d681SAndroid Build Coastguard Worker 2256*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmaddubs.w.512(<64 x i8>, <64 x i8>, <32 x i16>, i32) 2257*9880d681SAndroid Build Coastguard Worker 2258*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmaddubs_w_512(<64 x i8> %x0, <64 x i8> %x1, <32 x i16> %x2, i32 %x3) { 2259*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmaddubs_w_512: 2260*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2261*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2262*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmaddubsw %zmm1, %zmm0, %zmm2 {%k1} 2263*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmaddubsw %zmm1, %zmm0, %zmm0 2264*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm2, %zmm0 2265*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2266*9880d681SAndroid Build Coastguard Worker; 2267*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmaddubs_w_512: 2268*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2269*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2270*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmaddubsw %zmm1, %zmm0, %zmm2 {%k1} 2271*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmaddubsw %zmm1, %zmm0, %zmm0 2272*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm2, %zmm0 2273*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2274*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pmaddubs.w.512(<64 x i8> %x0, <64 x i8> %x1, <32 x i16> %x2, i32 %x3) 2275*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmaddubs.w.512(<64 x i8> %x0, <64 x i8> %x1, <32 x i16> %x2, i32 -1) 2276*9880d681SAndroid Build Coastguard Worker %res2 = add <32 x i16> %res, %res1 2277*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res2 2278*9880d681SAndroid Build Coastguard Worker} 2279*9880d681SAndroid Build Coastguard Worker 2280*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmaddw.d.512(<32 x i16>, <32 x i16>, <16 x i32>, i16) 2281*9880d681SAndroid Build Coastguard Worker 2282*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmaddw_d_512(<32 x i16> %x0, <32 x i16> %x1, <16 x i32> %x2, i16 %x3) { 2283*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmaddw_d_512: 2284*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2285*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovw %edi, %k1 2286*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmaddwd %zmm1, %zmm0, %zmm2 {%k1} 2287*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmaddwd %zmm1, %zmm0, %zmm0 2288*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddd %zmm0, %zmm2, %zmm0 2289*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2290*9880d681SAndroid Build Coastguard Worker; 2291*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmaddw_d_512: 2292*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2293*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovw {{[0-9]+}}(%esp), %k1 2294*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmaddwd %zmm1, %zmm0, %zmm2 {%k1} 2295*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmaddwd %zmm1, %zmm0, %zmm0 2296*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddd %zmm0, %zmm2, %zmm0 2297*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2298*9880d681SAndroid Build Coastguard Worker %res = call <16 x i32> @llvm.x86.avx512.mask.pmaddw.d.512(<32 x i16> %x0, <32 x i16> %x1, <16 x i32> %x2, i16 %x3) 2299*9880d681SAndroid Build Coastguard Worker %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmaddw.d.512(<32 x i16> %x0, <32 x i16> %x1, <16 x i32> %x2, i16 -1) 2300*9880d681SAndroid Build Coastguard Worker %res2 = add <16 x i32> %res, %res1 2301*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %res2 2302*9880d681SAndroid Build Coastguard Worker} 2303*9880d681SAndroid Build Coastguard Worker 2304*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.dbpsadbw.512(<64 x i8>, <64 x i8>, i32, <32 x i16>, i32) 2305*9880d681SAndroid Build Coastguard Worker 2306*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_dbpsadbw_512(<64 x i8> %x0, <64 x i8> %x1, <32 x i16> %x3, i32 %x4) { 2307*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_dbpsadbw_512: 2308*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2309*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2310*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vdbpsadbw $2, %zmm1, %zmm0, %zmm2 {%k1} 2311*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vdbpsadbw $2, %zmm1, %zmm0, %zmm3 {%k1} {z} 2312*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vdbpsadbw $2, %zmm1, %zmm0, %zmm0 2313*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2314*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2315*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2316*9880d681SAndroid Build Coastguard Worker; 2317*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_dbpsadbw_512: 2318*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2319*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2320*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vdbpsadbw $2, %zmm1, %zmm0, %zmm2 {%k1} 2321*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vdbpsadbw $2, %zmm1, %zmm0, %zmm3 {%k1} {z} 2322*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vdbpsadbw $2, %zmm1, %zmm0, %zmm0 2323*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2324*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2325*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2326*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.dbpsadbw.512(<64 x i8> %x0, <64 x i8> %x1, i32 2, <32 x i16> %x3, i32 %x4) 2327*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.dbpsadbw.512(<64 x i8> %x0, <64 x i8> %x1, i32 2, <32 x i16> zeroinitializer, i32 %x4) 2328*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.dbpsadbw.512(<64 x i8> %x0, <64 x i8> %x1, i32 2, <32 x i16> %x3, i32 -1) 2329*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2330*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2331*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2332*9880d681SAndroid Build Coastguard Worker} 2333*9880d681SAndroid Build Coastguard Worker 2334*9880d681SAndroid Build Coastguard Workerdeclare <8 x i64> @llvm.x86.avx512.psad.bw.512(<64 x i8>, <64 x i8>) 2335*9880d681SAndroid Build Coastguard Worker 2336*9880d681SAndroid Build Coastguard Workerdefine <8 x i64>@test_int_x86_avx512_mask_psadb_w_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2){ 2337*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psadb_w_512: 2338*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2339*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsadbw %zmm1, %zmm0, %zmm1 2340*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsadbw %zmm2, %zmm0, %zmm0 2341*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddq %zmm0, %zmm1, %zmm0 2342*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2343*9880d681SAndroid Build Coastguard Worker; 2344*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psadb_w_512: 2345*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2346*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsadbw %zmm1, %zmm0, %zmm1 2347*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsadbw %zmm2, %zmm0, %zmm0 2348*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddq %zmm0, %zmm1, %zmm0 2349*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2350*9880d681SAndroid Build Coastguard Worker %res = call <8 x i64> @llvm.x86.avx512.psad.bw.512(<64 x i8> %x0, <64 x i8> %x1) 2351*9880d681SAndroid Build Coastguard Worker %res1 = call <8 x i64> @llvm.x86.avx512.psad.bw.512(<64 x i8> %x0, <64 x i8> %x2) 2352*9880d681SAndroid Build Coastguard Worker %res2 = add <8 x i64> %res, %res1 2353*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %res2 2354*9880d681SAndroid Build Coastguard Worker} 2355*9880d681SAndroid Build Coastguard Worker 2356*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.kunpck.wd(i32, i32) 2357*9880d681SAndroid Build Coastguard Worker 2358*9880d681SAndroid Build Coastguard Workerdefine i32@test_int_x86_avx512_kunpck_wd(i32 %x0, i32 %x1) { 2359*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_kunpck_wd: 2360*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2361*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k0 2362*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 2363*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kunpckwd %k1, %k0, %k0 2364*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 2365*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2366*9880d681SAndroid Build Coastguard Worker; 2367*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_kunpck_wd: 2368*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2369*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 2370*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2371*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckwd %k1, %k0, %k0 2372*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 2373*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2374*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.kunpck.wd(i32 %x0, i32 %x1) 2375*9880d681SAndroid Build Coastguard Worker ret i32 %res 2376*9880d681SAndroid Build Coastguard Worker} 2377*9880d681SAndroid Build Coastguard Worker 2378*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.kunpck.dq(i64, i64) 2379*9880d681SAndroid Build Coastguard Worker 2380*9880d681SAndroid Build Coastguard Workerdefine i64@test_int_x86_avx512_kunpck_qd(i64 %x0, i64 %x1) { 2381*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_kunpck_qd: 2382*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2383*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k0 2384*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rsi, %k1 2385*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kunpckdq %k1, %k0, %k0 2386*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 2387*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2388*9880d681SAndroid Build Coastguard Worker; 2389*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_kunpck_qd: 2390*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2391*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: subl $12, %esp 2392*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .Ltmp4: 2393*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .cfi_def_cfa_offset 16 2394*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 2395*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2396*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k0 2397*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, (%esp) 2398*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl (%esp), %eax 2399*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %edx 2400*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl $12, %esp 2401*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2402*9880d681SAndroid Build Coastguard Worker %res = call i64 @llvm.x86.avx512.kunpck.dq(i64 %x0, i64 %x1) 2403*9880d681SAndroid Build Coastguard Worker ret i64 %res 2404*9880d681SAndroid Build Coastguard Worker} 2405*9880d681SAndroid Build Coastguard Worker 2406*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.cvtb2mask.512(<64 x i8>) 2407*9880d681SAndroid Build Coastguard Worker 2408*9880d681SAndroid Build Coastguard Workerdefine i64@test_int_x86_avx512_cvtb2mask_512(<64 x i8> %x0) { 2409*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_cvtb2mask_512: 2410*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2411*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovb2m %zmm0, %k0 2412*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 2413*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2414*9880d681SAndroid Build Coastguard Worker; 2415*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_cvtb2mask_512: 2416*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2417*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: subl $12, %esp 2418*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .Ltmp5: 2419*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .cfi_def_cfa_offset 16 2420*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovb2m %zmm0, %k0 2421*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, (%esp) 2422*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl (%esp), %eax 2423*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %edx 2424*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl $12, %esp 2425*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2426*9880d681SAndroid Build Coastguard Worker %res = call i64 @llvm.x86.avx512.cvtb2mask.512(<64 x i8> %x0) 2427*9880d681SAndroid Build Coastguard Worker ret i64 %res 2428*9880d681SAndroid Build Coastguard Worker} 2429*9880d681SAndroid Build Coastguard Worker 2430*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.cvtw2mask.512(<32 x i16>) 2431*9880d681SAndroid Build Coastguard Worker 2432*9880d681SAndroid Build Coastguard Workerdefine i32@test_int_x86_avx512_cvtw2mask_512(<32 x i16> %x0) { 2433*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_cvtw2mask_512: 2434*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2435*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovw2m %zmm0, %k0 2436*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 2437*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2438*9880d681SAndroid Build Coastguard Worker; 2439*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_cvtw2mask_512: 2440*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2441*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovw2m %zmm0, %k0 2442*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 2443*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2444*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.cvtw2mask.512(<32 x i16> %x0) 2445*9880d681SAndroid Build Coastguard Worker ret i32 %res 2446*9880d681SAndroid Build Coastguard Worker} 2447*9880d681SAndroid Build Coastguard Worker 2448*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.cvtmask2b.512(i64) 2449*9880d681SAndroid Build Coastguard Worker 2450*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_cvtmask2b_512(i64 %x0) { 2451*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_cvtmask2b_512: 2452*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2453*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k0 2454*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovm2b %k0, %zmm0 2455*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2456*9880d681SAndroid Build Coastguard Worker; 2457*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_cvtmask2b_512: 2458*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2459*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 2460*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2461*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k0 2462*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovm2b %k0, %zmm0 2463*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2464*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.cvtmask2b.512(i64 %x0) 2465*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 2466*9880d681SAndroid Build Coastguard Worker} 2467*9880d681SAndroid Build Coastguard Worker 2468*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.cvtmask2w.512(i32) 2469*9880d681SAndroid Build Coastguard Worker 2470*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_cvtmask2w_512(i32 %x0) { 2471*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_cvtmask2w_512: 2472*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2473*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k0 2474*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovm2w %k0, %zmm0 2475*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2476*9880d681SAndroid Build Coastguard Worker; 2477*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_cvtmask2w_512: 2478*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2479*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 2480*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovm2w %k0, %zmm0 2481*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2482*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.cvtmask2w.512(i32 %x0) 2483*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 2484*9880d681SAndroid Build Coastguard Worker} 2485*9880d681SAndroid Build Coastguard Worker 2486*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psrl.w.512(<32 x i16>, <8 x i16>, <32 x i16>, i32) 2487*9880d681SAndroid Build Coastguard Worker 2488*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psrl_w_512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 %x3) { 2489*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psrl_w_512: 2490*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2491*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2492*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsrlw %xmm1, %zmm0, %zmm2 {%k1} 2493*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsrlw %xmm1, %zmm0, %zmm3 {%k1} {z} 2494*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsrlw %xmm1, %zmm0, %zmm0 2495*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm2, %zmm0 2496*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm3, %zmm0, %zmm0 2497*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2498*9880d681SAndroid Build Coastguard Worker; 2499*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psrl_w_512: 2500*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2501*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2502*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsrlw %xmm1, %zmm0, %zmm2 {%k1} 2503*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsrlw %xmm1, %zmm0, %zmm3 {%k1} {z} 2504*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsrlw %xmm1, %zmm0, %zmm0 2505*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm2, %zmm0 2506*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm3, %zmm0, %zmm0 2507*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2508*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psrl.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 %x3) 2509*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.psrl.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 -1) 2510*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.psrl.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3) 2511*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2512*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2513*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2514*9880d681SAndroid Build Coastguard Worker} 2515*9880d681SAndroid Build Coastguard Worker 2516*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psrl.wi.512(<32 x i16>, i32, <32 x i16>, i32) 2517*9880d681SAndroid Build Coastguard Worker 2518*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psrl_wi_512(<32 x i16> %x0, i32 %x1, <32 x i16> %x2, i32 %x3) { 2519*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psrl_wi_512: 2520*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2521*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 2522*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsrlw $3, %zmm0, %zmm1 {%k1} 2523*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsrlw $3, %zmm0, %zmm2 {%k1} {z} 2524*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsrlw $3, %zmm0, %zmm0 2525*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2526*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm2, %zmm0, %zmm0 2527*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2528*9880d681SAndroid Build Coastguard Worker; 2529*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psrl_wi_512: 2530*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2531*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2532*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsrlw $3, %zmm0, %zmm1 {%k1} 2533*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsrlw $3, %zmm0, %zmm2 {%k1} {z} 2534*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsrlw $3, %zmm0, %zmm0 2535*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2536*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm2, %zmm0, %zmm0 2537*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2538*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psrl.wi.512(<32 x i16> %x0, i32 3, <32 x i16> %x2, i32 %x3) 2539*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.psrl.wi.512(<32 x i16> %x0, i32 3, <32 x i16> %x2, i32 -1) 2540*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.psrl.wi.512(<32 x i16> %x0, i32 3, <32 x i16> zeroinitializer, i32 %x3) 2541*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2542*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2543*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2544*9880d681SAndroid Build Coastguard Worker} 2545*9880d681SAndroid Build Coastguard Worker 2546*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psrlv32hi(<32 x i16>, <32 x i16>, <32 x i16>, i32) 2547*9880d681SAndroid Build Coastguard Worker 2548*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psrlv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 2549*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psrlv32hi: 2550*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2551*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2552*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsrlvw %zmm1, %zmm0, %zmm2 {%k1} 2553*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsrlvw %zmm1, %zmm0, %zmm3 {%k1} {z} 2554*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsrlvw %zmm1, %zmm0, %zmm0 2555*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2556*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2557*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2558*9880d681SAndroid Build Coastguard Worker; 2559*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psrlv32hi: 2560*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2561*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2562*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsrlvw %zmm1, %zmm0, %zmm2 {%k1} 2563*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsrlvw %zmm1, %zmm0, %zmm3 {%k1} {z} 2564*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsrlvw %zmm1, %zmm0, %zmm0 2565*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2566*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2567*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2568*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psrlv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 2569*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.psrlv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3) 2570*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.psrlv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 2571*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2572*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2573*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2574*9880d681SAndroid Build Coastguard Worker} 2575*9880d681SAndroid Build Coastguard Worker 2576*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psra.w.512(<32 x i16>, <8 x i16>, <32 x i16>, i32) 2577*9880d681SAndroid Build Coastguard Worker 2578*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psra_w_512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 %x3) { 2579*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psra_w_512: 2580*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2581*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2582*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsraw %xmm1, %zmm0, %zmm2 {%k1} 2583*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsraw %xmm1, %zmm0, %zmm3 {%k1} {z} 2584*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsraw %xmm1, %zmm0, %zmm0 2585*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2586*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2587*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2588*9880d681SAndroid Build Coastguard Worker; 2589*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psra_w_512: 2590*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2591*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2592*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsraw %xmm1, %zmm0, %zmm2 {%k1} 2593*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsraw %xmm1, %zmm0, %zmm3 {%k1} {z} 2594*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsraw %xmm1, %zmm0, %zmm0 2595*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2596*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2597*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2598*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psra.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 %x3) 2599*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.psra.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3) 2600*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.psra.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 -1) 2601*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2602*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2603*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2604*9880d681SAndroid Build Coastguard Worker} 2605*9880d681SAndroid Build Coastguard Worker 2606*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psra.wi.512(<32 x i16>, i32, <32 x i16>, i32) 2607*9880d681SAndroid Build Coastguard Worker 2608*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psra_wi_512(<32 x i16> %x0, i32 %x1, <32 x i16> %x2, i32 %x3) { 2609*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psra_wi_512: 2610*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2611*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 2612*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsraw $3, %zmm0, %zmm1 {%k1} 2613*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsraw $3, %zmm0, %zmm2 {%k1} {z} 2614*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsraw $3, %zmm0, %zmm0 2615*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm2, %zmm1, %zmm1 2616*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2617*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2618*9880d681SAndroid Build Coastguard Worker; 2619*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psra_wi_512: 2620*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2621*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2622*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsraw $3, %zmm0, %zmm1 {%k1} 2623*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsraw $3, %zmm0, %zmm2 {%k1} {z} 2624*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsraw $3, %zmm0, %zmm0 2625*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm2, %zmm1, %zmm1 2626*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2627*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2628*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psra.wi.512(<32 x i16> %x0, i32 3, <32 x i16> %x2, i32 %x3) 2629*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.psra.wi.512(<32 x i16> %x0, i32 3, <32 x i16> zeroinitializer, i32 %x3) 2630*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.psra.wi.512(<32 x i16> %x0, i32 3, <32 x i16> %x2, i32 -1) 2631*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2632*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2633*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2634*9880d681SAndroid Build Coastguard Worker} 2635*9880d681SAndroid Build Coastguard Worker 2636*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psrav32.hi(<32 x i16>, <32 x i16>, <32 x i16>, i32) 2637*9880d681SAndroid Build Coastguard Worker 2638*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psrav32_hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 2639*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psrav32_hi: 2640*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2641*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2642*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsravw %zmm1, %zmm0, %zmm2 {%k1} 2643*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsravw %zmm1, %zmm0, %zmm3 {%k1} {z} 2644*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsravw %zmm1, %zmm0, %zmm0 2645*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2646*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2647*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2648*9880d681SAndroid Build Coastguard Worker; 2649*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psrav32_hi: 2650*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2651*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2652*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsravw %zmm1, %zmm0, %zmm2 {%k1} 2653*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsravw %zmm1, %zmm0, %zmm3 {%k1} {z} 2654*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsravw %zmm1, %zmm0, %zmm0 2655*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2656*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2657*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2658*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psrav32.hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 2659*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.psrav32.hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3) 2660*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.psrav32.hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 2661*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2662*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2663*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2664*9880d681SAndroid Build Coastguard Worker} 2665*9880d681SAndroid Build Coastguard Worker 2666*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psrav32_hi_const(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 2667*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psrav32_hi_const: 2668*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2669*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vmovdqu16 {{.*#+}} zmm0 = [2,9,65524,23,65510,37,65496,51,2,9,65524,23,65510,37,65496,51,2,9,65524,23,65510,37,65496,51,2,9,65524,23,65510,37,65496,51] 2670*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsravw {{.*}}(%rip), %zmm0, %zmm0 2671*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2672*9880d681SAndroid Build Coastguard Worker; 2673*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psrav32_hi_const: 2674*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2675*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vmovdqu16 {{.*#+}} zmm0 = [2,9,65524,23,65510,37,65496,51,2,9,65524,23,65510,37,65496,51,2,9,65524,23,65510,37,65496,51,2,9,65524,23,65510,37,65496,51] 2676*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsravw {{\.LCPI.*}}, %zmm0, %zmm0 2677*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2678*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psrav32.hi(<32 x i16> <i16 2, i16 9, i16 -12, i16 23, i16 -26, i16 37, i16 -40, i16 51, i16 2, i16 9, i16 -12, i16 23, i16 -26, i16 37, i16 -40, i16 51, i16 2, i16 9, i16 -12, i16 23, i16 -26, i16 37, i16 -40, i16 51, i16 2, i16 9, i16 -12, i16 23, i16 -26, i16 37, i16 -40, i16 51>, 2679*9880d681SAndroid Build Coastguard Worker <32 x i16> <i16 1, i16 10, i16 35, i16 52, i16 69, i16 9, i16 16, i16 49, i16 1, i16 10, i16 35, i16 52, i16 69, i16 9, i16 16, i16 49, i16 1, i16 10, i16 35, i16 52, i16 69, i16 9, i16 16, i16 49, i16 1, i16 10, i16 35, i16 52, i16 69, i16 9, i16 16, i16 49>, 2680*9880d681SAndroid Build Coastguard Worker <32 x i16> zeroinitializer, i32 -1) 2681*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 2682*9880d681SAndroid Build Coastguard Worker} 2683*9880d681SAndroid Build Coastguard Worker 2684*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psll.w.512(<32 x i16>, <8 x i16>, <32 x i16>, i32) 2685*9880d681SAndroid Build Coastguard Worker 2686*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psll_w_512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 %x3) { 2687*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psll_w_512: 2688*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2689*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2690*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsllw %xmm1, %zmm0, %zmm2 {%k1} 2691*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsllw %xmm1, %zmm0, %zmm3 {%k1} {z} 2692*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsllw %xmm1, %zmm0, %zmm0 2693*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2694*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2695*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2696*9880d681SAndroid Build Coastguard Worker; 2697*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psll_w_512: 2698*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2699*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2700*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsllw %xmm1, %zmm0, %zmm2 {%k1} 2701*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsllw %xmm1, %zmm0, %zmm3 {%k1} {z} 2702*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsllw %xmm1, %zmm0, %zmm0 2703*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2704*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2705*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2706*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psll.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 %x3) 2707*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.psll.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3) 2708*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.psll.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 -1) 2709*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2710*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2711*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2712*9880d681SAndroid Build Coastguard Worker} 2713*9880d681SAndroid Build Coastguard Worker 2714*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psll.wi.512(<32 x i16>, i32, <32 x i16>, i32) 2715*9880d681SAndroid Build Coastguard Worker 2716*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psll_wi_512(<32 x i16> %x0, i32 %x1, <32 x i16> %x2, i32 %x3) { 2717*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psll_wi_512: 2718*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2719*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 2720*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsllw $3, %zmm0, %zmm1 {%k1} 2721*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsllw $3, %zmm0, %zmm2 {%k1} {z} 2722*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsllw $3, %zmm0, %zmm0 2723*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm2, %zmm1, %zmm1 2724*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2725*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2726*9880d681SAndroid Build Coastguard Worker; 2727*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psll_wi_512: 2728*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2729*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2730*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsllw $3, %zmm0, %zmm1 {%k1} 2731*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsllw $3, %zmm0, %zmm2 {%k1} {z} 2732*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsllw $3, %zmm0, %zmm0 2733*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm2, %zmm1, %zmm1 2734*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2735*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2736*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psll.wi.512(<32 x i16> %x0, i32 3, <32 x i16> %x2, i32 %x3) 2737*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.psll.wi.512(<32 x i16> %x0, i32 3, <32 x i16> zeroinitializer, i32 %x3) 2738*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.psll.wi.512(<32 x i16> %x0, i32 3, <32 x i16> %x2, i32 -1) 2739*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2740*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2741*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2742*9880d681SAndroid Build Coastguard Worker} 2743*9880d681SAndroid Build Coastguard Worker 2744*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psllv32hi(<32 x i16>, <32 x i16>, <32 x i16>, i32) 2745*9880d681SAndroid Build Coastguard Worker 2746*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psllv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 2747*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psllv32hi: 2748*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2749*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2750*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsllvw %zmm1, %zmm0, %zmm2 {%k1} 2751*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsllvw %zmm1, %zmm0, %zmm3 {%k1} {z} 2752*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpsllvw %zmm1, %zmm0, %zmm0 2753*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2754*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2755*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2756*9880d681SAndroid Build Coastguard Worker; 2757*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psllv32hi: 2758*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2759*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2760*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsllvw %zmm1, %zmm0, %zmm2 {%k1} 2761*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsllvw %zmm1, %zmm0, %zmm3 {%k1} {z} 2762*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpsllvw %zmm1, %zmm0, %zmm0 2763*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2764*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2765*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2766*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.psllv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 2767*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.psllv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3) 2768*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.psllv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 2769*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2770*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2771*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2772*9880d681SAndroid Build Coastguard Worker} 2773*9880d681SAndroid Build Coastguard Worker 2774*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmovzxb.w.512(<32 x i8>, <32 x i16>, i32) 2775*9880d681SAndroid Build Coastguard Worker 2776*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmovzxb_w_512(<32 x i8> %x0, <32 x i16> %x1, i32 %x2) { 2777*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmovzxb_w_512: 2778*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2779*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2780*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovzxbw {{.*#+}} zmm1 {%k1} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero 2781*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovzxbw {{.*#+}} zmm2 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero 2782*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovzxbw {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero 2783*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm2, %zmm1, %zmm1 2784*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2785*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2786*9880d681SAndroid Build Coastguard Worker; 2787*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmovzxb_w_512: 2788*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2789*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2790*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovzxbw {{.*#+}} zmm1 {%k1} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero 2791*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovzxbw {{.*#+}} zmm2 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero 2792*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovzxbw {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero 2793*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm2, %zmm1, %zmm1 2794*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2795*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2796*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pmovzxb.w.512(<32 x i8> %x0, <32 x i16> %x1, i32 %x2) 2797*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmovzxb.w.512(<32 x i8> %x0, <32 x i16> zeroinitializer, i32 %x2) 2798*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.pmovzxb.w.512(<32 x i8> %x0, <32 x i16> %x1, i32 -1) 2799*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2800*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2801*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2802*9880d681SAndroid Build Coastguard Worker} 2803*9880d681SAndroid Build Coastguard Worker 2804*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmovsxb.w.512(<32 x i8>, <32 x i16>, i32) 2805*9880d681SAndroid Build Coastguard Worker 2806*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmovsxb_w_512(<32 x i8> %x0, <32 x i16> %x1, i32 %x2) { 2807*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmovsxb_w_512: 2808*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2809*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2810*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovsxbw %ymm0, %zmm1 {%k1} 2811*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovsxbw %ymm0, %zmm2 {%k1} {z} 2812*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpmovsxbw %ymm0, %zmm0 2813*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm2, %zmm1, %zmm1 2814*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2815*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2816*9880d681SAndroid Build Coastguard Worker; 2817*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmovsxb_w_512: 2818*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2819*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2820*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovsxbw %ymm0, %zmm1 {%k1} 2821*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovsxbw %ymm0, %zmm2 {%k1} {z} 2822*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpmovsxbw %ymm0, %zmm0 2823*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm2, %zmm1, %zmm1 2824*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2825*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2826*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pmovsxb.w.512(<32 x i8> %x0, <32 x i16> %x1, i32 %x2) 2827*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmovsxb.w.512(<32 x i8> %x0, <32 x i16> zeroinitializer, i32 %x2) 2828*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.pmovsxb.w.512(<32 x i8> %x0, <32 x i16> %x1, i32 -1) 2829*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2830*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2831*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2832*9880d681SAndroid Build Coastguard Worker} 2833*9880d681SAndroid Build Coastguard Worker 2834*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.permvar.hi.512(<32 x i16>, <32 x i16>, <32 x i16>, i32) 2835*9880d681SAndroid Build Coastguard Worker 2836*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_permvar_hi_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) { 2837*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_permvar_hi_512: 2838*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2839*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2840*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpermw %zmm0, %zmm1, %zmm2 {%k1} 2841*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpermw %zmm0, %zmm1, %zmm3 {%k1} {z} 2842*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpermw %zmm0, %zmm1, %zmm0 2843*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2844*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2845*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2846*9880d681SAndroid Build Coastguard Worker; 2847*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_permvar_hi_512: 2848*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2849*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2850*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpermw %zmm0, %zmm1, %zmm2 {%k1} 2851*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpermw %zmm0, %zmm1, %zmm3 {%k1} {z} 2852*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpermw %zmm0, %zmm1, %zmm0 2853*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm3, %zmm2, %zmm1 2854*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 2855*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2856*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.permvar.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) 2857*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.permvar.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3) 2858*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.permvar.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1) 2859*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 2860*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res3, %res2 2861*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 2862*9880d681SAndroid Build Coastguard Worker} 2863*9880d681SAndroid Build Coastguard Worker 2864*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.ptestm.b.512(<64 x i8>, <64 x i8>, i64) 2865*9880d681SAndroid Build Coastguard Worker 2866*9880d681SAndroid Build Coastguard Workerdefine i64@test_int_x86_avx512_ptestm_b_512(<64 x i8> %x0, <64 x i8> %x1, i64 %x2) { 2867*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_ptestm_b_512: 2868*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2869*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 2870*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vptestmb %zmm1, %zmm0, %k0 {%k1} 2871*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 2872*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vptestmb %zmm1, %zmm0, %k0 2873*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 2874*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rax 2875*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2876*9880d681SAndroid Build Coastguard Worker; 2877*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_ptestm_b_512: 2878*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2879*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: subl $20, %esp 2880*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .Ltmp6: 2881*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .cfi_def_cfa_offset 24 2882*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 2883*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2884*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 2885*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vptestmb %zmm1, %zmm0, %k0 {%k1} 2886*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, (%esp) 2887*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vptestmb %zmm1, %zmm0, %k0 2888*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 2889*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl (%esp), %eax 2890*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %edx 2891*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 2892*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 2893*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl $20, %esp 2894*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2895*9880d681SAndroid Build Coastguard Worker %res = call i64 @llvm.x86.avx512.ptestm.b.512(<64 x i8> %x0, <64 x i8> %x1, i64 %x2) 2896*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.ptestm.b.512(<64 x i8> %x0, <64 x i8> %x1, i64-1) 2897*9880d681SAndroid Build Coastguard Worker %res2 = add i64 %res, %res1 2898*9880d681SAndroid Build Coastguard Worker ret i64 %res2 2899*9880d681SAndroid Build Coastguard Worker} 2900*9880d681SAndroid Build Coastguard Worker 2901*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.ptestm.w.512(<32 x i16>, <32 x i16>, i32) 2902*9880d681SAndroid Build Coastguard Worker 2903*9880d681SAndroid Build Coastguard Workerdefine i32@test_int_x86_avx512_ptestm_w_512(<32 x i16> %x0, <32 x i16> %x1, i32 %x2) { 2904*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_ptestm_w_512: 2905*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2906*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2907*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vptestmw %zmm1, %zmm0, %k0 {%k1} 2908*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 2909*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vptestmw %zmm1, %zmm0, %k0 2910*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 2911*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %eax 2912*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2913*9880d681SAndroid Build Coastguard Worker; 2914*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_ptestm_w_512: 2915*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2916*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2917*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vptestmw %zmm1, %zmm0, %k0 {%k1} 2918*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 2919*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vptestmw %zmm1, %zmm0, %k0 2920*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 2921*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %eax 2922*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2923*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.ptestm.w.512(<32 x i16> %x0, <32 x i16> %x1, i32 %x2) 2924*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.ptestm.w.512(<32 x i16> %x0, <32 x i16> %x1, i32-1) 2925*9880d681SAndroid Build Coastguard Worker %res2 = add i32 %res, %res1 2926*9880d681SAndroid Build Coastguard Worker ret i32 %res2 2927*9880d681SAndroid Build Coastguard Worker} 2928*9880d681SAndroid Build Coastguard Worker 2929*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.ptestnm.b.512(<64 x i8>, <64 x i8>, i64 %x2) 2930*9880d681SAndroid Build Coastguard Worker 2931*9880d681SAndroid Build Coastguard Workerdefine i64@test_int_x86_avx512_ptestnm_b_512(<64 x i8> %x0, <64 x i8> %x1, i64 %x2) { 2932*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_ptestnm_b_512: 2933*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2934*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rdi, %k1 2935*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vptestnmb %zmm1, %zmm0, %k0 {%k1} 2936*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rcx 2937*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vptestnmb %zmm1, %zmm0, %k0 2938*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %k0, %rax 2939*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addq %rcx, %rax 2940*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2941*9880d681SAndroid Build Coastguard Worker; 2942*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_ptestnm_b_512: 2943*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2944*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: subl $20, %esp 2945*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .Ltmp7: 2946*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: .cfi_def_cfa_offset 24 2947*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 2948*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2949*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 2950*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vptestnmb %zmm1, %zmm0, %k0 {%k1} 2951*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, (%esp) 2952*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vptestnmb %zmm1, %zmm0, %k0 2953*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovq %k0, {{[0-9]+}}(%esp) 2954*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl (%esp), %eax 2955*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %edx 2956*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl {{[0-9]+}}(%esp), %eax 2957*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: adcxl {{[0-9]+}}(%esp), %edx 2958*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl $20, %esp 2959*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2960*9880d681SAndroid Build Coastguard Worker %res = call i64 @llvm.x86.avx512.ptestnm.b.512(<64 x i8> %x0, <64 x i8> %x1, i64 %x2) 2961*9880d681SAndroid Build Coastguard Worker %res1 = call i64 @llvm.x86.avx512.ptestnm.b.512(<64 x i8> %x0, <64 x i8> %x1, i64-1) 2962*9880d681SAndroid Build Coastguard Worker %res2 = add i64 %res, %res1 2963*9880d681SAndroid Build Coastguard Worker ret i64 %res2 2964*9880d681SAndroid Build Coastguard Worker} 2965*9880d681SAndroid Build Coastguard Worker 2966*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.ptestnm.w.512(<32 x i16>, <32 x i16>, i32 %x2) 2967*9880d681SAndroid Build Coastguard Worker 2968*9880d681SAndroid Build Coastguard Workerdefine i32@test_int_x86_avx512_ptestnm_w_512(<32 x i16> %x0, <32 x i16> %x1, i32 %x2) { 2969*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_ptestnm_w_512: 2970*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2971*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %edi, %k1 2972*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vptestnmw %zmm1, %zmm0, %k0 {%k1} 2973*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %ecx 2974*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vptestnmw %zmm1, %zmm0, %k0 2975*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %k0, %eax 2976*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: addl %ecx, %eax 2977*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 2978*9880d681SAndroid Build Coastguard Worker; 2979*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_ptestnm_w_512: 2980*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 2981*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 2982*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vptestnmw %zmm1, %zmm0, %k0 {%k1} 2983*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %ecx 2984*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vptestnmw %zmm1, %zmm0, %k0 2985*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd %k0, %eax 2986*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: addl %ecx, %eax 2987*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 2988*9880d681SAndroid Build Coastguard Worker %res = call i32 @llvm.x86.avx512.ptestnm.w.512(<32 x i16> %x0, <32 x i16> %x1, i32 %x2) 2989*9880d681SAndroid Build Coastguard Worker %res1 = call i32 @llvm.x86.avx512.ptestnm.w.512(<32 x i16> %x0, <32 x i16> %x1, i32-1) 2990*9880d681SAndroid Build Coastguard Worker %res2 = add i32 %res, %res1 2991*9880d681SAndroid Build Coastguard Worker ret i32 %res2 2992*9880d681SAndroid Build Coastguard Worker} 2993*9880d681SAndroid Build Coastguard Worker 2994*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.512(i8, <64 x i8>, i64) 2995*9880d681SAndroid Build Coastguard Worker 2996*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pbroadcast_b_gpr_512(i8 %x0, <64 x i8> %x1, i64 %mask) { 2997*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pbroadcast_b_gpr_512: 2998*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 2999*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovq %rsi, %k1 3000*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpbroadcastb %dil, %zmm0 {%k1} 3001*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpbroadcastb %dil, %zmm1 {%k1} {z} 3002*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpbroadcastb %dil, %zmm2 3003*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %zmm0, %zmm2, %zmm0 3004*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddb %zmm0, %zmm1, %zmm0 3005*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 3006*9880d681SAndroid Build Coastguard Worker; 3007*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pbroadcast_b_gpr_512: 3008*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 3009*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movb {{[0-9]+}}(%esp), %al 3010*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k0 3011*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 3012*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kunpckdq %k0, %k1, %k1 3013*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpbroadcastb %al, %zmm1 {%k1} {z} 3014*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpbroadcastb %al, %zmm0 {%k1} 3015*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpbroadcastb %al, %zmm2 3016*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %zmm0, %zmm2, %zmm0 3017*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddb %zmm0, %zmm1, %zmm0 3018*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 3019*9880d681SAndroid Build Coastguard Worker %res = call <64 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.512(i8 %x0, <64 x i8> %x1, i64 -1) 3020*9880d681SAndroid Build Coastguard Worker %res1 = call <64 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.512(i8 %x0, <64 x i8> %x1, i64 %mask) 3021*9880d681SAndroid Build Coastguard Worker %res2 = call <64 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.512(i8 %x0, <64 x i8> zeroinitializer, i64 %mask) 3022*9880d681SAndroid Build Coastguard Worker %res3 = add <64 x i8> %res, %res1 3023*9880d681SAndroid Build Coastguard Worker %res4 = add <64 x i8> %res2, %res3 3024*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res4 3025*9880d681SAndroid Build Coastguard Worker} 3026*9880d681SAndroid Build Coastguard Worker 3027*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.512(i16, <32 x i16>, i32) 3028*9880d681SAndroid Build Coastguard Worker 3029*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pbroadcast_w_gpr_512(i16 %x0, <32 x i16> %x1, i32 %mask) { 3030*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pbroadcast_w_gpr_512: 3031*9880d681SAndroid Build Coastguard Worker; AVX512BW: ## BB#0: 3032*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: kmovd %esi, %k1 3033*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpbroadcastw %di, %zmm0 {%k1} 3034*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpbroadcastw %di, %zmm1 {%k1} {z} 3035*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpbroadcastw %di, %zmm2 3036*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm2, %zmm0 3037*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: vpaddw %zmm0, %zmm1, %zmm0 3038*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT: retq 3039*9880d681SAndroid Build Coastguard Worker; 3040*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pbroadcast_w_gpr_512: 3041*9880d681SAndroid Build Coastguard Worker; AVX512F-32: # BB#0: 3042*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: movzwl {{[0-9]+}}(%esp), %eax 3043*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: kmovd {{[0-9]+}}(%esp), %k1 3044*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpbroadcastw %ax, %zmm0 {%k1} 3045*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpbroadcastw %ax, %zmm1 {%k1} {z} 3046*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpbroadcastw %ax, %zmm2 3047*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm2, %zmm0 3048*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: vpaddw %zmm0, %zmm1, %zmm0 3049*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT: retl 3050*9880d681SAndroid Build Coastguard Worker %res = call <32 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.512(i16 %x0, <32 x i16> %x1, i32 -1) 3051*9880d681SAndroid Build Coastguard Worker %res1 = call <32 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.512(i16 %x0, <32 x i16> %x1, i32 %mask) 3052*9880d681SAndroid Build Coastguard Worker %res2 = call <32 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.512(i16 %x0, <32 x i16> zeroinitializer, i32 %mask) 3053*9880d681SAndroid Build Coastguard Worker %res3 = add <32 x i16> %res, %res1 3054*9880d681SAndroid Build Coastguard Worker %res4 = add <32 x i16> %res2, %res3 3055*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res4 3056*9880d681SAndroid Build Coastguard Worker} 3057