• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=X32
3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=X64
4
5define <8 x i32> @v8i32_cmpgt(<8 x i32> %i, <8 x i32> %j) nounwind readnone {
6; X32-LABEL: v8i32_cmpgt:
7; X32:       # %bb.0:
8; X32-NEXT:    vpcmpgtd %ymm0, %ymm1, %ymm0
9; X32-NEXT:    retl
10;
11; X64-LABEL: v8i32_cmpgt:
12; X64:       # %bb.0:
13; X64-NEXT:    vpcmpgtd %ymm0, %ymm1, %ymm0
14; X64-NEXT:    retq
15  %bincmp = icmp slt <8 x i32> %i, %j
16  %x = sext <8 x i1> %bincmp to <8 x i32>
17  ret <8 x i32> %x
18}
19
20define <4 x i64> @v4i64_cmpgt(<4 x i64> %i, <4 x i64> %j) nounwind readnone {
21; X32-LABEL: v4i64_cmpgt:
22; X32:       # %bb.0:
23; X32-NEXT:    vpcmpgtq %ymm0, %ymm1, %ymm0
24; X32-NEXT:    retl
25;
26; X64-LABEL: v4i64_cmpgt:
27; X64:       # %bb.0:
28; X64-NEXT:    vpcmpgtq %ymm0, %ymm1, %ymm0
29; X64-NEXT:    retq
30  %bincmp = icmp slt <4 x i64> %i, %j
31  %x = sext <4 x i1> %bincmp to <4 x i64>
32  ret <4 x i64> %x
33}
34
35define <16 x i16> @v16i16_cmpgt(<16 x i16> %i, <16 x i16> %j) nounwind readnone {
36; X32-LABEL: v16i16_cmpgt:
37; X32:       # %bb.0:
38; X32-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm0
39; X32-NEXT:    retl
40;
41; X64-LABEL: v16i16_cmpgt:
42; X64:       # %bb.0:
43; X64-NEXT:    vpcmpgtw %ymm0, %ymm1, %ymm0
44; X64-NEXT:    retq
45  %bincmp = icmp slt <16 x i16> %i, %j
46  %x = sext <16 x i1> %bincmp to <16 x i16>
47  ret <16 x i16> %x
48}
49
50define <32 x i8> @v32i8_cmpgt(<32 x i8> %i, <32 x i8> %j) nounwind readnone {
51; X32-LABEL: v32i8_cmpgt:
52; X32:       # %bb.0:
53; X32-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0
54; X32-NEXT:    retl
55;
56; X64-LABEL: v32i8_cmpgt:
57; X64:       # %bb.0:
58; X64-NEXT:    vpcmpgtb %ymm0, %ymm1, %ymm0
59; X64-NEXT:    retq
60  %bincmp = icmp slt <32 x i8> %i, %j
61  %x = sext <32 x i1> %bincmp to <32 x i8>
62  ret <32 x i8> %x
63}
64
65define <8 x i32> @int256_cmpeq(<8 x i32> %i, <8 x i32> %j) nounwind readnone {
66; X32-LABEL: int256_cmpeq:
67; X32:       # %bb.0:
68; X32-NEXT:    vpcmpeqd %ymm1, %ymm0, %ymm0
69; X32-NEXT:    retl
70;
71; X64-LABEL: int256_cmpeq:
72; X64:       # %bb.0:
73; X64-NEXT:    vpcmpeqd %ymm1, %ymm0, %ymm0
74; X64-NEXT:    retq
75  %bincmp = icmp eq <8 x i32> %i, %j
76  %x = sext <8 x i1> %bincmp to <8 x i32>
77  ret <8 x i32> %x
78}
79
80define <4 x i64> @v4i64_cmpeq(<4 x i64> %i, <4 x i64> %j) nounwind readnone {
81; X32-LABEL: v4i64_cmpeq:
82; X32:       # %bb.0:
83; X32-NEXT:    vpcmpeqq %ymm1, %ymm0, %ymm0
84; X32-NEXT:    retl
85;
86; X64-LABEL: v4i64_cmpeq:
87; X64:       # %bb.0:
88; X64-NEXT:    vpcmpeqq %ymm1, %ymm0, %ymm0
89; X64-NEXT:    retq
90  %bincmp = icmp eq <4 x i64> %i, %j
91  %x = sext <4 x i1> %bincmp to <4 x i64>
92  ret <4 x i64> %x
93}
94
95define <16 x i16> @v16i16_cmpeq(<16 x i16> %i, <16 x i16> %j) nounwind readnone {
96; X32-LABEL: v16i16_cmpeq:
97; X32:       # %bb.0:
98; X32-NEXT:    vpcmpeqw %ymm1, %ymm0, %ymm0
99; X32-NEXT:    retl
100;
101; X64-LABEL: v16i16_cmpeq:
102; X64:       # %bb.0:
103; X64-NEXT:    vpcmpeqw %ymm1, %ymm0, %ymm0
104; X64-NEXT:    retq
105  %bincmp = icmp eq <16 x i16> %i, %j
106  %x = sext <16 x i1> %bincmp to <16 x i16>
107  ret <16 x i16> %x
108}
109
110define <32 x i8> @v32i8_cmpeq(<32 x i8> %i, <32 x i8> %j) nounwind readnone {
111; X32-LABEL: v32i8_cmpeq:
112; X32:       # %bb.0:
113; X32-NEXT:    vpcmpeqb %ymm1, %ymm0, %ymm0
114; X32-NEXT:    retl
115;
116; X64-LABEL: v32i8_cmpeq:
117; X64:       # %bb.0:
118; X64-NEXT:    vpcmpeqb %ymm1, %ymm0, %ymm0
119; X64-NEXT:    retq
120  %bincmp = icmp eq <32 x i8> %i, %j
121  %x = sext <32 x i1> %bincmp to <32 x i8>
122  ret <32 x i8> %x
123}
124