1*0a6a1f1dSLionel Sambuc; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl -mattr=+avx512vl | FileCheck %s 2*0a6a1f1dSLionel Sambuc 3*0a6a1f1dSLionel Sambuc; 256-bit 4*0a6a1f1dSLionel Sambuc 5*0a6a1f1dSLionel Sambuc; CHECK-LABEL: vpandd256 6*0a6a1f1dSLionel Sambuc; CHECK: vpandd %ymm 7*0a6a1f1dSLionel Sambuc; CHECK: ret 8*0a6a1f1dSLionel Sambucdefine <8 x i32> @vpandd256(<8 x i32> %a, <8 x i32> %b) nounwind uwtable readnone ssp { 9*0a6a1f1dSLionel Sambucentry: 10*0a6a1f1dSLionel Sambuc ; Force the execution domain with an add. 11*0a6a1f1dSLionel Sambuc %a2 = add <8 x i32> %a, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1> 12*0a6a1f1dSLionel Sambuc %x = and <8 x i32> %a2, %b 13*0a6a1f1dSLionel Sambuc ret <8 x i32> %x 14*0a6a1f1dSLionel Sambuc} 15*0a6a1f1dSLionel Sambuc 16*0a6a1f1dSLionel Sambuc; CHECK-LABEL: vpord256 17*0a6a1f1dSLionel Sambuc; CHECK: vpord %ymm 18*0a6a1f1dSLionel Sambuc; CHECK: ret 19*0a6a1f1dSLionel Sambucdefine <8 x i32> @vpord256(<8 x i32> %a, <8 x i32> %b) nounwind uwtable readnone ssp { 20*0a6a1f1dSLionel Sambucentry: 21*0a6a1f1dSLionel Sambuc ; Force the execution domain with an add. 22*0a6a1f1dSLionel Sambuc %a2 = add <8 x i32> %a, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1> 23*0a6a1f1dSLionel Sambuc %x = or <8 x i32> %a2, %b 24*0a6a1f1dSLionel Sambuc ret <8 x i32> %x 25*0a6a1f1dSLionel Sambuc} 26*0a6a1f1dSLionel Sambuc 27*0a6a1f1dSLionel Sambuc; CHECK-LABEL: vpxord256 28*0a6a1f1dSLionel Sambuc; CHECK: vpxord %ymm 29*0a6a1f1dSLionel Sambuc; CHECK: ret 30*0a6a1f1dSLionel Sambucdefine <8 x i32> @vpxord256(<8 x i32> %a, <8 x i32> %b) nounwind uwtable readnone ssp { 31*0a6a1f1dSLionel Sambucentry: 32*0a6a1f1dSLionel Sambuc ; Force the execution domain with an add. 33*0a6a1f1dSLionel Sambuc %a2 = add <8 x i32> %a, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1> 34*0a6a1f1dSLionel Sambuc %x = xor <8 x i32> %a2, %b 35*0a6a1f1dSLionel Sambuc ret <8 x i32> %x 36*0a6a1f1dSLionel Sambuc} 37*0a6a1f1dSLionel Sambuc 38*0a6a1f1dSLionel Sambuc; CHECK-LABEL: vpandq256 39*0a6a1f1dSLionel Sambuc; CHECK: vpandq %ymm 40*0a6a1f1dSLionel Sambuc; CHECK: ret 41*0a6a1f1dSLionel Sambucdefine <4 x i64> @vpandq256(<4 x i64> %a, <4 x i64> %b) nounwind uwtable readnone ssp { 42*0a6a1f1dSLionel Sambucentry: 43*0a6a1f1dSLionel Sambuc ; Force the execution domain with an add. 44*0a6a1f1dSLionel Sambuc %a2 = add <4 x i64> %a, <i64 1, i64 1, i64 1, i64 1> 45*0a6a1f1dSLionel Sambuc %x = and <4 x i64> %a2, %b 46*0a6a1f1dSLionel Sambuc ret <4 x i64> %x 47*0a6a1f1dSLionel Sambuc} 48*0a6a1f1dSLionel Sambuc 49*0a6a1f1dSLionel Sambuc; CHECK-LABEL: vporq256 50*0a6a1f1dSLionel Sambuc; CHECK: vporq %ymm 51*0a6a1f1dSLionel Sambuc; CHECK: ret 52*0a6a1f1dSLionel Sambucdefine <4 x i64> @vporq256(<4 x i64> %a, <4 x i64> %b) nounwind uwtable readnone ssp { 53*0a6a1f1dSLionel Sambucentry: 54*0a6a1f1dSLionel Sambuc ; Force the execution domain with an add. 55*0a6a1f1dSLionel Sambuc %a2 = add <4 x i64> %a, <i64 1, i64 1, i64 1, i64 1> 56*0a6a1f1dSLionel Sambuc %x = or <4 x i64> %a2, %b 57*0a6a1f1dSLionel Sambuc ret <4 x i64> %x 58*0a6a1f1dSLionel Sambuc} 59*0a6a1f1dSLionel Sambuc 60*0a6a1f1dSLionel Sambuc; CHECK-LABEL: vpxorq256 61*0a6a1f1dSLionel Sambuc; CHECK: vpxorq %ymm 62*0a6a1f1dSLionel Sambuc; CHECK: ret 63*0a6a1f1dSLionel Sambucdefine <4 x i64> @vpxorq256(<4 x i64> %a, <4 x i64> %b) nounwind uwtable readnone ssp { 64*0a6a1f1dSLionel Sambucentry: 65*0a6a1f1dSLionel Sambuc ; Force the execution domain with an add. 66*0a6a1f1dSLionel Sambuc %a2 = add <4 x i64> %a, <i64 1, i64 1, i64 1, i64 1> 67*0a6a1f1dSLionel Sambuc %x = xor <4 x i64> %a2, %b 68*0a6a1f1dSLionel Sambuc ret <4 x i64> %x 69*0a6a1f1dSLionel Sambuc} 70*0a6a1f1dSLionel Sambuc 71*0a6a1f1dSLionel Sambuc; 128-bit 72*0a6a1f1dSLionel Sambuc 73*0a6a1f1dSLionel Sambuc; CHECK-LABEL: vpandd128 74*0a6a1f1dSLionel Sambuc; CHECK: vpandd %xmm 75*0a6a1f1dSLionel Sambuc; CHECK: ret 76*0a6a1f1dSLionel Sambucdefine <4 x i32> @vpandd128(<4 x i32> %a, <4 x i32> %b) nounwind uwtable readnone ssp { 77*0a6a1f1dSLionel Sambucentry: 78*0a6a1f1dSLionel Sambuc ; Force the execution domain with an add. 79*0a6a1f1dSLionel Sambuc %a2 = add <4 x i32> %a, <i32 1, i32 1, i32 1, i32 1> 80*0a6a1f1dSLionel Sambuc %x = and <4 x i32> %a2, %b 81*0a6a1f1dSLionel Sambuc ret <4 x i32> %x 82*0a6a1f1dSLionel Sambuc} 83*0a6a1f1dSLionel Sambuc 84*0a6a1f1dSLionel Sambuc; CHECK-LABEL: vpord128 85*0a6a1f1dSLionel Sambuc; CHECK: vpord %xmm 86*0a6a1f1dSLionel Sambuc; CHECK: ret 87*0a6a1f1dSLionel Sambucdefine <4 x i32> @vpord128(<4 x i32> %a, <4 x i32> %b) nounwind uwtable readnone ssp { 88*0a6a1f1dSLionel Sambucentry: 89*0a6a1f1dSLionel Sambuc ; Force the execution domain with an add. 90*0a6a1f1dSLionel Sambuc %a2 = add <4 x i32> %a, <i32 1, i32 1, i32 1, i32 1> 91*0a6a1f1dSLionel Sambuc %x = or <4 x i32> %a2, %b 92*0a6a1f1dSLionel Sambuc ret <4 x i32> %x 93*0a6a1f1dSLionel Sambuc} 94*0a6a1f1dSLionel Sambuc 95*0a6a1f1dSLionel Sambuc; CHECK-LABEL: vpxord128 96*0a6a1f1dSLionel Sambuc; CHECK: vpxord %xmm 97*0a6a1f1dSLionel Sambuc; CHECK: ret 98*0a6a1f1dSLionel Sambucdefine <4 x i32> @vpxord128(<4 x i32> %a, <4 x i32> %b) nounwind uwtable readnone ssp { 99*0a6a1f1dSLionel Sambucentry: 100*0a6a1f1dSLionel Sambuc ; Force the execution domain with an add. 101*0a6a1f1dSLionel Sambuc %a2 = add <4 x i32> %a, <i32 1, i32 1, i32 1, i32 1> 102*0a6a1f1dSLionel Sambuc %x = xor <4 x i32> %a2, %b 103*0a6a1f1dSLionel Sambuc ret <4 x i32> %x 104*0a6a1f1dSLionel Sambuc} 105*0a6a1f1dSLionel Sambuc 106*0a6a1f1dSLionel Sambuc; CHECK-LABEL: vpandq128 107*0a6a1f1dSLionel Sambuc; CHECK: vpandq %xmm 108*0a6a1f1dSLionel Sambuc; CHECK: ret 109*0a6a1f1dSLionel Sambucdefine <2 x i64> @vpandq128(<2 x i64> %a, <2 x i64> %b) nounwind uwtable readnone ssp { 110*0a6a1f1dSLionel Sambucentry: 111*0a6a1f1dSLionel Sambuc ; Force the execution domain with an add. 112*0a6a1f1dSLionel Sambuc %a2 = add <2 x i64> %a, <i64 1, i64 1> 113*0a6a1f1dSLionel Sambuc %x = and <2 x i64> %a2, %b 114*0a6a1f1dSLionel Sambuc ret <2 x i64> %x 115*0a6a1f1dSLionel Sambuc} 116*0a6a1f1dSLionel Sambuc 117*0a6a1f1dSLionel Sambuc; CHECK-LABEL: vporq128 118*0a6a1f1dSLionel Sambuc; CHECK: vporq %xmm 119*0a6a1f1dSLionel Sambuc; CHECK: ret 120*0a6a1f1dSLionel Sambucdefine <2 x i64> @vporq128(<2 x i64> %a, <2 x i64> %b) nounwind uwtable readnone ssp { 121*0a6a1f1dSLionel Sambucentry: 122*0a6a1f1dSLionel Sambuc ; Force the execution domain with an add. 123*0a6a1f1dSLionel Sambuc %a2 = add <2 x i64> %a, <i64 1, i64 1> 124*0a6a1f1dSLionel Sambuc %x = or <2 x i64> %a2, %b 125*0a6a1f1dSLionel Sambuc ret <2 x i64> %x 126*0a6a1f1dSLionel Sambuc} 127*0a6a1f1dSLionel Sambuc 128*0a6a1f1dSLionel Sambuc; CHECK-LABEL: vpxorq128 129*0a6a1f1dSLionel Sambuc; CHECK: vpxorq %xmm 130*0a6a1f1dSLionel Sambuc; CHECK: ret 131*0a6a1f1dSLionel Sambucdefine <2 x i64> @vpxorq128(<2 x i64> %a, <2 x i64> %b) nounwind uwtable readnone ssp { 132*0a6a1f1dSLionel Sambucentry: 133*0a6a1f1dSLionel Sambuc ; Force the execution domain with an add. 134*0a6a1f1dSLionel Sambuc %a2 = add <2 x i64> %a, <i64 1, i64 1> 135*0a6a1f1dSLionel Sambuc %x = xor <2 x i64> %a2, %b 136*0a6a1f1dSLionel Sambuc ret <2 x i64> %x 137*0a6a1f1dSLionel Sambuc} 138