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