1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=core-avx2 -mattr=+avx2 | FileCheck %s
6 define <4 x i64> @vpandn(<4 x i64> %a, <4 x i64> %b) nounwind uwtable readnone ssp {
8 ; Force the execution domain with an add.
9 %a2 = add <4 x i64> %a, <i64 1, i64 1, i64 1, i64 1>
10 %y = xor <4 x i64> %a2, <i64 -1, i64 -1, i64 -1, i64 -1>
11 %x = and <4 x i64> %a, %y
18 define <4 x i64> @vpand(<4 x i64> %a, <4 x i64> %b) nounwind uwtable readnone ssp {
20 ; Force the execution domain with an add.
21 %a2 = add <4 x i64> %a, <i64 1, i64 1, i64 1, i64 1>
22 %x = and <4 x i64> %a2, %b
29 define <4 x i64> @vpor(<4 x i64> %a, <4 x i64> %b) nounwind uwtable readnone ssp {
31 ; Force the execution domain with an add.
32 %a2 = add <4 x i64> %a, <i64 1, i64 1, i64 1, i64 1>
33 %x = or <4 x i64> %a2, %b
40 define <4 x i64> @vpxor(<4 x i64> %a, <4 x i64> %b) nounwind uwtable readnone ssp {
42 ; Force the execution domain with an add.
43 %a2 = add <4 x i64> %a, <i64 1, i64 1, i64 1, i64 1>
44 %x = xor <4 x i64> %a2, %b
49 ; CHECK: vpblendvb %ymm
51 define <32 x i8> @vpblendvb(<32 x i8> %x, <32 x i8> %y) {
52 %min_is_x = icmp ult <32 x i8> %x, %y
53 %min = select <32 x i1> %min_is_x, <32 x i8> %x, <32 x i8> %y
58 ; CHECK: variable_shl0
61 define <4 x i32> @variable_shl0(<4 x i32> %x, <4 x i32> %y) {
62 %k = shl <4 x i32> %x, %y
65 ; CHECK: variable_shl1
68 define <8 x i32> @variable_shl1(<8 x i32> %x, <8 x i32> %y) {
69 %k = shl <8 x i32> %x, %y
72 ; CHECK: variable_shl2
75 define <2 x i64> @variable_shl2(<2 x i64> %x, <2 x i64> %y) {
76 %k = shl <2 x i64> %x, %y
79 ; CHECK: variable_shl3
82 define <4 x i64> @variable_shl3(<4 x i64> %x, <4 x i64> %y) {
83 %k = shl <4 x i64> %x, %y
86 ; CHECK: variable_srl0
89 define <4 x i32> @variable_srl0(<4 x i32> %x, <4 x i32> %y) {
90 %k = lshr <4 x i32> %x, %y
93 ; CHECK: variable_srl1
96 define <8 x i32> @variable_srl1(<8 x i32> %x, <8 x i32> %y) {
97 %k = lshr <8 x i32> %x, %y
100 ; CHECK: variable_srl2
103 define <2 x i64> @variable_srl2(<2 x i64> %x, <2 x i64> %y) {
104 %k = lshr <2 x i64> %x, %y
107 ; CHECK: variable_srl3
110 define <4 x i64> @variable_srl3(<4 x i64> %x, <4 x i64> %y) {
111 %k = lshr <4 x i64> %x, %y
115 ; CHECK: variable_sra0
118 define <4 x i32> @variable_sra0(<4 x i32> %x, <4 x i32> %y) {
119 %k = ashr <4 x i32> %x, %y
122 ; CHECK: variable_sra1
125 define <8 x i32> @variable_sra1(<8 x i32> %x, <8 x i32> %y) {
126 %k = ashr <8 x i32> %x, %y