1 ; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+sse4.1,-avx < %s | FileCheck %s --check-prefix SSE41
2 ; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+avx,-avx2 < %s | FileCheck %s --check-prefix AVX
4 define i32 @veccond128(<4 x i32> %input) {
6 %0 = bitcast <4 x i32> %input to i128
7 %1 = icmp ne i128 %0, 0
8 br i1 %1, label %if-true-block, label %endif-block
10 if-true-block: ; preds = %entry
12 endif-block: ; preds = %entry,
18 ; AVX: vptest %xmm{{.*}}, %xmm{{.*}}
22 define i32 @veccond256(<8 x i32> %input) {
24 %0 = bitcast <8 x i32> %input to i256
25 %1 = icmp ne i256 %0, 0
26 br i1 %1, label %if-true-block, label %endif-block
28 if-true-block: ; preds = %entry
30 endif-block: ; preds = %entry,
37 ; AVX: vptest %ymm{{.*}}, %ymm{{.*}}
41 define i32 @veccond512(<16 x i32> %input) {
43 %0 = bitcast <16 x i32> %input to i512
44 %1 = icmp ne i512 %0, 0
45 br i1 %1, label %if-true-block, label %endif-block
47 if-true-block: ; preds = %entry
49 endif-block: ; preds = %entry,
59 ; AVX: vptest %ymm{{.*}}, %ymm{{.*}}
63 define i32 @vectest128(<4 x i32> %input) {
65 %0 = bitcast <4 x i32> %input to i128
66 %1 = icmp ne i128 %0, 0
67 %2 = zext i1 %1 to i32
73 ; AVX: vptest %xmm{{.*}}, %xmm{{.*}}
77 define i32 @vectest256(<8 x i32> %input) {
79 %0 = bitcast <8 x i32> %input to i256
80 %1 = icmp ne i256 %0, 0
81 %2 = zext i1 %1 to i32
88 ; AVX: vptest %ymm{{.*}}, %ymm{{.*}}
92 define i32 @vectest512(<16 x i32> %input) {
94 %0 = bitcast <16 x i32> %input to i512
95 %1 = icmp ne i512 %0, 0
96 %2 = zext i1 %1 to i32
106 ; AVX: vptest %ymm{{.*}}, %ymm{{.*}}
110 define i32 @vecsel128(<4 x i32> %input, i32 %a, i32 %b) {
112 %0 = bitcast <4 x i32> %input to i128
113 %1 = icmp ne i128 %0, 0
114 %2 = select i1 %1, i32 %a, i32 %b
120 ; AVX: vptest %xmm{{.*}}, %xmm{{.*}}
124 define i32 @vecsel256(<8 x i32> %input, i32 %a, i32 %b) {
126 %0 = bitcast <8 x i32> %input to i256
127 %1 = icmp ne i256 %0, 0
128 %2 = select i1 %1, i32 %a, i32 %b
135 ; AVX: vptest %ymm{{.*}}, %ymm{{.*}}
139 define i32 @vecsel512(<16 x i32> %input, i32 %a, i32 %b) {
141 %0 = bitcast <16 x i32> %input to i512
142 %1 = icmp ne i512 %0, 0
143 %2 = select i1 %1, i32 %a, i32 %b
153 ; AVX: vptest %ymm{{.*}}, %ymm{{.*}}