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 -stack-symbol-ordering=0 -march=x86-64 -mtriple=x86_64-apple-darwin -mcpu=knl | FileCheck %s --check-prefix=CHECK --check-prefix=KNL 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -stack-symbol-ordering=0 -march=x86-64 -mtriple=x86_64-apple-darwin -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine i16 @mask16(i16 %x) { 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mask16: 7*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k0 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: knotw %k0, %k0 10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AX<def> %AX<kill> %EAX<kill> 12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 13*9880d681SAndroid Build Coastguard Worker %m0 = bitcast i16 %x to <16 x i1> 14*9880d681SAndroid Build Coastguard Worker %m1 = xor <16 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1> 15*9880d681SAndroid Build Coastguard Worker %ret = bitcast <16 x i1> %m1 to i16 16*9880d681SAndroid Build Coastguard Worker ret i16 %ret 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerdefine i32 @mask16_zext(i16 %x) { 20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mask16_zext: 21*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %edi, %k0 23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: knotw %k0, %k0 24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 26*9880d681SAndroid Build Coastguard Worker %m0 = bitcast i16 %x to <16 x i1> 27*9880d681SAndroid Build Coastguard Worker %m1 = xor <16 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1> 28*9880d681SAndroid Build Coastguard Worker %m2 = bitcast <16 x i1> %m1 to i16 29*9880d681SAndroid Build Coastguard Worker %ret = zext i16 %m2 to i32 30*9880d681SAndroid Build Coastguard Worker ret i32 %ret 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerdefine i8 @mask8(i8 %x) { 34*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: mask8: 35*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 36*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %edi, %k0 37*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: knotw %k0, %k0 38*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 39*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %AL<def> %AL<kill> %EAX<kill> 40*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 41*9880d681SAndroid Build Coastguard Worker; 42*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: mask8: 43*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 44*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %edi, %k0 45*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: knotb %k0, %k0 46*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, %eax 47*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: ## kill: %AL<def> %AL<kill> %EAX<kill> 48*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 49*9880d681SAndroid Build Coastguard Worker %m0 = bitcast i8 %x to <8 x i1> 50*9880d681SAndroid Build Coastguard Worker %m1 = xor <8 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1> 51*9880d681SAndroid Build Coastguard Worker %ret = bitcast <8 x i1> %m1 to i8 52*9880d681SAndroid Build Coastguard Worker ret i8 %ret 53*9880d681SAndroid Build Coastguard Worker} 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Workerdefine i32 @mask8_zext(i8 %x) { 56*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: mask8_zext: 57*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 58*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %edi, %k0 59*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: knotw %k0, %k0 60*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 61*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 62*9880d681SAndroid Build Coastguard Worker; 63*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: mask8_zext: 64*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 65*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %edi, %k0 66*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: knotb %k0, %k0 67*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, %eax 68*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 69*9880d681SAndroid Build Coastguard Worker %m0 = bitcast i8 %x to <8 x i1> 70*9880d681SAndroid Build Coastguard Worker %m1 = xor <8 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1> 71*9880d681SAndroid Build Coastguard Worker %m2 = bitcast <8 x i1> %m1 to i8 72*9880d681SAndroid Build Coastguard Worker %ret = zext i8 %m2 to i32 73*9880d681SAndroid Build Coastguard Worker ret i32 %ret 74*9880d681SAndroid Build Coastguard Worker} 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Workerdefine void @mask16_mem(i16* %ptr) { 77*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mask16_mem: 78*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 79*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw (%rdi), %k0 80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: knotw %k0, %k0 81*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, (%rdi) 82*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 83*9880d681SAndroid Build Coastguard Worker %x = load i16, i16* %ptr, align 4 84*9880d681SAndroid Build Coastguard Worker %m0 = bitcast i16 %x to <16 x i1> 85*9880d681SAndroid Build Coastguard Worker %m1 = xor <16 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1> 86*9880d681SAndroid Build Coastguard Worker %ret = bitcast <16 x i1> %m1 to i16 87*9880d681SAndroid Build Coastguard Worker store i16 %ret, i16* %ptr, align 4 88*9880d681SAndroid Build Coastguard Worker ret void 89*9880d681SAndroid Build Coastguard Worker} 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Workerdefine void @mask8_mem(i8* %ptr) { 92*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: mask8_mem: 93*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 94*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movzbl (%rdi), %eax 95*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %eax, %k0 96*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: knotw %k0, %k0 97*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 98*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb %al, (%rdi) 99*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 100*9880d681SAndroid Build Coastguard Worker; 101*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: mask8_mem: 102*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 103*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb (%rdi), %k0 104*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: knotb %k0, %k0 105*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, (%rdi) 106*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 107*9880d681SAndroid Build Coastguard Worker %x = load i8, i8* %ptr, align 4 108*9880d681SAndroid Build Coastguard Worker %m0 = bitcast i8 %x to <8 x i1> 109*9880d681SAndroid Build Coastguard Worker %m1 = xor <8 x i1> %m0, <i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1, i1 -1> 110*9880d681SAndroid Build Coastguard Worker %ret = bitcast <8 x i1> %m1 to i8 111*9880d681SAndroid Build Coastguard Worker store i8 %ret, i8* %ptr, align 4 112*9880d681SAndroid Build Coastguard Worker ret void 113*9880d681SAndroid Build Coastguard Worker} 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Workerdefine i16 @mand16(i16 %x, i16 %y) { 116*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mand16: 117*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %edi, %eax 119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xorl %esi, %eax 120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl %esi, %edi 121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orl %eax, %edi 122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %edi, %eax 123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 124*9880d681SAndroid Build Coastguard Worker %ma = bitcast i16 %x to <16 x i1> 125*9880d681SAndroid Build Coastguard Worker %mb = bitcast i16 %y to <16 x i1> 126*9880d681SAndroid Build Coastguard Worker %mc = and <16 x i1> %ma, %mb 127*9880d681SAndroid Build Coastguard Worker %md = xor <16 x i1> %ma, %mb 128*9880d681SAndroid Build Coastguard Worker %me = or <16 x i1> %mc, %md 129*9880d681SAndroid Build Coastguard Worker %ret = bitcast <16 x i1> %me to i16 130*9880d681SAndroid Build Coastguard Worker ret i16 %ret 131*9880d681SAndroid Build Coastguard Worker} 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workerdefine i16 @mand16_mem(<16 x i1>* %x, <16 x i1>* %y) { 134*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mand16_mem: 135*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw (%rdi), %k0 137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw (%rsi), %k1 138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kandw %k1, %k0, %k2 139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kxorw %k1, %k0, %k0 140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: korw %k0, %k2, %k0 141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AX<def> %AX<kill> %EAX<kill> 143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 144*9880d681SAndroid Build Coastguard Worker %ma = load <16 x i1>, <16 x i1>* %x 145*9880d681SAndroid Build Coastguard Worker %mb = load <16 x i1>, <16 x i1>* %y 146*9880d681SAndroid Build Coastguard Worker %mc = and <16 x i1> %ma, %mb 147*9880d681SAndroid Build Coastguard Worker %md = xor <16 x i1> %ma, %mb 148*9880d681SAndroid Build Coastguard Worker %me = or <16 x i1> %mc, %md 149*9880d681SAndroid Build Coastguard Worker %ret = bitcast <16 x i1> %me to i16 150*9880d681SAndroid Build Coastguard Worker ret i16 %ret 151*9880d681SAndroid Build Coastguard Worker} 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Workerdefine i8 @shuf_test1(i16 %v) nounwind { 154*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: shuf_test1: 155*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 156*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %edi, %k0 157*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $8, %k0, %k0 158*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 159*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %AL<def> %AL<kill> %EAX<kill> 160*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 161*9880d681SAndroid Build Coastguard Worker; 162*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: shuf_test1: 163*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 164*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovw %edi, %k0 165*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftrw $8, %k0, %k0 166*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, %eax 167*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: ## kill: %AL<def> %AL<kill> %EAX<kill> 168*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 169*9880d681SAndroid Build Coastguard Worker %v1 = bitcast i16 %v to <16 x i1> 170*9880d681SAndroid Build Coastguard Worker %mask = shufflevector <16 x i1> %v1, <16 x i1> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 171*9880d681SAndroid Build Coastguard Worker %mask1 = bitcast <8 x i1> %mask to i8 172*9880d681SAndroid Build Coastguard Worker ret i8 %mask1 173*9880d681SAndroid Build Coastguard Worker} 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Workerdefine i32 @zext_test1(<16 x i32> %a, <16 x i32> %b) { 176*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: zext_test1: 177*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnleud %zmm1, %zmm0, %k0 179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kshiftlw $10, %k0, %k0 180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kshiftrw $15, %k0, %k0 181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 183*9880d681SAndroid Build Coastguard Worker %cmp_res = icmp ugt <16 x i32> %a, %b 184*9880d681SAndroid Build Coastguard Worker %cmp_res.i1 = extractelement <16 x i1> %cmp_res, i32 5 185*9880d681SAndroid Build Coastguard Worker %res = zext i1 %cmp_res.i1 to i32 186*9880d681SAndroid Build Coastguard Worker ret i32 %res 187*9880d681SAndroid Build Coastguard Worker} 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Workerdefine i16 @zext_test2(<16 x i32> %a, <16 x i32> %b) { 190*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: zext_test2: 191*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnleud %zmm1, %zmm0, %k0 193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kshiftlw $10, %k0, %k0 194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kshiftrw $15, %k0, %k0 195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 197*9880d681SAndroid Build Coastguard Worker %cmp_res = icmp ugt <16 x i32> %a, %b 198*9880d681SAndroid Build Coastguard Worker %cmp_res.i1 = extractelement <16 x i1> %cmp_res, i32 5 199*9880d681SAndroid Build Coastguard Worker %res = zext i1 %cmp_res.i1 to i16 200*9880d681SAndroid Build Coastguard Worker ret i16 %res 201*9880d681SAndroid Build Coastguard Worker} 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Workerdefine i8 @zext_test3(<16 x i32> %a, <16 x i32> %b) { 204*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: zext_test3: 205*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vpcmpnleud %zmm1, %zmm0, %k0 207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kshiftlw $10, %k0, %k0 208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kshiftrw $15, %k0, %k0 209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: kmovw %k0, %eax 210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ## kill: %AL<def> %AL<kill> %AX<kill> 211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 212*9880d681SAndroid Build Coastguard Worker %cmp_res = icmp ugt <16 x i32> %a, %b 213*9880d681SAndroid Build Coastguard Worker %cmp_res.i1 = extractelement <16 x i1> %cmp_res, i32 5 214*9880d681SAndroid Build Coastguard Worker %res = zext i1 %cmp_res.i1 to i8 215*9880d681SAndroid Build Coastguard Worker ret i8 %res 216*9880d681SAndroid Build Coastguard Worker} 217*9880d681SAndroid Build Coastguard Worker 218*9880d681SAndroid Build Coastguard Workerdefine i8 @conv1(<8 x i1>* %R) { 219*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: conv1: 220*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: ## %entry 221*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kxnorw %k0, %k0, %k0 222*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 223*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb %al, (%rdi) 224*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb $-2, -{{[0-9]+}}(%rsp) 225*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb $-2, %al 226*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 227*9880d681SAndroid Build Coastguard Worker; 228*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: conv1: 229*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: ## %entry 230*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kxnorw %k0, %k0, %k0 231*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, (%rdi) 232*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: movb $-2, -{{[0-9]+}}(%rsp) 233*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: movb $-2, %al 234*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 235*9880d681SAndroid Build Coastguard Workerentry: 236*9880d681SAndroid Build Coastguard Worker store <8 x i1> <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>, <8 x i1>* %R 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Worker %maskPtr = alloca <8 x i1> 239*9880d681SAndroid Build Coastguard Worker store <8 x i1> <i1 0, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>, <8 x i1>* %maskPtr 240*9880d681SAndroid Build Coastguard Worker %mask = load <8 x i1>, <8 x i1>* %maskPtr 241*9880d681SAndroid Build Coastguard Worker %mask_convert = bitcast <8 x i1> %mask to i8 242*9880d681SAndroid Build Coastguard Worker ret i8 %mask_convert 243*9880d681SAndroid Build Coastguard Worker} 244*9880d681SAndroid Build Coastguard Worker 245*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test4(<4 x i64> %x, <4 x i64> %y, <4 x i64> %x1, <4 x i64> %y1) { 246*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test4: 247*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 248*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtq %ymm1, %ymm0, %ymm0 249*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovqd %zmm0, %ymm0 250*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm0, %xmm0 251*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm0, %xmm0 252*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtq %ymm3, %ymm2, %ymm1 253*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovqd %zmm1, %ymm1 254*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %xmm1, %xmm1 255*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsrad $31, %xmm1, %xmm1 256*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0 257*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 258*9880d681SAndroid Build Coastguard Worker; 259*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test4: 260*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 261*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpgtq %ymm3, %ymm2, %k0 262*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: knotw %k0, %k1 263*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpgtq %ymm1, %ymm0, %k0 {%k1} 264*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2d %k0, %xmm0 265*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 266*9880d681SAndroid Build Coastguard Worker %x_gt_y = icmp sgt <4 x i64> %x, %y 267*9880d681SAndroid Build Coastguard Worker %x1_gt_y1 = icmp sgt <4 x i64> %x1, %y1 268*9880d681SAndroid Build Coastguard Worker %res = icmp sgt <4 x i1>%x_gt_y, %x1_gt_y1 269*9880d681SAndroid Build Coastguard Worker %resse = sext <4 x i1>%res to <4 x i32> 270*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %resse 271*9880d681SAndroid Build Coastguard Worker} 272*9880d681SAndroid Build Coastguard Worker 273*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test5(<2 x i64> %x, <2 x i64> %y, <2 x i64> %x1, <2 x i64> %y1) { 274*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test5: 275*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 276*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm0 277*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtq %xmm3, %xmm2, %xmm1 278*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm0 279*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 280*9880d681SAndroid Build Coastguard Worker; 281*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test5: 282*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 283*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpgtq %xmm0, %xmm1, %k0 284*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: knotw %k0, %k1 285*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpgtq %xmm3, %xmm2, %k0 {%k1} 286*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2q %k0, %xmm0 287*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 288*9880d681SAndroid Build Coastguard Worker %x_gt_y = icmp slt <2 x i64> %x, %y 289*9880d681SAndroid Build Coastguard Worker %x1_gt_y1 = icmp sgt <2 x i64> %x1, %y1 290*9880d681SAndroid Build Coastguard Worker %res = icmp slt <2 x i1>%x_gt_y, %x1_gt_y1 291*9880d681SAndroid Build Coastguard Worker %resse = sext <2 x i1>%res to <2 x i64> 292*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %resse 293*9880d681SAndroid Build Coastguard Worker}define void @test6(<16 x i1> %mask) { 294*9880d681SAndroid Build Coastguard Workerallocas: 295*9880d681SAndroid Build Coastguard Worker %a= and <16 x i1> %mask, <i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false> 296*9880d681SAndroid Build Coastguard Worker %b = bitcast <16 x i1> %a to i16 297*9880d681SAndroid Build Coastguard Worker %c = icmp eq i16 %b, 0 298*9880d681SAndroid Build Coastguard Worker br i1 %c, label %true, label %false 299*9880d681SAndroid Build Coastguard Worker 300*9880d681SAndroid Build Coastguard Workertrue: 301*9880d681SAndroid Build Coastguard Worker ret void 302*9880d681SAndroid Build Coastguard Worker 303*9880d681SAndroid Build Coastguard Workerfalse: 304*9880d681SAndroid Build Coastguard Worker ret void 305*9880d681SAndroid Build Coastguard Worker} 306*9880d681SAndroid Build Coastguard Workerdefine void @test7(<8 x i1> %mask) { 307*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test7: 308*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: ## %allocas 309*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 310*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 311*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k0 312*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb $85, %al 313*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %eax, %k1 314*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: korw %k1, %k0, %k0 315*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 316*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: testb %al, %al 317*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 318*9880d681SAndroid Build Coastguard Worker; 319*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test7: 320*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: ## %allocas 321*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 322*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k0 323*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: movb $85, %al 324*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %eax, %k1 325*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: korb %k1, %k0, %k0 326*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: ktestb %k0, %k0 327*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 328*9880d681SAndroid Build Coastguard Workerallocas: 329*9880d681SAndroid Build Coastguard Worker %a= or <8 x i1> %mask, <i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false> 330*9880d681SAndroid Build Coastguard Worker %b = bitcast <8 x i1> %a to i8 331*9880d681SAndroid Build Coastguard Worker %c = icmp eq i8 %b, 0 332*9880d681SAndroid Build Coastguard Worker br i1 %c, label %true, label %false 333*9880d681SAndroid Build Coastguard Worker 334*9880d681SAndroid Build Coastguard Workertrue: 335*9880d681SAndroid Build Coastguard Worker ret void 336*9880d681SAndroid Build Coastguard Worker 337*9880d681SAndroid Build Coastguard Workerfalse: 338*9880d681SAndroid Build Coastguard Worker ret void 339*9880d681SAndroid Build Coastguard Worker} 340*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test8(<16 x i32>%a, <16 x i32>%b, i32 %a1, i32 %b1) { 341*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test8: 342*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 343*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpxord %zmm2, %zmm2, %zmm2 344*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: cmpl %esi, %edi 345*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: jg LBB17_1 346*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## BB#2: 347*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpltud %zmm2, %zmm1, %k1 348*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: jmp LBB17_3 349*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: LBB17_1: 350*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtd %zmm2, %zmm0, %k1 351*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: LBB17_3: 352*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 353*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z} 354*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm0, %xmm0 355*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 356*9880d681SAndroid Build Coastguard Worker; 357*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test8: 358*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 359*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpxord %zmm2, %zmm2, %zmm2 360*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: cmpl %esi, %edi 361*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: jg LBB17_1 362*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: ## BB#2: 363*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpltud %zmm2, %zmm1, %k0 364*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2b %k0, %xmm0 365*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 366*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: LBB17_1: 367*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpcmpgtd %zmm2, %zmm0, %k0 368*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2b %k0, %xmm0 369*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 370*9880d681SAndroid Build Coastguard Worker %cond = icmp sgt i32 %a1, %b1 371*9880d681SAndroid Build Coastguard Worker %cmp1 = icmp sgt <16 x i32> %a, zeroinitializer 372*9880d681SAndroid Build Coastguard Worker %cmp2 = icmp ult <16 x i32> %b, zeroinitializer 373*9880d681SAndroid Build Coastguard Worker %mix = select i1 %cond, <16 x i1> %cmp1, <16 x i1> %cmp2 374*9880d681SAndroid Build Coastguard Worker %res = sext <16 x i1> %mix to <16 x i8> 375*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %res 376*9880d681SAndroid Build Coastguard Worker} 377*9880d681SAndroid Build Coastguard Workerdefine <16 x i1> @test9(<16 x i1>%a, <16 x i1>%b, i32 %a1, i32 %b1) { 378*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test9: 379*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 380*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: cmpl %esi, %edi 381*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: jg LBB18_1 382*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## BB#2: 383*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm1, %zmm0 384*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: jmp LBB18_3 385*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: LBB18_1: 386*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 387*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: LBB18_3: 388*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 389*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k1 390*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 391*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z} 392*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm0, %xmm0 393*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 394*9880d681SAndroid Build Coastguard Worker; 395*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test9: 396*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 397*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: cmpl %esi, %edi 398*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: jg LBB18_1 399*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: ## BB#2: 400*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm1, %xmm0 401*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: jmp LBB18_3 402*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: LBB18_1: 403*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm0, %xmm0 404*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: LBB18_3: 405*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm0, %k0 406*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2b %k0, %xmm0 407*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 408*9880d681SAndroid Build Coastguard Worker %mask = icmp sgt i32 %a1, %b1 409*9880d681SAndroid Build Coastguard Worker %c = select i1 %mask, <16 x i1>%a, <16 x i1>%b 410*9880d681SAndroid Build Coastguard Worker ret <16 x i1>%c 411*9880d681SAndroid Build Coastguard Worker}define <8 x i1> @test10(<8 x i1>%a, <8 x i1>%b, i32 %a1, i32 %b1) { 412*9880d681SAndroid Build Coastguard Worker %mask = icmp sgt i32 %a1, %b1 413*9880d681SAndroid Build Coastguard Worker %c = select i1 %mask, <8 x i1>%a, <8 x i1>%b 414*9880d681SAndroid Build Coastguard Worker ret <8 x i1>%c 415*9880d681SAndroid Build Coastguard Worker} 416*9880d681SAndroid Build Coastguard Worker 417*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test11(<4 x i1>%a, <4 x i1>%b, i32 %a1, i32 %b1) { 418*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test11: 419*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 420*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: cmpl %esi, %edi 421*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: jg LBB20_2 422*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## BB#1: 423*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovaps %zmm1, %zmm0 424*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: LBB20_2: 425*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 426*9880d681SAndroid Build Coastguard Worker; 427*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test11: 428*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 429*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: cmpl %esi, %edi 430*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: jg LBB20_1 431*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: ## BB#2: 432*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm1, %xmm0 433*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: jmp LBB20_3 434*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: LBB20_1: 435*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 436*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: LBB20_3: 437*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k0 438*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2d %k0, %xmm0 439*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 440*9880d681SAndroid Build Coastguard Worker %mask = icmp sgt i32 %a1, %b1 441*9880d681SAndroid Build Coastguard Worker %c = select i1 %mask, <4 x i1>%a, <4 x i1>%b 442*9880d681SAndroid Build Coastguard Worker ret <4 x i1>%c 443*9880d681SAndroid Build Coastguard Worker} 444*9880d681SAndroid Build Coastguard Worker 445*9880d681SAndroid Build Coastguard Workerdefine i32 @test12(i32 %x, i32 %y) { 446*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test12: 447*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 448*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %edi, %eax 449*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 450*9880d681SAndroid Build Coastguard Worker %a = bitcast i16 21845 to <16 x i1> 451*9880d681SAndroid Build Coastguard Worker %b = extractelement <16 x i1> %a, i32 0 452*9880d681SAndroid Build Coastguard Worker %c = select i1 %b, i32 %x, i32 %y 453*9880d681SAndroid Build Coastguard Worker ret i32 %c 454*9880d681SAndroid Build Coastguard Worker} 455*9880d681SAndroid Build Coastguard Worker 456*9880d681SAndroid Build Coastguard Workerdefine i32 @test13(i32 %x, i32 %y) { 457*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test13: 458*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 459*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %esi, %eax 460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 461*9880d681SAndroid Build Coastguard Worker %a = bitcast i16 21845 to <16 x i1> 462*9880d681SAndroid Build Coastguard Worker %b = extractelement <16 x i1> %a, i32 3 463*9880d681SAndroid Build Coastguard Worker %c = select i1 %b, i32 %x, i32 %y 464*9880d681SAndroid Build Coastguard Worker ret i32 %c 465*9880d681SAndroid Build Coastguard Worker}define <4 x i1> @test14() { 466*9880d681SAndroid Build Coastguard Worker %a = bitcast i16 21845 to <16 x i1> 467*9880d681SAndroid Build Coastguard Worker %b = extractelement <16 x i1> %a, i32 2 468*9880d681SAndroid Build Coastguard Worker %c = insertelement <4 x i1> <i1 true, i1 false, i1 false, i1 true>, i1 %b, i32 1 469*9880d681SAndroid Build Coastguard Worker ret <4 x i1> %c 470*9880d681SAndroid Build Coastguard Worker} 471*9880d681SAndroid Build Coastguard Worker 472*9880d681SAndroid Build Coastguard Workerdefine <16 x i1> @test15(i32 %x, i32 %y) { 473*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test15: 474*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 475*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: cmpl %esi, %edi 476*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movw $21845, %ax ## imm = 0x5555 477*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movw $1, %cx 478*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: cmovgw %ax, %cx 479*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %ecx, %k1 480*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 481*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z} 482*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm0, %xmm0 483*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 484*9880d681SAndroid Build Coastguard Worker; 485*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test15: 486*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 487*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: cmpl %esi, %edi 488*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: movw $21845, %ax ## imm = 0x5555 489*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: movw $1, %cx 490*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: cmovgw %ax, %cx 491*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovw %ecx, %k0 492*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2b %k0, %xmm0 493*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 494*9880d681SAndroid Build Coastguard Worker %a = bitcast i16 21845 to <16 x i1> 495*9880d681SAndroid Build Coastguard Worker %b = bitcast i16 1 to <16 x i1> 496*9880d681SAndroid Build Coastguard Worker %mask = icmp sgt i32 %x, %y 497*9880d681SAndroid Build Coastguard Worker %c = select i1 %mask, <16 x i1> %a, <16 x i1> %b 498*9880d681SAndroid Build Coastguard Worker ret <16 x i1> %c 499*9880d681SAndroid Build Coastguard Worker} 500*9880d681SAndroid Build Coastguard Worker 501*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test16(i64 %x) { 502*9880d681SAndroid Build Coastguard Worker; 503*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test16: 504*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 505*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %rbp 506*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp0: 507*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_def_cfa_offset 16 508*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp1: 509*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_offset %rbp, -16 510*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movq %rsp, %rbp 511*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp2: 512*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_def_cfa_register %rbp 513*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: andq $-32, %rsp 514*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: subq $64, %rsp 515*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movl %edi, (%rsp) 516*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: shrq $32, %rdi 517*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movl %edi, {{[0-9]+}}(%rsp) 518*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 519*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw (%rsp), %k1 520*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm0, %zmm1 {%k1} {z} 521*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm1, %xmm1 522*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw {{[0-9]+}}(%rsp), %k1 523*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm0, %zmm2 {%k1} {z} 524*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm2, %xmm2 525*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm2 526*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movl $1, %eax 527*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, %eax, %xmm1, %xmm1 528*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpblendd {{.*#+}} ymm2 = ymm1[0,1,2,3],ymm2[4,5,6,7] 529*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw {{[0-9]+}}(%rsp), %k1 530*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm0, %zmm1 {%k1} {z} 531*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm1, %xmm1 532*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw {{[0-9]+}}(%rsp), %k1 533*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z} 534*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm0, %xmm0 535*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm1 536*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $7, %ymm2, %ymm0 537*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand {{.*}}(%rip), %ymm0, %ymm0 538*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpxor %ymm2, %ymm2, %ymm2 539*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtb %ymm0, %ymm2, %ymm0 540*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movq %rbp, %rsp 541*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %rbp 542*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 543*9880d681SAndroid Build Coastguard Worker; 544*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test16: 545*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 546*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovq %rdi, %k0 547*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kxnorw %k0, %k0, %k1 548*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftrw $15, %k1, %k1 549*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftlq $5, %k1, %k1 550*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: korq %k1, %k0, %k0 551*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2b %k0, %zmm0 552*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 553*9880d681SAndroid Build Coastguard Worker %a = bitcast i64 %x to <64 x i1> 554*9880d681SAndroid Build Coastguard Worker %b = insertelement <64 x i1>%a, i1 true, i32 5 555*9880d681SAndroid Build Coastguard Worker %c = sext <64 x i1>%b to <64 x i8> 556*9880d681SAndroid Build Coastguard Worker ret <64 x i8>%c 557*9880d681SAndroid Build Coastguard Worker} 558*9880d681SAndroid Build Coastguard Worker 559*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test17(i64 %x, i32 %y, i32 %z) { 560*9880d681SAndroid Build Coastguard Worker; 561*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test17: 562*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 563*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %rbp 564*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp3: 565*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_def_cfa_offset 16 566*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp4: 567*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_offset %rbp, -16 568*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movq %rsp, %rbp 569*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp5: 570*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_def_cfa_register %rbp 571*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: andq $-32, %rsp 572*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: subq $64, %rsp 573*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movl %edi, (%rsp) 574*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: shrq $32, %rdi 575*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movl %edi, {{[0-9]+}}(%rsp) 576*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm1, %zmm1, %zmm1 577*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw (%rsp), %k1 578*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm1, %zmm0 {%k1} {z} 579*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm0, %xmm0 580*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw {{[0-9]+}}(%rsp), %k1 581*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm1, %zmm2 {%k1} {z} 582*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm2, %xmm2 583*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm2 584*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: xorl %eax, %eax 585*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: cmpl %edx, %esi 586*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: setg %al 587*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, %eax, %xmm0, %xmm0 588*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpblendd {{.*#+}} ymm0 = ymm0[0,1,2,3],ymm2[4,5,6,7] 589*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $7, %ymm0, %ymm0 590*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand {{.*}}(%rip), %ymm0, %ymm0 591*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpxor %ymm2, %ymm2, %ymm2 592*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtb %ymm0, %ymm2, %ymm0 593*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw {{[0-9]+}}(%rsp), %k1 594*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm1, %zmm2 {%k1} {z} 595*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm2, %xmm2 596*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw {{[0-9]+}}(%rsp), %k1 597*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm1, %zmm1 {%k1} {z} 598*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm1, %xmm1 599*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm1 600*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movq %rbp, %rsp 601*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %rbp 602*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 603*9880d681SAndroid Build Coastguard Worker; 604*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test17: 605*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 606*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovq %rdi, %k0 607*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: cmpl %edx, %esi 608*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: setg %al 609*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovw %eax, %k1 610*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftlq $5, %k1, %k1 611*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: korq %k1, %k0, %k0 612*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2b %k0, %zmm0 613*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 614*9880d681SAndroid Build Coastguard Worker %a = bitcast i64 %x to <64 x i1> 615*9880d681SAndroid Build Coastguard Worker %b = icmp sgt i32 %y, %z 616*9880d681SAndroid Build Coastguard Worker %c = insertelement <64 x i1>%a, i1 %b, i32 5 617*9880d681SAndroid Build Coastguard Worker %d = sext <64 x i1>%c to <64 x i8> 618*9880d681SAndroid Build Coastguard Worker ret <64 x i8>%d 619*9880d681SAndroid Build Coastguard Worker} 620*9880d681SAndroid Build Coastguard Worker 621*9880d681SAndroid Build Coastguard Workerdefine <8 x i1> @test18(i8 %a, i16 %y) { 622*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test18: 623*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 624*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %edi, %k0 625*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %esi, %k1 626*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k1, %k2 627*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k2, %k2 628*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k1, %k1 629*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 630*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k1, %k1 631*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: korw %k1, %k0, %k0 632*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k2, %k1 633*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: korw %k1, %k0, %k1 634*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 635*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z} 636*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovqw %zmm0, %xmm0 637*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 638*9880d681SAndroid Build Coastguard Worker; 639*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test18: 640*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 641*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %edi, %k0 642*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovw %esi, %k1 643*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftlw $6, %k1, %k2 644*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftrw $15, %k2, %k2 645*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftlw $7, %k1, %k1 646*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftrw $15, %k1, %k1 647*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftlb $7, %k1, %k1 648*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftlb $6, %k2, %k2 649*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: korb %k2, %k0, %k0 650*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: korb %k1, %k0, %k0 651*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2w %k0, %xmm0 652*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 653*9880d681SAndroid Build Coastguard Worker %b = bitcast i8 %a to <8 x i1> 654*9880d681SAndroid Build Coastguard Worker %b1 = bitcast i16 %y to <16 x i1> 655*9880d681SAndroid Build Coastguard Worker %el1 = extractelement <16 x i1>%b1, i32 8 656*9880d681SAndroid Build Coastguard Worker %el2 = extractelement <16 x i1>%b1, i32 9 657*9880d681SAndroid Build Coastguard Worker %c = insertelement <8 x i1>%b, i1 %el1, i32 7 658*9880d681SAndroid Build Coastguard Worker %d = insertelement <8 x i1>%c, i1 %el2, i32 6 659*9880d681SAndroid Build Coastguard Worker ret <8 x i1>%d 660*9880d681SAndroid Build Coastguard Worker} 661*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test21(<32 x i16> %x , <32 x i1> %mask) nounwind readnone { 662*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test21: 663*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 664*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm3 = xmm2[0],zero,xmm2[1],zero,xmm2[2],zero,xmm2[3],zero,xmm2[4],zero,xmm2[5],zero,xmm2[6],zero,xmm2[7],zero,xmm2[8],zero,xmm2[9],zero,xmm2[10],zero,xmm2[11],zero,xmm2[12],zero,xmm2[13],zero,xmm2[14],zero,xmm2[15],zero 665*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm3, %ymm3 666*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm3, %ymm3 667*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm0, %ymm3, %ymm0 668*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vextracti128 $1, %ymm2, %xmm2 669*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm2 = xmm2[0],zero,xmm2[1],zero,xmm2[2],zero,xmm2[3],zero,xmm2[4],zero,xmm2[5],zero,xmm2[6],zero,xmm2[7],zero,xmm2[8],zero,xmm2[9],zero,xmm2[10],zero,xmm2[11],zero,xmm2[12],zero,xmm2[13],zero,xmm2[14],zero,xmm2[15],zero 670*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm2, %ymm2 671*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm2, %ymm2 672*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm2, %ymm1 673*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 674*9880d681SAndroid Build Coastguard Worker; 675*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test21: 676*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 677*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %ymm1, %ymm1 678*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %ymm1, %k1 679*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovdqu16 %zmm0, %zmm0 {%k1} {z} 680*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 681*9880d681SAndroid Build Coastguard Worker %ret = select <32 x i1> %mask, <32 x i16> %x, <32 x i16> zeroinitializer 682*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %ret 683*9880d681SAndroid Build Coastguard Worker} 684*9880d681SAndroid Build Coastguard Worker 685*9880d681SAndroid Build Coastguard Workerdefine void @test22(<4 x i1> %a, <4 x i1>* %addr) { 686*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test22: 687*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 688*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %XMM0<def> %XMM0<kill> %YMM0<def> 689*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %ymm0, %ymm0 690*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0 691*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 692*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb %al, (%rdi) 693*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 694*9880d681SAndroid Build Coastguard Worker; 695*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test22: 696*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 697*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 698*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k0 699*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, (%rdi) 700*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 701*9880d681SAndroid Build Coastguard Worker store <4 x i1> %a, <4 x i1>* %addr 702*9880d681SAndroid Build Coastguard Worker ret void 703*9880d681SAndroid Build Coastguard Worker} 704*9880d681SAndroid Build Coastguard Worker 705*9880d681SAndroid Build Coastguard Workerdefine void @test23(<2 x i1> %a, <2 x i1>* %addr) { 706*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test23: 707*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 708*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def> 709*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 710*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k0 711*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 712*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb %al, (%rdi) 713*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 714*9880d681SAndroid Build Coastguard Worker; 715*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test23: 716*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 717*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllq $63, %xmm0, %xmm0 718*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmq %xmm0, %xmm0, %k0 719*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, (%rdi) 720*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 721*9880d681SAndroid Build Coastguard Worker store <2 x i1> %a, <2 x i1>* %addr 722*9880d681SAndroid Build Coastguard Worker ret void 723*9880d681SAndroid Build Coastguard Worker} 724*9880d681SAndroid Build Coastguard Worker 725*9880d681SAndroid Build Coastguard Workerdefine void @store_v1i1(<1 x i1> %c , <1 x i1>* %ptr) { 726*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_v1i1: 727*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 728*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: andl $1, %edi 729*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %edi, %k0 730*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kxnorw %k0, %k0, %k1 731*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 732*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kxorw %k1, %k0, %k0 733*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 734*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb %al, (%rsi) 735*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 736*9880d681SAndroid Build Coastguard Worker; 737*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_v1i1: 738*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 739*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: andl $1, %edi 740*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovw %edi, %k0 741*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kxnorw %k0, %k0, %k1 742*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftrw $15, %k1, %k1 743*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kxorw %k1, %k0, %k0 744*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, (%rsi) 745*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 746*9880d681SAndroid Build Coastguard Worker %x = xor <1 x i1> %c, <i1 1> 747*9880d681SAndroid Build Coastguard Worker store <1 x i1> %x, <1 x i1>* %ptr, align 4 748*9880d681SAndroid Build Coastguard Worker ret void 749*9880d681SAndroid Build Coastguard Worker} 750*9880d681SAndroid Build Coastguard Worker 751*9880d681SAndroid Build Coastguard Workerdefine void @store_v2i1(<2 x i1> %c , <2 x i1>* %ptr) { 752*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_v2i1: 753*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 754*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpxor {{.*}}(%rip), %xmm0, %xmm0 755*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 756*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k0 757*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 758*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb %al, (%rdi) 759*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 760*9880d681SAndroid Build Coastguard Worker; 761*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_v2i1: 762*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 763*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllq $63, %xmm0, %xmm0 764*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmq %xmm0, %xmm0, %k0 765*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: knotw %k0, %k0 766*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, (%rdi) 767*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 768*9880d681SAndroid Build Coastguard Worker %x = xor <2 x i1> %c, <i1 1, i1 1> 769*9880d681SAndroid Build Coastguard Worker store <2 x i1> %x, <2 x i1>* %ptr, align 4 770*9880d681SAndroid Build Coastguard Worker ret void 771*9880d681SAndroid Build Coastguard Worker} 772*9880d681SAndroid Build Coastguard Worker 773*9880d681SAndroid Build Coastguard Workerdefine void @store_v4i1(<4 x i1> %c , <4 x i1>* %ptr) { 774*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_v4i1: 775*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 776*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpbroadcastd {{.*}}(%rip), %xmm1 777*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpxor %xmm1, %xmm0, %xmm0 778*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %ymm0, %ymm0 779*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0 780*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 781*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb %al, (%rdi) 782*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 783*9880d681SAndroid Build Coastguard Worker; 784*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_v4i1: 785*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 786*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpslld $31, %xmm0, %xmm0 787*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vptestmd %xmm0, %xmm0, %k0 788*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: knotw %k0, %k0 789*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, (%rdi) 790*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 791*9880d681SAndroid Build Coastguard Worker %x = xor <4 x i1> %c, <i1 1, i1 1, i1 1, i1 1> 792*9880d681SAndroid Build Coastguard Worker store <4 x i1> %x, <4 x i1>* %ptr, align 4 793*9880d681SAndroid Build Coastguard Worker ret void 794*9880d681SAndroid Build Coastguard Worker} 795*9880d681SAndroid Build Coastguard Worker 796*9880d681SAndroid Build Coastguard Workerdefine void @store_v8i1(<8 x i1> %c , <8 x i1>* %ptr) { 797*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_v8i1: 798*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 799*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 800*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 801*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k0 802*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: knotw %k0, %k0 803*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 804*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb %al, (%rdi) 805*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 806*9880d681SAndroid Build Coastguard Worker; 807*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_v8i1: 808*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 809*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 810*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k0 811*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: knotb %k0, %k0 812*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, (%rdi) 813*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 814*9880d681SAndroid Build Coastguard Worker %x = xor <8 x i1> %c, <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1> 815*9880d681SAndroid Build Coastguard Worker store <8 x i1> %x, <8 x i1>* %ptr, align 4 816*9880d681SAndroid Build Coastguard Worker ret void 817*9880d681SAndroid Build Coastguard Worker} 818*9880d681SAndroid Build Coastguard Worker 819*9880d681SAndroid Build Coastguard Workerdefine void @store_v16i1(<16 x i1> %c , <16 x i1>* %ptr) { 820*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_v16i1: 821*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 822*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 823*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 824*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0 825*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: knotw %k0, %k0 826*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, (%rdi) 827*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 828*9880d681SAndroid Build Coastguard Worker; 829*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_v16i1: 830*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 831*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm0, %xmm0 832*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm0, %k0 833*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: knotw %k0, %k0 834*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovw %k0, (%rdi) 835*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 836*9880d681SAndroid Build Coastguard Worker %x = xor <16 x i1> %c, <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1> 837*9880d681SAndroid Build Coastguard Worker store <16 x i1> %x, <16 x i1>* %ptr, align 4 838*9880d681SAndroid Build Coastguard Worker ret void 839*9880d681SAndroid Build Coastguard Worker} 840*9880d681SAndroid Build Coastguard Worker 841*9880d681SAndroid Build Coastguard Worker;void f2(int); 842*9880d681SAndroid Build Coastguard Worker;void f1(int c) 843*9880d681SAndroid Build Coastguard Worker;{ 844*9880d681SAndroid Build Coastguard Worker; static int v = 0; 845*9880d681SAndroid Build Coastguard Worker; if (v == 0) 846*9880d681SAndroid Build Coastguard Worker; v = 1; 847*9880d681SAndroid Build Coastguard Worker; else 848*9880d681SAndroid Build Coastguard Worker; v = 0; 849*9880d681SAndroid Build Coastguard Worker; f2(v); 850*9880d681SAndroid Build Coastguard Worker;} 851*9880d681SAndroid Build Coastguard Worker 852*9880d681SAndroid Build Coastguard Worker@f1.v = internal unnamed_addr global i1 false, align 4 853*9880d681SAndroid Build Coastguard Worker 854*9880d681SAndroid Build Coastguard Workerdefine void @f1(i32 %c) { 855*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: f1: 856*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: ## %entry 857*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movzbl {{.*}}(%rip), %edi 858*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movl %edi, %eax 859*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: andl $1, %eax 860*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %eax, %k0 861*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kxnorw %k0, %k0, %k1 862*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 863*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kxorw %k1, %k0, %k0 864*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 865*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb %al, {{.*}}(%rip) 866*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: xorl $1, %edi 867*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: jmp _f2 ## TAILCALL 868*9880d681SAndroid Build Coastguard Worker; 869*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: f1: 870*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: ## %entry 871*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: movzbl {{.*}}(%rip), %edi 872*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: movl %edi, %eax 873*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: andl $1, %eax 874*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovw %eax, %k0 875*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kxnorw %k0, %k0, %k1 876*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kshiftrw $15, %k1, %k1 877*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kxorw %k1, %k0, %k0 878*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, {{.*}}(%rip) 879*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: xorl $1, %edi 880*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: jmp _f2 ## TAILCALL 881*9880d681SAndroid Build Coastguard Workerentry: 882*9880d681SAndroid Build Coastguard Worker %.b1 = load i1, i1* @f1.v, align 4 883*9880d681SAndroid Build Coastguard Worker %not..b1 = xor i1 %.b1, true 884*9880d681SAndroid Build Coastguard Worker store i1 %not..b1, i1* @f1.v, align 4 885*9880d681SAndroid Build Coastguard Worker %0 = zext i1 %not..b1 to i32 886*9880d681SAndroid Build Coastguard Worker tail call void @f2(i32 %0) #2 887*9880d681SAndroid Build Coastguard Worker ret void 888*9880d681SAndroid Build Coastguard Worker} 889*9880d681SAndroid Build Coastguard Worker 890*9880d681SAndroid Build Coastguard Workerdeclare void @f2(i32) #1 891*9880d681SAndroid Build Coastguard Worker 892*9880d681SAndroid Build Coastguard Workerdefine void @store_i16_i1(i16 %x, i1 *%y) { 893*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: store_i16_i1: 894*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 895*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 896*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movb %dil, (%rsi) 897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 898*9880d681SAndroid Build Coastguard Worker %c = trunc i16 %x to i1 899*9880d681SAndroid Build Coastguard Worker store i1 %c, i1* %y 900*9880d681SAndroid Build Coastguard Worker ret void 901*9880d681SAndroid Build Coastguard Worker} 902*9880d681SAndroid Build Coastguard Worker 903*9880d681SAndroid Build Coastguard Workerdefine void @store_i8_i1(i8 %x, i1 *%y) { 904*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: store_i8_i1: 905*9880d681SAndroid Build Coastguard Worker; CHECK: ## BB#0: 906*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: andl $1, %edi 907*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movb %dil, (%rsi) 908*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: retq 909*9880d681SAndroid Build Coastguard Worker %c = trunc i8 %x to i1 910*9880d681SAndroid Build Coastguard Worker store i1 %c, i1* %y 911*9880d681SAndroid Build Coastguard Worker ret void 912*9880d681SAndroid Build Coastguard Worker} 913*9880d681SAndroid Build Coastguard Worker 914*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_build_vec_v32i1(<32 x i16> %x) { 915*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_build_vec_v32i1: 916*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 917*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm2 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero 918*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm2, %ymm2 919*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm2, %ymm2 920*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm0, %ymm2, %ymm0 921*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovzxbw {{.*#+}} ymm2 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero,mem[4],zero,mem[5],zero,mem[6],zero,mem[7],zero,mem[8],zero,mem[9],zero,mem[10],zero,mem[11],zero,mem[12],zero,mem[13],zero,mem[14],zero,mem[15],zero 922*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $15, %ymm2, %ymm2 923*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsraw $15, %ymm2, %ymm2 924*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand %ymm1, %ymm2, %ymm1 925*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 926*9880d681SAndroid Build Coastguard Worker; 927*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test_build_vec_v32i1: 928*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 929*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: movl $1497715861, %eax ## imm = 0x59455495 930*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovd %eax, %k1 931*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovdqu16 %zmm0, %zmm0 {%k1} {z} 932*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 933*9880d681SAndroid Build Coastguard Worker %ret = select <32 x i1> <i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 true, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 true, i1 true, i1 false, i1 true, i1 false>, <32 x i16> %x, <32 x i16> zeroinitializer 934*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %ret 935*9880d681SAndroid Build Coastguard Worker} 936*9880d681SAndroid Build Coastguard Worker 937*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_build_vec_v64i1(<64 x i8> %x) { 938*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test_build_vec_v64i1: 939*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 940*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vandps {{.*}}(%rip), %ymm0, %ymm0 941*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vandps {{.*}}(%rip), %ymm1, %ymm1 942*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 943*9880d681SAndroid Build Coastguard Worker; 944*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test_build_vec_v64i1: 945*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 946*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: movabsq $6432645796886517060, %rax ## imm = 0x5945594549549544 947*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovq %rax, %k1 948*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovdqu8 %zmm0, %zmm0 {%k1} {z} 949*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 950*9880d681SAndroid Build Coastguard Worker %ret = select <64 x i1> <i1 false, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 true, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 true, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 true, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 false, i1 true, i1 false, i1 true, i1 false, i1 false, i1 true, i1 true, i1 false, i1 true, i1 false>, <64 x i8> %x, <64 x i8> zeroinitializer 951*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %ret 952*9880d681SAndroid Build Coastguard Worker} 953*9880d681SAndroid Build Coastguard Worker 954*9880d681SAndroid Build Coastguard Workerdefine void @ktest_1(<8 x double> %in, double * %base) { 955*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: ktest_1: 956*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 957*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovupd (%rdi), %zmm1 958*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcmpltpd %zmm0, %zmm1, %k1 959*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovupd 8(%rdi), %zmm1 {%k1} {z} 960*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcmpltpd %zmm1, %zmm0, %k0 {%k1} 961*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 962*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: testb %al, %al 963*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: je LBB41_2 964*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## BB#1: ## %L1 965*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovapd %zmm0, (%rdi) 966*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 967*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: LBB41_2: ## %L2 968*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovapd %zmm0, 8(%rdi) 969*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 970*9880d681SAndroid Build Coastguard Worker; 971*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: ktest_1: 972*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 973*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovupd (%rdi), %zmm1 974*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vcmpltpd %zmm0, %zmm1, %k1 975*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovupd 8(%rdi), %zmm1 {%k1} {z} 976*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vcmpltpd %zmm1, %zmm0, %k0 {%k1} 977*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: ktestb %k0, %k0 978*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: je LBB41_2 979*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: ## BB#1: ## %L1 980*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovapd %zmm0, (%rdi) 981*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 982*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: LBB41_2: ## %L2 983*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovapd %zmm0, 8(%rdi) 984*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 985*9880d681SAndroid Build Coastguard Worker %addr1 = getelementptr double, double * %base, i64 0 986*9880d681SAndroid Build Coastguard Worker %addr2 = getelementptr double, double * %base, i64 1 987*9880d681SAndroid Build Coastguard Worker 988*9880d681SAndroid Build Coastguard Worker %vaddr1 = bitcast double* %addr1 to <8 x double>* 989*9880d681SAndroid Build Coastguard Worker %vaddr2 = bitcast double* %addr2 to <8 x double>* 990*9880d681SAndroid Build Coastguard Worker 991*9880d681SAndroid Build Coastguard Worker %val1 = load <8 x double>, <8 x double> *%vaddr1, align 1 992*9880d681SAndroid Build Coastguard Worker %val2 = load <8 x double>, <8 x double> *%vaddr2, align 1 993*9880d681SAndroid Build Coastguard Worker 994*9880d681SAndroid Build Coastguard Worker %sel1 = fcmp ogt <8 x double>%in, %val1 995*9880d681SAndroid Build Coastguard Worker %val3 = select <8 x i1> %sel1, <8 x double> %val2, <8 x double> zeroinitializer 996*9880d681SAndroid Build Coastguard Worker %sel2 = fcmp olt <8 x double> %in, %val3 997*9880d681SAndroid Build Coastguard Worker %sel3 = and <8 x i1> %sel1, %sel2 998*9880d681SAndroid Build Coastguard Worker 999*9880d681SAndroid Build Coastguard Worker %int_sel3 = bitcast <8 x i1> %sel3 to i8 1000*9880d681SAndroid Build Coastguard Worker %res = icmp eq i8 %int_sel3, zeroinitializer 1001*9880d681SAndroid Build Coastguard Worker br i1 %res, label %L2, label %L1 1002*9880d681SAndroid Build Coastguard WorkerL1: 1003*9880d681SAndroid Build Coastguard Worker store <8 x double> %in, <8 x double>* %vaddr1 1004*9880d681SAndroid Build Coastguard Worker br label %End 1005*9880d681SAndroid Build Coastguard WorkerL2: 1006*9880d681SAndroid Build Coastguard Worker store <8 x double> %in, <8 x double>* %vaddr2 1007*9880d681SAndroid Build Coastguard Worker br label %End 1008*9880d681SAndroid Build Coastguard WorkerEnd: 1009*9880d681SAndroid Build Coastguard Worker ret void 1010*9880d681SAndroid Build Coastguard Worker} 1011*9880d681SAndroid Build Coastguard Worker 1012*9880d681SAndroid Build Coastguard Workerdefine void @ktest_2(<32 x float> %in, float * %base) { 1013*9880d681SAndroid Build Coastguard Worker; 1014*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: ktest_2: 1015*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1016*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %rbp 1017*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp6: 1018*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_def_cfa_offset 16 1019*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp7: 1020*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_offset %rbp, -16 1021*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movq %rsp, %rbp 1022*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp8: 1023*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_def_cfa_register %rbp 1024*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: andq $-32, %rsp 1025*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: subq $32, %rsp 1026*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovups (%rdi), %zmm2 1027*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovups 64(%rdi), %zmm3 1028*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcmpltps %zmm1, %zmm3, %k1 1029*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $14, %k1, %k0 1030*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1031*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1032*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $15, %k1, %k0 1033*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1034*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ecx 1035*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovd %ecx, %xmm3 1036*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 1037*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $13, %k1, %k0 1038*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1039*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1040*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 1041*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $12, %k1, %k0 1042*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1043*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1044*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 1045*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $11, %k1, %k0 1046*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1047*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1048*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 1049*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $10, %k1, %k0 1050*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1051*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1052*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 1053*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $9, %k1, %k0 1054*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1055*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1056*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 1057*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $8, %k1, %k0 1058*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1059*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1060*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 1061*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k1, %k0 1062*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1063*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1064*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 1065*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k1, %k0 1066*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1067*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1068*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 1069*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $5, %k1, %k0 1070*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1071*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1072*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 1073*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $4, %k1, %k0 1074*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1075*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1076*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 1077*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $3, %k1, %k0 1078*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1079*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1080*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 1081*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $2, %k1, %k0 1082*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1083*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1084*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 1085*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $1, %k1, %k0 1086*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1087*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1088*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 1089*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $0, %k1, %k0 1090*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1091*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1092*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $15, %eax, %xmm3, %xmm3 1093*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcmpltps %zmm0, %zmm2, %k2 1094*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $14, %k2, %k0 1095*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1096*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1097*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $15, %k2, %k0 1098*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1099*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ecx 1100*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovd %ecx, %xmm2 1101*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $1, %eax, %xmm2, %xmm2 1102*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $13, %k2, %k0 1103*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1104*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1105*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $2, %eax, %xmm2, %xmm2 1106*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $12, %k2, %k0 1107*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1108*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1109*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $3, %eax, %xmm2, %xmm2 1110*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $11, %k2, %k0 1111*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1112*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1113*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $4, %eax, %xmm2, %xmm2 1114*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $10, %k2, %k0 1115*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1116*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1117*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, %eax, %xmm2, %xmm2 1118*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $9, %k2, %k0 1119*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1120*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1121*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $6, %eax, %xmm2, %xmm2 1122*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $8, %k2, %k0 1123*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1124*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1125*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $7, %eax, %xmm2, %xmm2 1126*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k2, %k0 1127*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1128*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1129*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $8, %eax, %xmm2, %xmm2 1130*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k2, %k0 1131*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1132*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1133*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $9, %eax, %xmm2, %xmm2 1134*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $5, %k2, %k0 1135*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1136*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1137*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $10, %eax, %xmm2, %xmm2 1138*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $4, %k2, %k0 1139*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1140*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1141*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $11, %eax, %xmm2, %xmm2 1142*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $3, %k2, %k0 1143*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1144*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1145*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $12, %eax, %xmm2, %xmm2 1146*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $2, %k2, %k0 1147*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1148*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1149*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $13, %eax, %xmm2, %xmm2 1150*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $1, %k2, %k0 1151*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1152*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1153*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $14, %eax, %xmm2, %xmm2 1154*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $0, %k2, %k0 1155*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1156*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1157*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $15, %eax, %xmm2, %xmm2 1158*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2 1159*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllw $7, %ymm2, %ymm2 1160*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpand {{.*}}(%rip), %ymm2, %ymm2 1161*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpxor %ymm3, %ymm3, %ymm3 1162*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpcmpgtb %ymm2, %ymm3, %ymm2 1163*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovups 4(%rdi), %zmm3 {%k2} {z} 1164*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovups 68(%rdi), %zmm4 {%k1} {z} 1165*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcmpltps %zmm4, %zmm1, %k0 1166*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $14, %k0, %k1 1167*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1168*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1169*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $15, %k0, %k1 1170*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1171*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ecx 1172*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovd %ecx, %xmm4 1173*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $1, %eax, %xmm4, %xmm4 1174*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $13, %k0, %k1 1175*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1176*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1177*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $2, %eax, %xmm4, %xmm4 1178*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $12, %k0, %k1 1179*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1180*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1181*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $3, %eax, %xmm4, %xmm4 1182*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $11, %k0, %k1 1183*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1184*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1185*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $4, %eax, %xmm4, %xmm4 1186*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $10, %k0, %k1 1187*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1188*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1189*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, %eax, %xmm4, %xmm4 1190*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $9, %k0, %k1 1191*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1192*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1193*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $6, %eax, %xmm4, %xmm4 1194*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $8, %k0, %k1 1195*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1196*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1197*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $7, %eax, %xmm4, %xmm4 1198*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k0, %k1 1199*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1200*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1201*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $8, %eax, %xmm4, %xmm4 1202*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k0, %k1 1203*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1204*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1205*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $9, %eax, %xmm4, %xmm4 1206*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $5, %k0, %k1 1207*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1208*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1209*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $10, %eax, %xmm4, %xmm4 1210*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $4, %k0, %k1 1211*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1212*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1213*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $11, %eax, %xmm4, %xmm4 1214*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $3, %k0, %k1 1215*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1216*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1217*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $12, %eax, %xmm4, %xmm4 1218*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $2, %k0, %k1 1219*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1220*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1221*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $13, %eax, %xmm4, %xmm4 1222*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $1, %k0, %k1 1223*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1224*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1225*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $14, %eax, %xmm4, %xmm4 1226*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $0, %k0, %k0 1227*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1228*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1229*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $15, %eax, %xmm4, %xmm4 1230*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vcmpltps %zmm3, %zmm0, %k0 1231*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $14, %k0, %k1 1232*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1233*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1234*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $15, %k0, %k1 1235*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1236*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ecx 1237*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovd %ecx, %xmm3 1238*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $1, %eax, %xmm3, %xmm3 1239*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $13, %k0, %k1 1240*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1241*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1242*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $2, %eax, %xmm3, %xmm3 1243*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $12, %k0, %k1 1244*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1245*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1246*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $3, %eax, %xmm3, %xmm3 1247*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $11, %k0, %k1 1248*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1249*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1250*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $4, %eax, %xmm3, %xmm3 1251*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $10, %k0, %k1 1252*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1253*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1254*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, %eax, %xmm3, %xmm3 1255*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $9, %k0, %k1 1256*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1257*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1258*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $6, %eax, %xmm3, %xmm3 1259*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $8, %k0, %k1 1260*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1261*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1262*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $7, %eax, %xmm3, %xmm3 1263*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k0, %k1 1264*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1265*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1266*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $8, %eax, %xmm3, %xmm3 1267*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k0, %k1 1268*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1269*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1270*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $9, %eax, %xmm3, %xmm3 1271*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $5, %k0, %k1 1272*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1273*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1274*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $10, %eax, %xmm3, %xmm3 1275*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $4, %k0, %k1 1276*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1277*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1278*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $11, %eax, %xmm3, %xmm3 1279*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $3, %k0, %k1 1280*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1281*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1282*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $12, %eax, %xmm3, %xmm3 1283*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $2, %k0, %k1 1284*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1285*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1286*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $13, %eax, %xmm3, %xmm3 1287*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $1, %k0, %k1 1288*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1289*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1290*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $14, %eax, %xmm3, %xmm3 1291*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $0, %k0, %k0 1292*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1293*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1294*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $15, %eax, %xmm3, %xmm3 1295*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3 1296*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpor %ymm3, %ymm2, %ymm2 1297*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vextracti128 $1, %ymm2, %xmm3 1298*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm3, %zmm3 1299*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm3, %zmm3 1300*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm3, %zmm3, %k0 1301*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, {{[0-9]+}}(%rsp) 1302*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm2, %zmm2 1303*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm2, %zmm2 1304*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm2, %zmm2, %k0 1305*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, (%rsp) 1306*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: cmpl $0, (%rsp) 1307*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: je LBB42_2 1308*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## BB#1: ## %L1 1309*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovaps %zmm0, (%rdi) 1310*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovaps %zmm1, 64(%rdi) 1311*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: jmp LBB42_3 1312*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: LBB42_2: ## %L2 1313*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovaps %zmm0, 4(%rdi) 1314*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovaps %zmm1, 68(%rdi) 1315*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: LBB42_3: ## %End 1316*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movq %rbp, %rsp 1317*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %rbp 1318*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1319*9880d681SAndroid Build Coastguard Worker; 1320*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: ktest_2: 1321*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1322*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovups 64(%rdi), %zmm2 1323*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovups (%rdi), %zmm3 1324*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vcmpltps %zmm0, %zmm3, %k1 1325*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vcmpltps %zmm1, %zmm2, %k2 1326*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kunpckwd %k1, %k2, %k0 1327*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovups 68(%rdi), %zmm2 {%k2} {z} 1328*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovups 4(%rdi), %zmm3 {%k1} {z} 1329*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vcmpltps %zmm3, %zmm0, %k1 1330*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vcmpltps %zmm2, %zmm1, %k2 1331*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kunpckwd %k1, %k2, %k1 1332*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kord %k1, %k0, %k0 1333*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: ktestd %k0, %k0 1334*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: je LBB42_2 1335*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: ## BB#1: ## %L1 1336*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovaps %zmm0, (%rdi) 1337*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovaps %zmm1, 64(%rdi) 1338*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1339*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: LBB42_2: ## %L2 1340*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovaps %zmm0, 4(%rdi) 1341*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vmovaps %zmm1, 68(%rdi) 1342*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1343*9880d681SAndroid Build Coastguard Worker %addr1 = getelementptr float, float * %base, i64 0 1344*9880d681SAndroid Build Coastguard Worker %addr2 = getelementptr float, float * %base, i64 1 1345*9880d681SAndroid Build Coastguard Worker 1346*9880d681SAndroid Build Coastguard Worker %vaddr1 = bitcast float* %addr1 to <32 x float>* 1347*9880d681SAndroid Build Coastguard Worker %vaddr2 = bitcast float* %addr2 to <32 x float>* 1348*9880d681SAndroid Build Coastguard Worker 1349*9880d681SAndroid Build Coastguard Worker %val1 = load <32 x float>, <32 x float> *%vaddr1, align 1 1350*9880d681SAndroid Build Coastguard Worker %val2 = load <32 x float>, <32 x float> *%vaddr2, align 1 1351*9880d681SAndroid Build Coastguard Worker 1352*9880d681SAndroid Build Coastguard Worker %sel1 = fcmp ogt <32 x float>%in, %val1 1353*9880d681SAndroid Build Coastguard Worker %val3 = select <32 x i1> %sel1, <32 x float> %val2, <32 x float> zeroinitializer 1354*9880d681SAndroid Build Coastguard Worker %sel2 = fcmp olt <32 x float> %in, %val3 1355*9880d681SAndroid Build Coastguard Worker %sel3 = or <32 x i1> %sel1, %sel2 1356*9880d681SAndroid Build Coastguard Worker 1357*9880d681SAndroid Build Coastguard Worker %int_sel3 = bitcast <32 x i1> %sel3 to i32 1358*9880d681SAndroid Build Coastguard Worker %res = icmp eq i32 %int_sel3, zeroinitializer 1359*9880d681SAndroid Build Coastguard Worker br i1 %res, label %L2, label %L1 1360*9880d681SAndroid Build Coastguard WorkerL1: 1361*9880d681SAndroid Build Coastguard Worker store <32 x float> %in, <32 x float>* %vaddr1 1362*9880d681SAndroid Build Coastguard Worker br label %End 1363*9880d681SAndroid Build Coastguard WorkerL2: 1364*9880d681SAndroid Build Coastguard Worker store <32 x float> %in, <32 x float>* %vaddr2 1365*9880d681SAndroid Build Coastguard Worker br label %End 1366*9880d681SAndroid Build Coastguard WorkerEnd: 1367*9880d681SAndroid Build Coastguard Worker ret void 1368*9880d681SAndroid Build Coastguard Worker} 1369*9880d681SAndroid Build Coastguard Worker 1370*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @load_8i1(<8 x i1>* %a) { 1371*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: load_8i1: 1372*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1373*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movzbl (%rdi), %eax 1374*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %eax, %k1 1375*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 1376*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z} 1377*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1378*9880d681SAndroid Build Coastguard Worker; 1379*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: load_8i1: 1380*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1381*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb (%rdi), %k0 1382*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2q %k0, %zmm0 1383*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1384*9880d681SAndroid Build Coastguard Worker %b = load <8 x i1>, <8 x i1>* %a 1385*9880d681SAndroid Build Coastguard Worker %c = sext <8 x i1> %b to <8 x i64> 1386*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %c 1387*9880d681SAndroid Build Coastguard Worker} 1388*9880d681SAndroid Build Coastguard Worker 1389*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @load_16i1(<16 x i1>* %a) { 1390*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: load_16i1: 1391*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1392*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw (%rdi), %k1 1393*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 1394*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z} 1395*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1396*9880d681SAndroid Build Coastguard Worker; 1397*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: load_16i1: 1398*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1399*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovw (%rdi), %k0 1400*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2d %k0, %zmm0 1401*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1402*9880d681SAndroid Build Coastguard Worker %b = load <16 x i1>, <16 x i1>* %a 1403*9880d681SAndroid Build Coastguard Worker %c = sext <16 x i1> %b to <16 x i32> 1404*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %c 1405*9880d681SAndroid Build Coastguard Worker} 1406*9880d681SAndroid Build Coastguard Worker 1407*9880d681SAndroid Build Coastguard Workerdefine <2 x i16> @load_2i1(<2 x i1>* %a) { 1408*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: load_2i1: 1409*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1410*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movzbl (%rdi), %eax 1411*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %eax, %k1 1412*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 1413*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z} 1414*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<kill> 1415*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1416*9880d681SAndroid Build Coastguard Worker; 1417*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: load_2i1: 1418*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1419*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb (%rdi), %k0 1420*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2q %k0, %xmm0 1421*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1422*9880d681SAndroid Build Coastguard Worker %b = load <2 x i1>, <2 x i1>* %a 1423*9880d681SAndroid Build Coastguard Worker %c = sext <2 x i1> %b to <2 x i16> 1424*9880d681SAndroid Build Coastguard Worker ret <2 x i16> %c 1425*9880d681SAndroid Build Coastguard Worker} 1426*9880d681SAndroid Build Coastguard Worker 1427*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @load_4i1(<4 x i1>* %a) { 1428*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: load_4i1: 1429*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1430*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movzbl (%rdi), %eax 1431*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %eax, %k1 1432*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 1433*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z} 1434*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovqd %zmm0, %ymm0 1435*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: ## kill: %XMM0<def> %XMM0<kill> %YMM0<kill> 1436*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1437*9880d681SAndroid Build Coastguard Worker; 1438*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: load_4i1: 1439*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1440*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb (%rdi), %k0 1441*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2d %k0, %xmm0 1442*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1443*9880d681SAndroid Build Coastguard Worker %b = load <4 x i1>, <4 x i1>* %a 1444*9880d681SAndroid Build Coastguard Worker %c = sext <4 x i1> %b to <4 x i16> 1445*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %c 1446*9880d681SAndroid Build Coastguard Worker} 1447*9880d681SAndroid Build Coastguard Worker 1448*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @load_32i1(<32 x i1>* %a) { 1449*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: load_32i1: 1450*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1451*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw (%rdi), %k1 1452*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm1, %zmm1, %zmm1 1453*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm1, %zmm0 {%k1} {z} 1454*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdw %zmm0, %ymm0 1455*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw 2(%rdi), %k1 1456*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm1, %zmm1 {%k1} {z} 1457*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdw %zmm1, %ymm1 1458*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1459*9880d681SAndroid Build Coastguard Worker; 1460*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: load_32i1: 1461*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1462*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovd (%rdi), %k0 1463*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2w %k0, %zmm0 1464*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1465*9880d681SAndroid Build Coastguard Worker %b = load <32 x i1>, <32 x i1>* %a 1466*9880d681SAndroid Build Coastguard Worker %c = sext <32 x i1> %b to <32 x i16> 1467*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %c 1468*9880d681SAndroid Build Coastguard Worker} 1469*9880d681SAndroid Build Coastguard Worker 1470*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @load_64i1(<64 x i1>* %a) { 1471*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: load_64i1: 1472*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1473*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw (%rdi), %k1 1474*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpternlogd $255, %zmm1, %zmm1, %zmm1 1475*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm1, %zmm0 {%k1} {z} 1476*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm0, %xmm0 1477*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw 2(%rdi), %k1 1478*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm1, %zmm2 {%k1} {z} 1479*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm2, %xmm2 1480*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0 1481*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw 4(%rdi), %k1 1482*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm1, %zmm2 {%k1} {z} 1483*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm2, %xmm2 1484*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw 6(%rdi), %k1 1485*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovdqa32 %zmm1, %zmm1 {%k1} {z} 1486*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm1, %xmm1 1487*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vinsertf128 $1, %xmm1, %ymm2, %ymm1 1488*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1489*9880d681SAndroid Build Coastguard Worker; 1490*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: load_64i1: 1491*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1492*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovq (%rdi), %k0 1493*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovm2b %k0, %zmm0 1494*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1495*9880d681SAndroid Build Coastguard Worker %b = load <64 x i1>, <64 x i1>* %a 1496*9880d681SAndroid Build Coastguard Worker %c = sext <64 x i1> %b to <64 x i8> 1497*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %c 1498*9880d681SAndroid Build Coastguard Worker} 1499*9880d681SAndroid Build Coastguard Worker 1500*9880d681SAndroid Build Coastguard Workerdefine void @store_8i1(<8 x i1>* %a, <8 x i1> %v) { 1501*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_8i1: 1502*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1503*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 1504*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 1505*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k0 1506*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1507*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb %al, (%rdi) 1508*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1509*9880d681SAndroid Build Coastguard Worker; 1510*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_8i1: 1511*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1512*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 1513*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k0 1514*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, (%rdi) 1515*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1516*9880d681SAndroid Build Coastguard Worker store <8 x i1> %v, <8 x i1>* %a 1517*9880d681SAndroid Build Coastguard Worker ret void 1518*9880d681SAndroid Build Coastguard Worker} 1519*9880d681SAndroid Build Coastguard Worker 1520*9880d681SAndroid Build Coastguard Workerdefine void @store_8i1_1(<8 x i1>* %a, <8 x i16> %v) { 1521*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_8i1_1: 1522*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1523*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwq %xmm0, %zmm0 1524*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpsllq $63, %zmm0, %zmm0 1525*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmq %zmm0, %zmm0, %k0 1526*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1527*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: movb %al, (%rdi) 1528*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1529*9880d681SAndroid Build Coastguard Worker; 1530*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_8i1_1: 1531*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1532*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %xmm0, %xmm0 1533*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %xmm0, %k0 1534*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovb %k0, (%rdi) 1535*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1536*9880d681SAndroid Build Coastguard Worker %v1 = trunc <8 x i16> %v to <8 x i1> 1537*9880d681SAndroid Build Coastguard Worker store <8 x i1> %v1, <8 x i1>* %a 1538*9880d681SAndroid Build Coastguard Worker ret void 1539*9880d681SAndroid Build Coastguard Worker} 1540*9880d681SAndroid Build Coastguard Worker 1541*9880d681SAndroid Build Coastguard Workerdefine void @store_16i1(<16 x i1>* %a, <16 x i1> %v) { 1542*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_16i1: 1543*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1544*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 1545*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 1546*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0 1547*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, (%rdi) 1548*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1549*9880d681SAndroid Build Coastguard Worker; 1550*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_16i1: 1551*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1552*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %xmm0, %xmm0 1553*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %xmm0, %k0 1554*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovw %k0, (%rdi) 1555*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1556*9880d681SAndroid Build Coastguard Worker store <16 x i1> %v, <16 x i1>* %a 1557*9880d681SAndroid Build Coastguard Worker ret void 1558*9880d681SAndroid Build Coastguard Worker} 1559*9880d681SAndroid Build Coastguard Worker 1560*9880d681SAndroid Build Coastguard Workerdefine void @store_32i1(<32 x i1>* %a, <32 x i1> %v) { 1561*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_32i1: 1562*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1563*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vextractf128 $1, %ymm0, %xmm1 1564*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm1, %zmm1 1565*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm1, %zmm1 1566*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm1, %zmm1, %k0 1567*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, 2(%rdi) 1568*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 1569*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 1570*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0 1571*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, (%rdi) 1572*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1573*9880d681SAndroid Build Coastguard Worker; 1574*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_32i1: 1575*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1576*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %ymm0, %ymm0 1577*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %ymm0, %k0 1578*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovd %k0, (%rdi) 1579*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1580*9880d681SAndroid Build Coastguard Worker store <32 x i1> %v, <32 x i1>* %a 1581*9880d681SAndroid Build Coastguard Worker ret void 1582*9880d681SAndroid Build Coastguard Worker} 1583*9880d681SAndroid Build Coastguard Worker 1584*9880d681SAndroid Build Coastguard Workerdefine void @store_32i1_1(<32 x i1>* %a, <32 x i16> %v) { 1585*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_32i1_1: 1586*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1587*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwd %ymm0, %zmm0 1588*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm0, %xmm0 1589*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxwd %ymm1, %zmm1 1590*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovdb %zmm1, %xmm1 1591*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm1, %zmm1 1592*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm1, %zmm1 1593*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm1, %zmm1, %k0 1594*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, 2(%rdi) 1595*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 1596*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 1597*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0 1598*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, (%rdi) 1599*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1600*9880d681SAndroid Build Coastguard Worker; 1601*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_32i1_1: 1602*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1603*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $15, %zmm0, %zmm0 1604*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovw2m %zmm0, %k0 1605*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovd %k0, (%rdi) 1606*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1607*9880d681SAndroid Build Coastguard Worker %v1 = trunc <32 x i16> %v to <32 x i1> 1608*9880d681SAndroid Build Coastguard Worker store <32 x i1> %v1, <32 x i1>* %a 1609*9880d681SAndroid Build Coastguard Worker ret void 1610*9880d681SAndroid Build Coastguard Worker} 1611*9880d681SAndroid Build Coastguard Worker 1612*9880d681SAndroid Build Coastguard Worker 1613*9880d681SAndroid Build Coastguard Workerdefine void @store_64i1(<64 x i1>* %a, <64 x i1> %v) { 1614*9880d681SAndroid Build Coastguard Worker; 1615*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: store_64i1: 1616*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 1617*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %rbp 1618*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp9: 1619*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_def_cfa_offset 16 1620*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %r15 1621*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp10: 1622*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_def_cfa_offset 24 1623*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %r14 1624*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp11: 1625*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_def_cfa_offset 32 1626*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %r13 1627*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp12: 1628*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_def_cfa_offset 40 1629*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %r12 1630*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp13: 1631*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_def_cfa_offset 48 1632*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: pushq %rbx 1633*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp14: 1634*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_def_cfa_offset 56 1635*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp15: 1636*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_offset %rbx, -56 1637*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp16: 1638*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_offset %r12, -48 1639*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp17: 1640*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_offset %r13, -40 1641*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp18: 1642*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_offset %r14, -32 1643*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp19: 1644*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_offset %r15, -24 1645*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: Ltmp20: 1646*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: .cfi_offset %rbp, -16 1647*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 1648*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 1649*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm1, %zmm1 1650*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm1, %zmm1 1651*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm2, %zmm2 1652*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm2, %zmm2 1653*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm3, %zmm3 1654*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm3, %zmm3 1655*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm3, %zmm3, %k0 1656*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $14, %k0, %k1 1657*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1658*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r8d 1659*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $15, %k0, %k1 1660*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1661*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r9d 1662*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $13, %k0, %k1 1663*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1664*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r10d 1665*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $12, %k0, %k1 1666*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1667*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r11d 1668*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $11, %k0, %k1 1669*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1670*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r14d 1671*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $10, %k0, %k1 1672*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1673*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r15d 1674*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $9, %k0, %k1 1675*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1676*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r12d 1677*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $8, %k0, %k1 1678*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1679*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r13d 1680*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k0, %k1 1681*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1682*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ebx 1683*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k0, %k1 1684*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1685*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ebp 1686*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $5, %k0, %k1 1687*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1688*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1689*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $4, %k0, %k1 1690*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1691*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ecx 1692*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $3, %k0, %k1 1693*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1694*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %edx 1695*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $2, %k0, %k1 1696*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1697*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %esi 1698*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $1, %k0, %k1 1699*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1700*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovd %r9d, %xmm3 1701*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r9d 1702*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm2, %zmm2, %k2 1703*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $0, %k0, %k0 1704*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1705*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $1, %r8d, %xmm3, %xmm2 1706*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $2, %r10d, %xmm2, %xmm2 1707*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $3, %r11d, %xmm2, %xmm2 1708*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $4, %r14d, %xmm2, %xmm2 1709*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, %r15d, %xmm2, %xmm2 1710*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $6, %r12d, %xmm2, %xmm2 1711*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $7, %r13d, %xmm2, %xmm2 1712*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $8, %ebx, %xmm2, %xmm2 1713*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $9, %ebp, %xmm2, %xmm2 1714*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $10, %eax, %xmm2, %xmm2 1715*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $11, %ecx, %xmm2, %xmm2 1716*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $12, %edx, %xmm2, %xmm2 1717*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $13, %esi, %xmm2, %xmm2 1718*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $14, %r9d, %xmm2, %xmm2 1719*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1720*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $15, %eax, %xmm2, %xmm2 1721*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm2, %zmm2 1722*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm2, %zmm2 1723*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm2, %zmm2, %k0 1724*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, 6(%rdi) 1725*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $14, %k2, %k0 1726*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1727*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r8d 1728*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $15, %k2, %k0 1729*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1730*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r10d 1731*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $13, %k2, %k0 1732*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1733*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r9d 1734*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $12, %k2, %k0 1735*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1736*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r11d 1737*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $11, %k2, %k0 1738*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1739*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r14d 1740*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $10, %k2, %k0 1741*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1742*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r15d 1743*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $9, %k2, %k0 1744*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1745*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r12d 1746*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $8, %k2, %k0 1747*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1748*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r13d 1749*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k2, %k0 1750*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1751*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %edx 1752*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k2, %k0 1753*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1754*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %esi 1755*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $5, %k2, %k0 1756*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1757*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ebp 1758*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $4, %k2, %k0 1759*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1760*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ebx 1761*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $3, %k2, %k0 1762*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1763*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1764*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $2, %k2, %k0 1765*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1766*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ecx 1767*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $1, %k2, %k0 1768*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1769*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovd %r10d, %xmm2 1770*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r10d 1771*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm1, %zmm1, %k1 1772*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $0, %k2, %k0 1773*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1774*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $1, %r8d, %xmm2, %xmm1 1775*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $2, %r9d, %xmm1, %xmm1 1776*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $3, %r11d, %xmm1, %xmm1 1777*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $4, %r14d, %xmm1, %xmm1 1778*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, %r15d, %xmm1, %xmm1 1779*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $6, %r12d, %xmm1, %xmm1 1780*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $7, %r13d, %xmm1, %xmm1 1781*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $8, %edx, %xmm1, %xmm1 1782*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $9, %esi, %xmm1, %xmm1 1783*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $10, %ebp, %xmm1, %xmm1 1784*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $11, %ebx, %xmm1, %xmm1 1785*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $12, %eax, %xmm1, %xmm1 1786*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $13, %ecx, %xmm1, %xmm1 1787*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $14, %r10d, %xmm1, %xmm1 1788*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1789*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $15, %eax, %xmm1, %xmm1 1790*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm1, %zmm1 1791*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm1, %zmm1 1792*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm1, %zmm1, %k0 1793*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, 4(%rdi) 1794*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $14, %k1, %k0 1795*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1796*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r8d 1797*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $15, %k1, %k0 1798*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1799*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r10d 1800*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $13, %k1, %k0 1801*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1802*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r9d 1803*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $12, %k1, %k0 1804*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1805*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r11d 1806*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $11, %k1, %k0 1807*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1808*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r14d 1809*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $10, %k1, %k0 1810*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1811*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r15d 1812*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $9, %k1, %k0 1813*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1814*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r12d 1815*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $8, %k1, %k0 1816*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1817*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r13d 1818*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k1, %k0 1819*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1820*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %edx 1821*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k1, %k0 1822*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1823*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %esi 1824*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $5, %k1, %k0 1825*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1826*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ebp 1827*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $4, %k1, %k0 1828*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1829*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ebx 1830*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $3, %k1, %k0 1831*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1832*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1833*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $2, %k1, %k0 1834*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1835*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %ecx 1836*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $1, %k1, %k0 1837*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1838*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovd %r10d, %xmm1 1839*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %r10d 1840*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0 1841*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $0, %k1, %k1 1842*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1843*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $1, %r8d, %xmm1, %xmm0 1844*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $2, %r9d, %xmm0, %xmm0 1845*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $3, %r11d, %xmm0, %xmm0 1846*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $4, %r14d, %xmm0, %xmm0 1847*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, %r15d, %xmm0, %xmm0 1848*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $6, %r12d, %xmm0, %xmm0 1849*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $7, %r13d, %xmm0, %xmm0 1850*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $8, %edx, %xmm0, %xmm0 1851*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $9, %esi, %xmm0, %xmm0 1852*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $10, %ebp, %xmm0, %xmm0 1853*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $11, %ebx, %xmm0, %xmm0 1854*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 1855*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $13, %ecx, %xmm0, %xmm0 1856*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $14, %r10d, %xmm0, %xmm0 1857*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1858*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $15, %eax, %xmm0, %xmm0 1859*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 1860*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 1861*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k1 1862*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, 2(%rdi) 1863*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $14, %k0, %k1 1864*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1865*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r8d 1866*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $15, %k0, %k1 1867*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1868*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r9d 1869*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $13, %k0, %k1 1870*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1871*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r10d 1872*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $12, %k0, %k1 1873*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1874*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r11d 1875*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $11, %k0, %k1 1876*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1877*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r14d 1878*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $10, %k0, %k1 1879*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1880*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r15d 1881*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $9, %k0, %k1 1882*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1883*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r12d 1884*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $8, %k0, %k1 1885*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1886*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r13d 1887*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $7, %k0, %k1 1888*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1889*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %edx 1890*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $6, %k0, %k1 1891*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1892*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %esi 1893*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $5, %k0, %k1 1894*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1895*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ebp 1896*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $4, %k0, %k1 1897*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1898*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ebx 1899*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $3, %k0, %k1 1900*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1901*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %eax 1902*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $2, %k0, %k1 1903*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1904*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %ecx 1905*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $1, %k0, %k1 1906*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k1, %k1 1907*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vmovd %r9d, %xmm0 1908*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k1, %r9d 1909*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $1, %r8d, %xmm0, %xmm0 1910*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $2, %r10d, %xmm0, %xmm0 1911*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $3, %r11d, %xmm0, %xmm0 1912*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $4, %r14d, %xmm0, %xmm0 1913*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $5, %r15d, %xmm0, %xmm0 1914*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $6, %r12d, %xmm0, %xmm0 1915*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $7, %r13d, %xmm0, %xmm0 1916*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $8, %edx, %xmm0, %xmm0 1917*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $9, %esi, %xmm0, %xmm0 1918*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $10, %ebp, %xmm0, %xmm0 1919*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $11, %ebx, %xmm0, %xmm0 1920*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $12, %eax, %xmm0, %xmm0 1921*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftlw $0, %k0, %k0 1922*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kshiftrw $15, %k0, %k0 1923*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $13, %ecx, %xmm0, %xmm0 1924*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $14, %r9d, %xmm0, %xmm0 1925*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, %eax 1926*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpinsrb $15, %eax, %xmm0, %xmm0 1927*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpmovsxbd %xmm0, %zmm0 1928*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vpslld $31, %zmm0, %zmm0 1929*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0 1930*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: kmovw %k0, (%rdi) 1931*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %rbx 1932*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %r12 1933*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %r13 1934*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %r14 1935*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %r15 1936*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: popq %rbp 1937*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 1938*9880d681SAndroid Build Coastguard Worker; 1939*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: store_64i1: 1940*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 1941*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpsllw $7, %zmm0, %zmm0 1942*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpmovb2m %zmm0, %k0 1943*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: kmovq %k0, (%rdi) 1944*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 1945*9880d681SAndroid Build Coastguard Worker store <64 x i1> %v, <64 x i1>* %a 1946*9880d681SAndroid Build Coastguard Worker ret void 1947*9880d681SAndroid Build Coastguard Worker} 1948