summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/vec_cmp_uint-128.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/X86/vec_cmp_uint-128.ll')
-rw-r--r--llvm/test/CodeGen/X86/vec_cmp_uint-128.ll124
1 files changed, 30 insertions, 94 deletions
diff --git a/llvm/test/CodeGen/X86/vec_cmp_uint-128.ll b/llvm/test/CodeGen/X86/vec_cmp_uint-128.ll
index 305fd80b7c4..9ffdc1c5f4f 100644
--- a/llvm/test/CodeGen/X86/vec_cmp_uint-128.ll
+++ b/llvm/test/CodeGen/X86/vec_cmp_uint-128.ll
@@ -37,7 +37,7 @@ define <2 x i64> @eq_v2i64(<2 x i64> %a, <2 x i64> %b) nounwind {
;
; XOP-LABEL: eq_v2i64:
; XOP: # BB#0:
-; XOP-NEXT: vpcmpeqq %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomeqq %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp eq <2 x i64> %a, %b
%2 = sext <2 x i1> %1 to <2 x i64>
@@ -57,7 +57,7 @@ define <4 x i32> @eq_v4i32(<4 x i32> %a, <4 x i32> %b) nounwind {
;
; XOP-LABEL: eq_v4i32:
; XOP: # BB#0:
-; XOP-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomeqd %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp eq <4 x i32> %a, %b
%2 = sext <4 x i1> %1 to <4 x i32>
@@ -77,7 +77,7 @@ define <8 x i16> @eq_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind {
;
; XOP-LABEL: eq_v8i16:
; XOP: # BB#0:
-; XOP-NEXT: vpcmpeqw %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomeqw %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp eq <8 x i16> %a, %b
%2 = sext <8 x i1> %1 to <8 x i16>
@@ -97,7 +97,7 @@ define <16 x i8> @eq_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind {
;
; XOP-LABEL: eq_v16i8:
; XOP: # BB#0:
-; XOP-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomeqb %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp eq <16 x i8> %a, %b
%2 = sext <16 x i1> %1 to <16 x i8>
@@ -141,9 +141,7 @@ define <2 x i64> @ne_v2i64(<2 x i64> %a, <2 x i64> %b) nounwind {
;
; XOP-LABEL: ne_v2i64:
; XOP: # BB#0:
-; XOP-NEXT: vpcmpeqq %xmm1, %xmm0, %xmm0
-; XOP-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
-; XOP-NEXT: vpxor %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomneqq %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ne <2 x i64> %a, %b
%2 = sext <2 x i1> %1 to <2 x i64>
@@ -167,9 +165,7 @@ define <4 x i32> @ne_v4i32(<4 x i32> %a, <4 x i32> %b) nounwind {
;
; XOP-LABEL: ne_v4i32:
; XOP: # BB#0:
-; XOP-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
-; XOP-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
-; XOP-NEXT: vpxor %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomneqd %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ne <4 x i32> %a, %b
%2 = sext <4 x i1> %1 to <4 x i32>
@@ -193,9 +189,7 @@ define <8 x i16> @ne_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind {
;
; XOP-LABEL: ne_v8i16:
; XOP: # BB#0:
-; XOP-NEXT: vpcmpeqw %xmm1, %xmm0, %xmm0
-; XOP-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
-; XOP-NEXT: vpxor %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomneqw %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ne <8 x i16> %a, %b
%2 = sext <8 x i1> %1 to <8 x i16>
@@ -219,9 +213,7 @@ define <16 x i8> @ne_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind {
;
; XOP-LABEL: ne_v16i8:
; XOP: # BB#0:
-; XOP-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm0
-; XOP-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
-; XOP-NEXT: vpxor %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomneqb %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ne <16 x i8> %a, %b
%2 = sext <16 x i1> %1 to <16 x i8>
@@ -289,12 +281,7 @@ define <2 x i64> @ge_v2i64(<2 x i64> %a, <2 x i64> %b) nounwind {
;
; XOP-LABEL: ge_v2i64:
; XOP: # BB#0:
-; XOP-NEXT: vmovdqa {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]
-; XOP-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; XOP-NEXT: vpxor %xmm2, %xmm1, %xmm1
-; XOP-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm0
-; XOP-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
-; XOP-NEXT: vpxor %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomgeuq %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp uge <2 x i64> %a, %b
%2 = sext <2 x i1> %1 to <2 x i64>
@@ -332,8 +319,7 @@ define <4 x i32> @ge_v4i32(<4 x i32> %a, <4 x i32> %b) nounwind {
;
; XOP-LABEL: ge_v4i32:
; XOP: # BB#0:
-; XOP-NEXT: vpmaxud %xmm1, %xmm0, %xmm1
-; XOP-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomgeud %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp uge <4 x i32> %a, %b
%2 = sext <4 x i1> %1 to <4 x i32>
@@ -368,8 +354,7 @@ define <8 x i16> @ge_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind {
;
; XOP-LABEL: ge_v8i16:
; XOP: # BB#0:
-; XOP-NEXT: vpmaxuw %xmm1, %xmm0, %xmm1
-; XOP-NEXT: vpcmpeqw %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomgeuw %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp uge <8 x i16> %a, %b
%2 = sext <8 x i1> %1 to <8 x i16>
@@ -391,8 +376,7 @@ define <16 x i8> @ge_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind {
;
; XOP-LABEL: ge_v16i8:
; XOP: # BB#0:
-; XOP-NEXT: vpmaxub %xmm1, %xmm0, %xmm1
-; XOP-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomgeub %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp uge <16 x i8> %a, %b
%2 = sext <16 x i1> %1 to <16 x i8>
@@ -452,10 +436,7 @@ define <2 x i64> @gt_v2i64(<2 x i64> %a, <2 x i64> %b) nounwind {
;
; XOP-LABEL: gt_v2i64:
; XOP: # BB#0:
-; XOP-NEXT: vmovdqa {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]
-; XOP-NEXT: vpxor %xmm2, %xmm1, %xmm1
-; XOP-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; XOP-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomgtuq %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ugt <2 x i64> %a, %b
%2 = sext <2 x i1> %1 to <2 x i64>
@@ -487,21 +468,10 @@ define <4 x i32> @gt_v4i32(<4 x i32> %a, <4 x i32> %b) nounwind {
; AVX2-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0
; AVX2-NEXT: retq
;
-; XOPAVX1-LABEL: gt_v4i32:
-; XOPAVX1: # BB#0:
-; XOPAVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]
-; XOPAVX1-NEXT: vpxor %xmm2, %xmm1, %xmm1
-; XOPAVX1-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; XOPAVX1-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0
-; XOPAVX1-NEXT: retq
-;
-; XOPAVX2-LABEL: gt_v4i32:
-; XOPAVX2: # BB#0:
-; XOPAVX2-NEXT: vpbroadcastd {{.*}}(%rip), %xmm2
-; XOPAVX2-NEXT: vpxor %xmm2, %xmm1, %xmm1
-; XOPAVX2-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; XOPAVX2-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0
-; XOPAVX2-NEXT: retq
+; XOP-LABEL: gt_v4i32:
+; XOP: # BB#0:
+; XOP-NEXT: vpcomgtud %xmm1, %xmm0, %xmm0
+; XOP-NEXT: retq
;
; AVX512-LABEL: gt_v4i32:
; AVX512: # BB#0:
@@ -534,10 +504,7 @@ define <8 x i16> @gt_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind {
;
; XOP-LABEL: gt_v8i16:
; XOP: # BB#0:
-; XOP-NEXT: vmovdqa {{.*#+}} xmm2 = [32768,32768,32768,32768,32768,32768,32768,32768]
-; XOP-NEXT: vpxor %xmm2, %xmm1, %xmm1
-; XOP-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; XOP-NEXT: vpcmpgtw %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomgtuw %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ugt <8 x i16> %a, %b
%2 = sext <8 x i1> %1 to <8 x i16>
@@ -563,10 +530,7 @@ define <16 x i8> @gt_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind {
;
; XOP-LABEL: gt_v16i8:
; XOP: # BB#0:
-; XOP-NEXT: vmovdqa {{.*#+}} xmm2 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
-; XOP-NEXT: vpxor %xmm2, %xmm1, %xmm1
-; XOP-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; XOP-NEXT: vpcmpgtb %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomgtub %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ugt <16 x i8> %a, %b
%2 = sext <16 x i1> %1 to <16 x i8>
@@ -634,12 +598,7 @@ define <2 x i64> @le_v2i64(<2 x i64> %a, <2 x i64> %b) nounwind {
;
; XOP-LABEL: le_v2i64:
; XOP: # BB#0:
-; XOP-NEXT: vmovdqa {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]
-; XOP-NEXT: vpxor %xmm2, %xmm1, %xmm1
-; XOP-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; XOP-NEXT: vpcmpgtq %xmm1, %xmm0, %xmm0
-; XOP-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
-; XOP-NEXT: vpxor %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomleuq %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ule <2 x i64> %a, %b
%2 = sext <2 x i1> %1 to <2 x i64>
@@ -677,8 +636,7 @@ define <4 x i32> @le_v4i32(<4 x i32> %a, <4 x i32> %b) nounwind {
;
; XOP-LABEL: le_v4i32:
; XOP: # BB#0:
-; XOP-NEXT: vpminud %xmm1, %xmm0, %xmm1
-; XOP-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomleud %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ule <4 x i32> %a, %b
%2 = sext <4 x i1> %1 to <4 x i32>
@@ -713,8 +671,7 @@ define <8 x i16> @le_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind {
;
; XOP-LABEL: le_v8i16:
; XOP: # BB#0:
-; XOP-NEXT: vpminuw %xmm1, %xmm0, %xmm1
-; XOP-NEXT: vpcmpeqw %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomleuw %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ule <8 x i16> %a, %b
%2 = sext <8 x i1> %1 to <8 x i16>
@@ -736,8 +693,7 @@ define <16 x i8> @le_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind {
;
; XOP-LABEL: le_v16i8:
; XOP: # BB#0:
-; XOP-NEXT: vpminub %xmm1, %xmm0, %xmm1
-; XOP-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm0
+; XOP-NEXT: vpcomleub %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ule <16 x i8> %a, %b
%2 = sext <16 x i1> %1 to <16 x i8>
@@ -798,10 +754,7 @@ define <2 x i64> @lt_v2i64(<2 x i64> %a, <2 x i64> %b) nounwind {
;
; XOP-LABEL: lt_v2i64:
; XOP: # BB#0:
-; XOP-NEXT: vmovdqa {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]
-; XOP-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; XOP-NEXT: vpxor %xmm2, %xmm1, %xmm1
-; XOP-NEXT: vpcmpgtq %xmm0, %xmm1, %xmm0
+; XOP-NEXT: vpcomltuq %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ult <2 x i64> %a, %b
%2 = sext <2 x i1> %1 to <2 x i64>
@@ -834,21 +787,10 @@ define <4 x i32> @lt_v4i32(<4 x i32> %a, <4 x i32> %b) nounwind {
; AVX2-NEXT: vpcmpgtd %xmm0, %xmm1, %xmm0
; AVX2-NEXT: retq
;
-; XOPAVX1-LABEL: lt_v4i32:
-; XOPAVX1: # BB#0:
-; XOPAVX1-NEXT: vmovdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]
-; XOPAVX1-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; XOPAVX1-NEXT: vpxor %xmm2, %xmm1, %xmm1
-; XOPAVX1-NEXT: vpcmpgtd %xmm0, %xmm1, %xmm0
-; XOPAVX1-NEXT: retq
-;
-; XOPAVX2-LABEL: lt_v4i32:
-; XOPAVX2: # BB#0:
-; XOPAVX2-NEXT: vpbroadcastd {{.*}}(%rip), %xmm2
-; XOPAVX2-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; XOPAVX2-NEXT: vpxor %xmm2, %xmm1, %xmm1
-; XOPAVX2-NEXT: vpcmpgtd %xmm0, %xmm1, %xmm0
-; XOPAVX2-NEXT: retq
+; XOP-LABEL: lt_v4i32:
+; XOP: # BB#0:
+; XOP-NEXT: vpcomltud %xmm1, %xmm0, %xmm0
+; XOP-NEXT: retq
;
; AVX512-LABEL: lt_v4i32:
; AVX512: # BB#0:
@@ -882,10 +824,7 @@ define <8 x i16> @lt_v8i16(<8 x i16> %a, <8 x i16> %b) nounwind {
;
; XOP-LABEL: lt_v8i16:
; XOP: # BB#0:
-; XOP-NEXT: vmovdqa {{.*#+}} xmm2 = [32768,32768,32768,32768,32768,32768,32768,32768]
-; XOP-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; XOP-NEXT: vpxor %xmm2, %xmm1, %xmm1
-; XOP-NEXT: vpcmpgtw %xmm0, %xmm1, %xmm0
+; XOP-NEXT: vpcomltuw %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ult <8 x i16> %a, %b
%2 = sext <8 x i1> %1 to <8 x i16>
@@ -912,10 +851,7 @@ define <16 x i8> @lt_v16i8(<16 x i8> %a, <16 x i8> %b) nounwind {
;
; XOP-LABEL: lt_v16i8:
; XOP: # BB#0:
-; XOP-NEXT: vmovdqa {{.*#+}} xmm2 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
-; XOP-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; XOP-NEXT: vpxor %xmm2, %xmm1, %xmm1
-; XOP-NEXT: vpcmpgtb %xmm0, %xmm1, %xmm0
+; XOP-NEXT: vpcomltub %xmm1, %xmm0, %xmm0
; XOP-NEXT: retq
%1 = icmp ult <16 x i8> %a, %b
%2 = sext <16 x i1> %1 to <16 x i8>
OpenPOWER on IntegriCloud