summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/vector-reduce-umax.ll
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2019-06-05 18:25:09 +0000
committerCraig Topper <craig.topper@intel.com>2019-06-05 18:25:09 +0000
commitd0fff89b81650e1b7d6c9c73c035672099b0c2db (patch)
tree45c5037279072f7f6b6a0137284f8bcaa67dcf4b /llvm/test/CodeGen/X86/vector-reduce-umax.ll
parent13dd125043fa40b2bf1f8b5d3143b20caf6c68c2 (diff)
downloadbcm5719-llvm-d0fff89b81650e1b7d6c9c73c035672099b0c2db.tar.gz
bcm5719-llvm-d0fff89b81650e1b7d6c9c73c035672099b0c2db.zip
[X86] Add the vector integer min/max instructions to isAssociativeAndCommutative.
As far as I know these should be freely reassociatable just like the floating point MAXC/MINC instructions. The *reduce* test changes are largely regressions and caused by the "generic" CPU we default to not having a scheduler model. The machine-combiner-int-vec.ll test shows the positive benefits of this change. Differential Revision: https://reviews.llvm.org/D62787 llvm-svn: 362629
Diffstat (limited to 'llvm/test/CodeGen/X86/vector-reduce-umax.ll')
-rw-r--r--llvm/test/CodeGen/X86/vector-reduce-umax.ll166
1 files changed, 83 insertions, 83 deletions
diff --git a/llvm/test/CodeGen/X86/vector-reduce-umax.ll b/llvm/test/CodeGen/X86/vector-reduce-umax.ll
index f6a2a57e4b8..087b25321c1 100644
--- a/llvm/test/CodeGen/X86/vector-reduce-umax.ll
+++ b/llvm/test/CodeGen/X86/vector-reduce-umax.ll
@@ -1023,13 +1023,13 @@ define i32 @test_v16i32(<16 x i32> %a0) {
; SSE41-LABEL: test_v16i32:
; SSE41: # %bb.0:
; SSE41-NEXT: pmaxud %xmm3, %xmm1
-; SSE41-NEXT: pmaxud %xmm2, %xmm0
-; SSE41-NEXT: pmaxud %xmm1, %xmm0
-; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
+; SSE41-NEXT: pmaxud %xmm2, %xmm1
; SSE41-NEXT: pmaxud %xmm0, %xmm1
-; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,3]
+; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,0,1]
; SSE41-NEXT: pmaxud %xmm1, %xmm0
-; SSE41-NEXT: movd %xmm0, %eax
+; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
+; SSE41-NEXT: pmaxud %xmm0, %xmm1
+; SSE41-NEXT: movd %xmm1, %eax
; SSE41-NEXT: retq
;
; AVX1-LABEL: test_v16i32:
@@ -1037,8 +1037,8 @@ define i32 @test_v16i32(<16 x i32> %a0) {
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
; AVX1-NEXT: vpmaxud %xmm2, %xmm3, %xmm2
+; AVX1-NEXT: vpmaxud %xmm2, %xmm1, %xmm1
; AVX1-NEXT: vpmaxud %xmm1, %xmm0, %xmm0
-; AVX1-NEXT: vpmaxud %xmm2, %xmm0, %xmm0
; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
; AVX1-NEXT: vpmaxud %xmm1, %xmm0, %xmm0
; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
@@ -1160,14 +1160,14 @@ define i32 @test_v32i32(<32 x i32> %a0) {
; SSE41-LABEL: test_v32i32:
; SSE41: # %bb.0:
; SSE41-NEXT: pmaxud %xmm6, %xmm2
-; SSE41-NEXT: pmaxud %xmm4, %xmm0
-; SSE41-NEXT: pmaxud %xmm2, %xmm0
; SSE41-NEXT: pmaxud %xmm7, %xmm3
-; SSE41-NEXT: pmaxud %xmm5, %xmm1
-; SSE41-NEXT: pmaxud %xmm3, %xmm1
-; SSE41-NEXT: pmaxud %xmm0, %xmm1
-; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,0,1]
-; SSE41-NEXT: pmaxud %xmm1, %xmm0
+; SSE41-NEXT: pmaxud %xmm5, %xmm3
+; SSE41-NEXT: pmaxud %xmm1, %xmm3
+; SSE41-NEXT: pmaxud %xmm4, %xmm2
+; SSE41-NEXT: pmaxud %xmm3, %xmm2
+; SSE41-NEXT: pmaxud %xmm0, %xmm2
+; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm2[2,3,0,1]
+; SSE41-NEXT: pmaxud %xmm2, %xmm0
; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
; SSE41-NEXT: pmaxud %xmm0, %xmm1
; SSE41-NEXT: movd %xmm1, %eax
@@ -1176,16 +1176,16 @@ define i32 @test_v32i32(<32 x i32> %a0) {
; AVX1-LABEL: test_v32i32:
; AVX1: # %bb.0:
; AVX1-NEXT: vpmaxud %xmm3, %xmm1, %xmm4
-; AVX1-NEXT: vpmaxud %xmm2, %xmm0, %xmm5
-; AVX1-NEXT: vpmaxud %xmm4, %xmm5, %xmm4
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm3
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm1
; AVX1-NEXT: vpmaxud %xmm3, %xmm1, %xmm1
-; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm2
-; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0
-; AVX1-NEXT: vpmaxud %xmm2, %xmm0, %xmm0
+; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3
+; AVX1-NEXT: vpmaxud %xmm1, %xmm3, %xmm1
+; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
+; AVX1-NEXT: vpmaxud %xmm1, %xmm3, %xmm1
+; AVX1-NEXT: vpmaxud %xmm4, %xmm2, %xmm2
+; AVX1-NEXT: vpmaxud %xmm1, %xmm2, %xmm1
; AVX1-NEXT: vpmaxud %xmm1, %xmm0, %xmm0
-; AVX1-NEXT: vpmaxud %xmm0, %xmm4, %xmm0
; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
; AVX1-NEXT: vpmaxud %xmm1, %xmm0, %xmm0
; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
@@ -1197,7 +1197,7 @@ define i32 @test_v32i32(<32 x i32> %a0) {
; AVX2-LABEL: test_v32i32:
; AVX2: # %bb.0:
; AVX2-NEXT: vpmaxud %ymm3, %ymm1, %ymm1
-; AVX2-NEXT: vpmaxud %ymm2, %ymm0, %ymm0
+; AVX2-NEXT: vpmaxud %ymm1, %ymm2, %ymm1
; AVX2-NEXT: vpmaxud %ymm1, %ymm0, %ymm0
; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
; AVX2-NEXT: vpmaxud %xmm1, %xmm0, %xmm0
@@ -1556,9 +1556,9 @@ define i16 @test_v32i16(<32 x i16> %a0) {
; SSE2-NEXT: pxor %xmm4, %xmm1
; SSE2-NEXT: pmaxsw %xmm3, %xmm1
; SSE2-NEXT: pxor %xmm4, %xmm2
+; SSE2-NEXT: pmaxsw %xmm1, %xmm2
; SSE2-NEXT: pxor %xmm4, %xmm0
; SSE2-NEXT: pmaxsw %xmm2, %xmm0
-; SSE2-NEXT: pmaxsw %xmm1, %xmm0
; SSE2-NEXT: movdqa %xmm0, %xmm1
; SSE2-NEXT: pxor %xmm4, %xmm1
; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
@@ -1582,11 +1582,11 @@ define i16 @test_v32i16(<32 x i16> %a0) {
; SSE41-LABEL: test_v32i16:
; SSE41: # %bb.0:
; SSE41-NEXT: pmaxuw %xmm3, %xmm1
-; SSE41-NEXT: pmaxuw %xmm2, %xmm0
-; SSE41-NEXT: pmaxuw %xmm1, %xmm0
-; SSE41-NEXT: pcmpeqd %xmm1, %xmm1
-; SSE41-NEXT: pxor %xmm0, %xmm1
-; SSE41-NEXT: phminposuw %xmm1, %xmm0
+; SSE41-NEXT: pmaxuw %xmm2, %xmm1
+; SSE41-NEXT: pmaxuw %xmm0, %xmm1
+; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
+; SSE41-NEXT: pxor %xmm1, %xmm0
+; SSE41-NEXT: phminposuw %xmm0, %xmm0
; SSE41-NEXT: movd %xmm0, %eax
; SSE41-NEXT: notl %eax
; SSE41-NEXT: # kill: def $ax killed $ax killed $eax
@@ -1597,8 +1597,8 @@ define i16 @test_v32i16(<32 x i16> %a0) {
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
; AVX1-NEXT: vpmaxuw %xmm2, %xmm3, %xmm2
+; AVX1-NEXT: vpmaxuw %xmm2, %xmm1, %xmm1
; AVX1-NEXT: vpmaxuw %xmm1, %xmm0, %xmm0
-; AVX1-NEXT: vpmaxuw %xmm2, %xmm0, %xmm0
; AVX1-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
; AVX1-NEXT: vpxor %xmm1, %xmm0, %xmm0
; AVX1-NEXT: vphminposuw %xmm0, %xmm0
@@ -1661,16 +1661,16 @@ define i16 @test_v64i16(<64 x i16> %a0) {
; SSE2-NEXT: pxor %xmm8, %xmm2
; SSE2-NEXT: pmaxsw %xmm6, %xmm2
; SSE2-NEXT: pxor %xmm8, %xmm4
+; SSE2-NEXT: pmaxsw %xmm2, %xmm4
; SSE2-NEXT: pxor %xmm8, %xmm0
-; SSE2-NEXT: pmaxsw %xmm4, %xmm0
-; SSE2-NEXT: pmaxsw %xmm2, %xmm0
; SSE2-NEXT: pxor %xmm8, %xmm7
; SSE2-NEXT: pxor %xmm8, %xmm3
; SSE2-NEXT: pmaxsw %xmm7, %xmm3
; SSE2-NEXT: pxor %xmm8, %xmm5
+; SSE2-NEXT: pmaxsw %xmm3, %xmm5
; SSE2-NEXT: pxor %xmm8, %xmm1
; SSE2-NEXT: pmaxsw %xmm5, %xmm1
-; SSE2-NEXT: pmaxsw %xmm3, %xmm1
+; SSE2-NEXT: pmaxsw %xmm4, %xmm1
; SSE2-NEXT: pmaxsw %xmm0, %xmm1
; SSE2-NEXT: movdqa %xmm1, %xmm0
; SSE2-NEXT: pxor %xmm8, %xmm0
@@ -1695,15 +1695,15 @@ define i16 @test_v64i16(<64 x i16> %a0) {
; SSE41-LABEL: test_v64i16:
; SSE41: # %bb.0:
; SSE41-NEXT: pmaxuw %xmm7, %xmm3
-; SSE41-NEXT: pmaxuw %xmm5, %xmm1
-; SSE41-NEXT: pmaxuw %xmm3, %xmm1
+; SSE41-NEXT: pmaxuw %xmm5, %xmm3
+; SSE41-NEXT: pmaxuw %xmm1, %xmm3
; SSE41-NEXT: pmaxuw %xmm6, %xmm2
-; SSE41-NEXT: pmaxuw %xmm4, %xmm0
-; SSE41-NEXT: pmaxuw %xmm2, %xmm0
-; SSE41-NEXT: pmaxuw %xmm1, %xmm0
-; SSE41-NEXT: pcmpeqd %xmm1, %xmm1
-; SSE41-NEXT: pxor %xmm0, %xmm1
-; SSE41-NEXT: phminposuw %xmm1, %xmm0
+; SSE41-NEXT: pmaxuw %xmm4, %xmm2
+; SSE41-NEXT: pmaxuw %xmm3, %xmm2
+; SSE41-NEXT: pmaxuw %xmm0, %xmm2
+; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
+; SSE41-NEXT: pxor %xmm2, %xmm0
+; SSE41-NEXT: phminposuw %xmm0, %xmm0
; SSE41-NEXT: movd %xmm0, %eax
; SSE41-NEXT: notl %eax
; SSE41-NEXT: # kill: def $ax killed $ax killed $eax
@@ -1715,13 +1715,13 @@ define i16 @test_v64i16(<64 x i16> %a0) {
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
; AVX1-NEXT: vpmaxuw %xmm4, %xmm5, %xmm4
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm5
-; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
-; AVX1-NEXT: vpmaxuw %xmm5, %xmm6, %xmm5
+; AVX1-NEXT: vpmaxuw %xmm4, %xmm5, %xmm4
+; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
; AVX1-NEXT: vpmaxuw %xmm4, %xmm5, %xmm4
; AVX1-NEXT: vpmaxuw %xmm3, %xmm1, %xmm1
-; AVX1-NEXT: vpmaxuw %xmm2, %xmm0, %xmm0
+; AVX1-NEXT: vpmaxuw %xmm1, %xmm2, %xmm1
+; AVX1-NEXT: vpmaxuw %xmm4, %xmm1, %xmm1
; AVX1-NEXT: vpmaxuw %xmm1, %xmm0, %xmm0
-; AVX1-NEXT: vpmaxuw %xmm4, %xmm0, %xmm0
; AVX1-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
; AVX1-NEXT: vpxor %xmm1, %xmm0, %xmm0
; AVX1-NEXT: vphminposuw %xmm0, %xmm0
@@ -1734,7 +1734,7 @@ define i16 @test_v64i16(<64 x i16> %a0) {
; AVX2-LABEL: test_v64i16:
; AVX2: # %bb.0:
; AVX2-NEXT: vpmaxuw %ymm3, %ymm1, %ymm1
-; AVX2-NEXT: vpmaxuw %ymm2, %ymm0, %ymm0
+; AVX2-NEXT: vpmaxuw %ymm1, %ymm2, %ymm1
; AVX2-NEXT: vpmaxuw %ymm1, %ymm0, %ymm0
; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
; AVX2-NEXT: vpmaxuw %xmm1, %xmm0, %xmm0
@@ -2217,33 +2217,33 @@ define i8 @test_v64i8(<64 x i8> %a0) {
; SSE2-LABEL: test_v64i8:
; SSE2: # %bb.0:
; SSE2-NEXT: pmaxub %xmm3, %xmm1
-; SSE2-NEXT: pmaxub %xmm2, %xmm0
-; SSE2-NEXT: pmaxub %xmm1, %xmm0
-; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
+; SSE2-NEXT: pmaxub %xmm2, %xmm1
; SSE2-NEXT: pmaxub %xmm0, %xmm1
-; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,3]
+; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,0,1]
; SSE2-NEXT: pmaxub %xmm1, %xmm0
-; SSE2-NEXT: movdqa %xmm0, %xmm1
-; SSE2-NEXT: psrld $16, %xmm1
+; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
; SSE2-NEXT: pmaxub %xmm0, %xmm1
; SSE2-NEXT: movdqa %xmm1, %xmm0
-; SSE2-NEXT: psrlw $8, %xmm0
+; SSE2-NEXT: psrld $16, %xmm0
; SSE2-NEXT: pmaxub %xmm1, %xmm0
-; SSE2-NEXT: movd %xmm0, %eax
+; SSE2-NEXT: movdqa %xmm0, %xmm1
+; SSE2-NEXT: psrlw $8, %xmm1
+; SSE2-NEXT: pmaxub %xmm0, %xmm1
+; SSE2-NEXT: movd %xmm1, %eax
; SSE2-NEXT: # kill: def $al killed $al killed $eax
; SSE2-NEXT: retq
;
; SSE41-LABEL: test_v64i8:
; SSE41: # %bb.0:
; SSE41-NEXT: pmaxub %xmm3, %xmm1
-; SSE41-NEXT: pmaxub %xmm2, %xmm0
-; SSE41-NEXT: pmaxub %xmm1, %xmm0
-; SSE41-NEXT: pcmpeqd %xmm1, %xmm1
-; SSE41-NEXT: pxor %xmm0, %xmm1
-; SSE41-NEXT: movdqa %xmm1, %xmm0
-; SSE41-NEXT: psrlw $8, %xmm0
-; SSE41-NEXT: pminub %xmm1, %xmm0
-; SSE41-NEXT: phminposuw %xmm0, %xmm0
+; SSE41-NEXT: pmaxub %xmm2, %xmm1
+; SSE41-NEXT: pmaxub %xmm0, %xmm1
+; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
+; SSE41-NEXT: pxor %xmm1, %xmm0
+; SSE41-NEXT: movdqa %xmm0, %xmm1
+; SSE41-NEXT: psrlw $8, %xmm1
+; SSE41-NEXT: pminub %xmm0, %xmm1
+; SSE41-NEXT: phminposuw %xmm1, %xmm0
; SSE41-NEXT: pextrb $0, %xmm0, %eax
; SSE41-NEXT: notb %al
; SSE41-NEXT: # kill: def $al killed $al killed $eax
@@ -2254,8 +2254,8 @@ define i8 @test_v64i8(<64 x i8> %a0) {
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm2
; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
; AVX1-NEXT: vpmaxub %xmm2, %xmm3, %xmm2
+; AVX1-NEXT: vpmaxub %xmm2, %xmm1, %xmm1
; AVX1-NEXT: vpmaxub %xmm1, %xmm0, %xmm0
-; AVX1-NEXT: vpmaxub %xmm2, %xmm0, %xmm0
; AVX1-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
; AVX1-NEXT: vpxor %xmm1, %xmm0, %xmm0
; AVX1-NEXT: vpsrlw $8, %xmm0, %xmm1
@@ -2322,14 +2322,14 @@ define i8 @test_v128i8(<128 x i8> %a0) {
; SSE2-LABEL: test_v128i8:
; SSE2: # %bb.0:
; SSE2-NEXT: pmaxub %xmm6, %xmm2
-; SSE2-NEXT: pmaxub %xmm4, %xmm0
-; SSE2-NEXT: pmaxub %xmm2, %xmm0
; SSE2-NEXT: pmaxub %xmm7, %xmm3
-; SSE2-NEXT: pmaxub %xmm5, %xmm1
-; SSE2-NEXT: pmaxub %xmm3, %xmm1
-; SSE2-NEXT: pmaxub %xmm0, %xmm1
-; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,0,1]
-; SSE2-NEXT: pmaxub %xmm1, %xmm0
+; SSE2-NEXT: pmaxub %xmm5, %xmm3
+; SSE2-NEXT: pmaxub %xmm1, %xmm3
+; SSE2-NEXT: pmaxub %xmm4, %xmm2
+; SSE2-NEXT: pmaxub %xmm3, %xmm2
+; SSE2-NEXT: pmaxub %xmm0, %xmm2
+; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm2[2,3,0,1]
+; SSE2-NEXT: pmaxub %xmm2, %xmm0
; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
; SSE2-NEXT: pmaxub %xmm0, %xmm1
; SSE2-NEXT: movdqa %xmm1, %xmm0
@@ -2345,18 +2345,18 @@ define i8 @test_v128i8(<128 x i8> %a0) {
; SSE41-LABEL: test_v128i8:
; SSE41: # %bb.0:
; SSE41-NEXT: pmaxub %xmm7, %xmm3
-; SSE41-NEXT: pmaxub %xmm5, %xmm1
-; SSE41-NEXT: pmaxub %xmm3, %xmm1
+; SSE41-NEXT: pmaxub %xmm5, %xmm3
+; SSE41-NEXT: pmaxub %xmm1, %xmm3
; SSE41-NEXT: pmaxub %xmm6, %xmm2
-; SSE41-NEXT: pmaxub %xmm4, %xmm0
-; SSE41-NEXT: pmaxub %xmm2, %xmm0
-; SSE41-NEXT: pmaxub %xmm1, %xmm0
-; SSE41-NEXT: pcmpeqd %xmm1, %xmm1
-; SSE41-NEXT: pxor %xmm0, %xmm1
-; SSE41-NEXT: movdqa %xmm1, %xmm0
-; SSE41-NEXT: psrlw $8, %xmm0
-; SSE41-NEXT: pminub %xmm1, %xmm0
-; SSE41-NEXT: phminposuw %xmm0, %xmm0
+; SSE41-NEXT: pmaxub %xmm4, %xmm2
+; SSE41-NEXT: pmaxub %xmm3, %xmm2
+; SSE41-NEXT: pmaxub %xmm0, %xmm2
+; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
+; SSE41-NEXT: pxor %xmm2, %xmm0
+; SSE41-NEXT: movdqa %xmm0, %xmm1
+; SSE41-NEXT: psrlw $8, %xmm1
+; SSE41-NEXT: pminub %xmm0, %xmm1
+; SSE41-NEXT: phminposuw %xmm1, %xmm0
; SSE41-NEXT: pextrb $0, %xmm0, %eax
; SSE41-NEXT: notb %al
; SSE41-NEXT: # kill: def $al killed $al killed $eax
@@ -2368,13 +2368,13 @@ define i8 @test_v128i8(<128 x i8> %a0) {
; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
; AVX1-NEXT: vpmaxub %xmm4, %xmm5, %xmm4
; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm5
-; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
-; AVX1-NEXT: vpmaxub %xmm5, %xmm6, %xmm5
+; AVX1-NEXT: vpmaxub %xmm4, %xmm5, %xmm4
+; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm5
; AVX1-NEXT: vpmaxub %xmm4, %xmm5, %xmm4
; AVX1-NEXT: vpmaxub %xmm3, %xmm1, %xmm1
-; AVX1-NEXT: vpmaxub %xmm2, %xmm0, %xmm0
+; AVX1-NEXT: vpmaxub %xmm1, %xmm2, %xmm1
+; AVX1-NEXT: vpmaxub %xmm4, %xmm1, %xmm1
; AVX1-NEXT: vpmaxub %xmm1, %xmm0, %xmm0
-; AVX1-NEXT: vpmaxub %xmm4, %xmm0, %xmm0
; AVX1-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
; AVX1-NEXT: vpxor %xmm1, %xmm0, %xmm0
; AVX1-NEXT: vpsrlw $8, %xmm0, %xmm1
@@ -2389,7 +2389,7 @@ define i8 @test_v128i8(<128 x i8> %a0) {
; AVX2-LABEL: test_v128i8:
; AVX2: # %bb.0:
; AVX2-NEXT: vpmaxub %ymm3, %ymm1, %ymm1
-; AVX2-NEXT: vpmaxub %ymm2, %ymm0, %ymm0
+; AVX2-NEXT: vpmaxub %ymm1, %ymm2, %ymm1
; AVX2-NEXT: vpmaxub %ymm1, %ymm0, %ymm0
; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
; AVX2-NEXT: vpmaxub %xmm1, %xmm0, %xmm0
OpenPOWER on IntegriCloud