1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl | FileCheck %s --check-prefix=ALL --check-prefix=KNL 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=skx | FileCheck %s --check-prefix=ALL --check-prefix=SKX 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @vpandd(<16 x i32> %a, <16 x i32> %b) nounwind uwtable readnone ssp { 7*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: vpandd: 8*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: ## %entry 9*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpaddd {{.*}}(%rip){1to16}, %zmm0, %zmm0 10*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpandd %zmm1, %zmm0, %zmm0 11*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker ; Force the execution domain with an add. 14*9880d681SAndroid Build Coastguard Worker %a2 = add <16 x i32> %a, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, 15*9880d681SAndroid Build Coastguard Worker i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1> 16*9880d681SAndroid Build Coastguard Worker %x = and <16 x i32> %a2, %b 17*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %x 18*9880d681SAndroid Build Coastguard Worker} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @vpandnd(<16 x i32> %a, <16 x i32> %b) nounwind uwtable readnone ssp { 21*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: vpandnd: 22*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: ## %entry 23*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpaddd {{.*}}(%rip){1to16}, %zmm0, %zmm0 24*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpandnd %zmm0, %zmm1, %zmm0 25*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 26*9880d681SAndroid Build Coastguard Workerentry: 27*9880d681SAndroid Build Coastguard Worker ; Force the execution domain with an add. 28*9880d681SAndroid Build Coastguard Worker %a2 = add <16 x i32> %a, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, 29*9880d681SAndroid Build Coastguard Worker i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1> 30*9880d681SAndroid Build Coastguard Worker %b2 = xor <16 x i32> %b, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, 31*9880d681SAndroid Build Coastguard Worker i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1> 32*9880d681SAndroid Build Coastguard Worker %x = and <16 x i32> %a2, %b2 33*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %x 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @vpord(<16 x i32> %a, <16 x i32> %b) nounwind uwtable readnone ssp { 37*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: vpord: 38*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: ## %entry 39*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpaddd {{.*}}(%rip){1to16}, %zmm0, %zmm0 40*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpord %zmm1, %zmm0, %zmm0 41*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 42*9880d681SAndroid Build Coastguard Workerentry: 43*9880d681SAndroid Build Coastguard Worker ; Force the execution domain with an add. 44*9880d681SAndroid Build Coastguard Worker %a2 = add <16 x i32> %a, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, 45*9880d681SAndroid Build Coastguard Worker i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1> 46*9880d681SAndroid Build Coastguard Worker %x = or <16 x i32> %a2, %b 47*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %x 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @vpxord(<16 x i32> %a, <16 x i32> %b) nounwind uwtable readnone ssp { 51*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: vpxord: 52*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: ## %entry 53*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpaddd {{.*}}(%rip){1to16}, %zmm0, %zmm0 54*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpxord %zmm1, %zmm0, %zmm0 55*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 56*9880d681SAndroid Build Coastguard Workerentry: 57*9880d681SAndroid Build Coastguard Worker ; Force the execution domain with an add. 58*9880d681SAndroid Build Coastguard Worker %a2 = add <16 x i32> %a, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, 59*9880d681SAndroid Build Coastguard Worker i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1> 60*9880d681SAndroid Build Coastguard Worker %x = xor <16 x i32> %a2, %b 61*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %x 62*9880d681SAndroid Build Coastguard Worker} 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @vpandq(<8 x i64> %a, <8 x i64> %b) nounwind uwtable readnone ssp { 65*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: vpandq: 66*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: ## %entry 67*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpaddq {{.*}}(%rip){1to8}, %zmm0, %zmm0 68*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpandq %zmm1, %zmm0, %zmm0 69*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 70*9880d681SAndroid Build Coastguard Workerentry: 71*9880d681SAndroid Build Coastguard Worker ; Force the execution domain with an add. 72*9880d681SAndroid Build Coastguard Worker %a2 = add <8 x i64> %a, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1> 73*9880d681SAndroid Build Coastguard Worker %x = and <8 x i64> %a2, %b 74*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %x 75*9880d681SAndroid Build Coastguard Worker} 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @vpandnq(<8 x i64> %a, <8 x i64> %b) nounwind uwtable readnone ssp { 78*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: vpandnq: 79*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: ## %entry 80*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpaddq {{.*}}(%rip){1to8}, %zmm0, %zmm0 81*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpandnq %zmm0, %zmm1, %zmm0 82*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 83*9880d681SAndroid Build Coastguard Workerentry: 84*9880d681SAndroid Build Coastguard Worker ; Force the execution domain with an add. 85*9880d681SAndroid Build Coastguard Worker %a2 = add <8 x i64> %a, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1> 86*9880d681SAndroid Build Coastguard Worker %b2 = xor <8 x i64> %b, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1> 87*9880d681SAndroid Build Coastguard Worker %x = and <8 x i64> %a2, %b2 88*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %x 89*9880d681SAndroid Build Coastguard Worker} 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @vporq(<8 x i64> %a, <8 x i64> %b) nounwind uwtable readnone ssp { 92*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: vporq: 93*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: ## %entry 94*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpaddq {{.*}}(%rip){1to8}, %zmm0, %zmm0 95*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vporq %zmm1, %zmm0, %zmm0 96*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 97*9880d681SAndroid Build Coastguard Workerentry: 98*9880d681SAndroid Build Coastguard Worker ; Force the execution domain with an add. 99*9880d681SAndroid Build Coastguard Worker %a2 = add <8 x i64> %a, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1> 100*9880d681SAndroid Build Coastguard Worker %x = or <8 x i64> %a2, %b 101*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %x 102*9880d681SAndroid Build Coastguard Worker} 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @vpxorq(<8 x i64> %a, <8 x i64> %b) nounwind uwtable readnone ssp { 105*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: vpxorq: 106*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: ## %entry 107*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpaddq {{.*}}(%rip){1to8}, %zmm0, %zmm0 108*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpxorq %zmm1, %zmm0, %zmm0 109*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 110*9880d681SAndroid Build Coastguard Workerentry: 111*9880d681SAndroid Build Coastguard Worker ; Force the execution domain with an add. 112*9880d681SAndroid Build Coastguard Worker %a2 = add <8 x i64> %a, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1> 113*9880d681SAndroid Build Coastguard Worker %x = xor <8 x i64> %a2, %b 114*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %x 115*9880d681SAndroid Build Coastguard Worker} 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @orq_broadcast(<8 x i64> %a) nounwind { 119*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: orq_broadcast: 120*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: 121*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vporq {{.*}}(%rip){1to8}, %zmm0, %zmm0 122*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 123*9880d681SAndroid Build Coastguard Worker %b = or <8 x i64> %a, <i64 2, i64 2, i64 2, i64 2, i64 2, i64 2, i64 2, i64 2> 124*9880d681SAndroid Build Coastguard Worker ret <8 x i64> %b 125*9880d681SAndroid Build Coastguard Worker} 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @andd512fold(<16 x i32> %y, <16 x i32>* %x) { 128*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: andd512fold: 129*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: ## %entry 130*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpandd (%rdi), %zmm0, %zmm0 131*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 132*9880d681SAndroid Build Coastguard Workerentry: 133*9880d681SAndroid Build Coastguard Worker %a = load <16 x i32>, <16 x i32>* %x, align 4 134*9880d681SAndroid Build Coastguard Worker %b = and <16 x i32> %y, %a 135*9880d681SAndroid Build Coastguard Worker ret <16 x i32> %b 136*9880d681SAndroid Build Coastguard Worker} 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @andqbrst(<8 x i64> %p1, i64* %ap) { 139*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: andqbrst: 140*9880d681SAndroid Build Coastguard Worker; ALL: ## BB#0: ## %entry 141*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: vpandq (%rdi){1to8}, %zmm0, %zmm0 142*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: retq 143*9880d681SAndroid Build Coastguard Workerentry: 144*9880d681SAndroid Build Coastguard Worker %a = load i64, i64* %ap, align 8 145*9880d681SAndroid Build Coastguard Worker %b = insertelement <8 x i64> undef, i64 %a, i32 0 146*9880d681SAndroid Build Coastguard Worker %c = shufflevector <8 x i64> %b, <8 x i64> undef, <8 x i32> zeroinitializer 147*9880d681SAndroid Build Coastguard Worker %d = and <8 x i64> %p1, %c 148*9880d681SAndroid Build Coastguard Worker ret <8 x i64>%d 149*9880d681SAndroid Build Coastguard Worker} 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @and_v64i8(<64 x i8> %a, <64 x i8> %b) { 152*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: and_v64i8: 153*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 154*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vandps %ymm2, %ymm0, %ymm0 155*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vandps %ymm3, %ymm1, %ymm1 156*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 157*9880d681SAndroid Build Coastguard Worker; 158*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: and_v64i8: 159*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 160*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpandq %zmm1, %zmm0, %zmm0 161*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 162*9880d681SAndroid Build Coastguard Worker %res = and <64 x i8> %a, %b 163*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 164*9880d681SAndroid Build Coastguard Worker} 165*9880d681SAndroid Build Coastguard Worker 166*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @andn_v64i8(<64 x i8> %a, <64 x i8> %b) { 167*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: andn_v64i8: 168*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 169*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vandnps %ymm0, %ymm2, %ymm0 170*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vandnps %ymm1, %ymm3, %ymm1 171*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 172*9880d681SAndroid Build Coastguard Worker; 173*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: andn_v64i8: 174*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 175*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpandnq %zmm0, %zmm1, %zmm0 176*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 177*9880d681SAndroid Build Coastguard Worker %b2 = xor <64 x i8> %b, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, 178*9880d681SAndroid Build Coastguard Worker i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, 179*9880d681SAndroid Build Coastguard Worker i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, 180*9880d681SAndroid Build Coastguard Worker i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1> 181*9880d681SAndroid Build Coastguard Worker %res = and <64 x i8> %a, %b2 182*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 183*9880d681SAndroid Build Coastguard Worker} 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @or_v64i8(<64 x i8> %a, <64 x i8> %b) { 186*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: or_v64i8: 187*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 188*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vorps %ymm2, %ymm0, %ymm0 189*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vorps %ymm3, %ymm1, %ymm1 190*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 191*9880d681SAndroid Build Coastguard Worker; 192*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: or_v64i8: 193*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 194*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vporq %zmm1, %zmm0, %zmm0 195*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 196*9880d681SAndroid Build Coastguard Worker %res = or <64 x i8> %a, %b 197*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 198*9880d681SAndroid Build Coastguard Worker} 199*9880d681SAndroid Build Coastguard Worker 200*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @xor_v64i8(<64 x i8> %a, <64 x i8> %b) { 201*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: xor_v64i8: 202*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 203*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vxorps %ymm2, %ymm0, %ymm0 204*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vxorps %ymm3, %ymm1, %ymm1 205*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 206*9880d681SAndroid Build Coastguard Worker; 207*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: xor_v64i8: 208*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 209*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpxorq %zmm1, %zmm0, %zmm0 210*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 211*9880d681SAndroid Build Coastguard Worker %res = xor <64 x i8> %a, %b 212*9880d681SAndroid Build Coastguard Worker ret <64 x i8> %res 213*9880d681SAndroid Build Coastguard Worker} 214*9880d681SAndroid Build Coastguard Worker 215*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @and_v32i16(<32 x i16> %a, <32 x i16> %b) { 216*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: and_v32i16: 217*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 218*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vandps %ymm2, %ymm0, %ymm0 219*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vandps %ymm3, %ymm1, %ymm1 220*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 221*9880d681SAndroid Build Coastguard Worker; 222*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: and_v32i16: 223*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 224*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpandq %zmm1, %zmm0, %zmm0 225*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 226*9880d681SAndroid Build Coastguard Worker %res = and <32 x i16> %a, %b 227*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 228*9880d681SAndroid Build Coastguard Worker} 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @andn_v32i16(<32 x i16> %a, <32 x i16> %b) { 231*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: andn_v32i16: 232*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 233*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vandnps %ymm0, %ymm2, %ymm0 234*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vandnps %ymm1, %ymm3, %ymm1 235*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 236*9880d681SAndroid Build Coastguard Worker; 237*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: andn_v32i16: 238*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 239*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpandnq %zmm0, %zmm1, %zmm0 240*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 241*9880d681SAndroid Build Coastguard Worker %b2 = xor <32 x i16> %b, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, 242*9880d681SAndroid Build Coastguard Worker i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1> 243*9880d681SAndroid Build Coastguard Worker %res = and <32 x i16> %a, %b2 244*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 245*9880d681SAndroid Build Coastguard Worker} 246*9880d681SAndroid Build Coastguard Worker 247*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @or_v32i16(<32 x i16> %a, <32 x i16> %b) { 248*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: or_v32i16: 249*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 250*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vorps %ymm2, %ymm0, %ymm0 251*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vorps %ymm3, %ymm1, %ymm1 252*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 253*9880d681SAndroid Build Coastguard Worker; 254*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: or_v32i16: 255*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 256*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vporq %zmm1, %zmm0, %zmm0 257*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 258*9880d681SAndroid Build Coastguard Worker %res = or <32 x i16> %a, %b 259*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 260*9880d681SAndroid Build Coastguard Worker} 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @xor_v32i16(<32 x i16> %a, <32 x i16> %b) { 263*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: xor_v32i16: 264*9880d681SAndroid Build Coastguard Worker; KNL: ## BB#0: 265*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vxorps %ymm2, %ymm0, %ymm0 266*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: vxorps %ymm3, %ymm1, %ymm1 267*9880d681SAndroid Build Coastguard Worker; KNL-NEXT: retq 268*9880d681SAndroid Build Coastguard Worker; 269*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: xor_v32i16: 270*9880d681SAndroid Build Coastguard Worker; SKX: ## BB#0: 271*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: vpxorq %zmm1, %zmm0, %zmm0 272*9880d681SAndroid Build Coastguard Worker; SKX-NEXT: retq 273*9880d681SAndroid Build Coastguard Worker %res = xor <32 x i16> %a, %b 274*9880d681SAndroid Build Coastguard Worker ret <32 x i16> %res 275*9880d681SAndroid Build Coastguard Worker} 276