|
|
|
|
@@ -9,15 +9,15 @@ define <4 x i32> @reassociate_and_v4i32(<4 x i32> %x0, <4 x i32> %x1, <4 x i32>
|
|
|
|
|
; SSE-LABEL: reassociate_and_v4i32:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddd %xmm1, %xmm0
|
|
|
|
|
; SSE-NEXT: pand %xmm3, %xmm2
|
|
|
|
|
; SSE-NEXT: pand %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: pand %xmm3, %xmm0
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX2-LABEL: reassociate_and_v4i32:
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX2-NEXT: vpand %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX2-NEXT: vpand %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX2-NEXT: vpand %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX2-NEXT: vpand %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_and_v4i32:
|
|
|
|
|
@@ -36,15 +36,15 @@ define <4 x i32> @reassociate_or_v4i32(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %
|
|
|
|
|
; SSE-LABEL: reassociate_or_v4i32:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddd %xmm1, %xmm0
|
|
|
|
|
; SSE-NEXT: por %xmm3, %xmm2
|
|
|
|
|
; SSE-NEXT: por %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: por %xmm3, %xmm0
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX2-LABEL: reassociate_or_v4i32:
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX2-NEXT: vpor %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX2-NEXT: vpor %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX2-NEXT: vpor %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX2-NEXT: vpor %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_or_v4i32:
|
|
|
|
|
@@ -63,15 +63,15 @@ define <4 x i32> @reassociate_xor_v4i32(<4 x i32> %x0, <4 x i32> %x1, <4 x i32>
|
|
|
|
|
; SSE-LABEL: reassociate_xor_v4i32:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddd %xmm1, %xmm0
|
|
|
|
|
; SSE-NEXT: pxor %xmm3, %xmm2
|
|
|
|
|
; SSE-NEXT: pxor %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: pxor %xmm3, %xmm0
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX2-LABEL: reassociate_xor_v4i32:
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX2-NEXT: vpxor %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX2-NEXT: vpxor %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX2-NEXT: vpxor %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX2-NEXT: vpxor %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_xor_v4i32:
|
|
|
|
|
@@ -92,18 +92,18 @@ define <8 x i32> @reassociate_and_v8i32(<8 x i32> %x0, <8 x i32> %x1, <8 x i32>
|
|
|
|
|
; SSE-LABEL: reassociate_and_v8i32:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddd %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: pand %xmm6, %xmm4
|
|
|
|
|
; SSE-NEXT: pand %xmm4, %xmm0
|
|
|
|
|
; SSE-NEXT: pand %xmm6, %xmm0
|
|
|
|
|
; SSE-NEXT: paddd %xmm3, %xmm1
|
|
|
|
|
; SSE-NEXT: pand %xmm7, %xmm5
|
|
|
|
|
; SSE-NEXT: pand %xmm5, %xmm1
|
|
|
|
|
; SSE-NEXT: pand %xmm7, %xmm1
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX2-LABEL: reassociate_and_v8i32:
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpand %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpand %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpand %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpand %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_and_v8i32:
|
|
|
|
|
@@ -122,18 +122,18 @@ define <8 x i32> @reassociate_or_v8i32(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %
|
|
|
|
|
; SSE-LABEL: reassociate_or_v8i32:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddd %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: por %xmm6, %xmm4
|
|
|
|
|
; SSE-NEXT: por %xmm4, %xmm0
|
|
|
|
|
; SSE-NEXT: por %xmm6, %xmm0
|
|
|
|
|
; SSE-NEXT: paddd %xmm3, %xmm1
|
|
|
|
|
; SSE-NEXT: por %xmm7, %xmm5
|
|
|
|
|
; SSE-NEXT: por %xmm5, %xmm1
|
|
|
|
|
; SSE-NEXT: por %xmm7, %xmm1
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX2-LABEL: reassociate_or_v8i32:
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpor %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpor %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpor %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_or_v8i32:
|
|
|
|
|
@@ -152,18 +152,18 @@ define <8 x i32> @reassociate_xor_v8i32(<8 x i32> %x0, <8 x i32> %x1, <8 x i32>
|
|
|
|
|
; SSE-LABEL: reassociate_xor_v8i32:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddd %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: pxor %xmm6, %xmm4
|
|
|
|
|
; SSE-NEXT: pxor %xmm4, %xmm0
|
|
|
|
|
; SSE-NEXT: pxor %xmm6, %xmm0
|
|
|
|
|
; SSE-NEXT: paddd %xmm3, %xmm1
|
|
|
|
|
; SSE-NEXT: pxor %xmm7, %xmm5
|
|
|
|
|
; SSE-NEXT: pxor %xmm5, %xmm1
|
|
|
|
|
; SSE-NEXT: pxor %xmm7, %xmm1
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX2-LABEL: reassociate_xor_v8i32:
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpxor %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpxor %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpxor %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_xor_v8i32:
|
|
|
|
|
@@ -201,11 +201,11 @@ define <16 x i32> @reassociate_and_v16i32(<16 x i32> %x0, <16 x i32> %x1, <16 x
|
|
|
|
|
; AVX2-LABEL: reassociate_and_v16i32:
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpand %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpand %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpand %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpand %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpand %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpand %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpand %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpand %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_and_v16i32:
|
|
|
|
|
@@ -240,11 +240,11 @@ define <16 x i32> @reassociate_or_v16i32(<16 x i32> %x0, <16 x i32> %x1, <16 x i
|
|
|
|
|
; AVX2-LABEL: reassociate_or_v16i32:
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpor %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpor %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpor %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpor %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpor %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpor %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpor %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpor %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_or_v16i32:
|
|
|
|
|
@@ -279,11 +279,11 @@ define <16 x i32> @reassociate_xor_v16i32(<16 x i32> %x0, <16 x i32> %x1, <16 x
|
|
|
|
|
; AVX2-LABEL: reassociate_xor_v16i32:
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpxor %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpxor %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpxor %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpxor %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpxor %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpxor %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpxor %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_xor_v16i32:
|
|
|
|
|
@@ -304,15 +304,15 @@ define <16 x i8> @reassociate_umax_v16i8(<16 x i8> %x0, <16 x i8> %x1, <16 x i8>
|
|
|
|
|
; SSE-LABEL: reassociate_umax_v16i8:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddb %xmm1, %xmm0
|
|
|
|
|
; SSE-NEXT: pmaxub %xmm3, %xmm2
|
|
|
|
|
; SSE-NEXT: pmaxub %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: pmaxub %xmm3, %xmm0
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX-LABEL: reassociate_umax_v16i8:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddb %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxub %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxub %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxub %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX-NEXT: vpmaxub %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <16 x i8> %x0, %x1
|
|
|
|
|
@@ -336,8 +336,8 @@ define <8 x i16> @reassociate_umax_v8i16(<8 x i16> %x0, <8 x i16> %x1, <8 x i16>
|
|
|
|
|
; AVX-LABEL: reassociate_umax_v8i16:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddw %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxuw %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxuw %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxuw %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX-NEXT: vpmaxuw %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <8 x i16> %x0, %x1
|
|
|
|
|
@@ -374,8 +374,8 @@ define <4 x i32> @reassociate_umax_v4i32(<4 x i32> %x0, <4 x i32> %x1, <4 x i32>
|
|
|
|
|
; AVX-LABEL: reassociate_umax_v4i32:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddd %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxud %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxud %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxud %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX-NEXT: vpmaxud %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <4 x i32> %x0, %x1
|
|
|
|
|
@@ -439,8 +439,8 @@ define <2 x i64> @reassociate_umax_v2i64(<2 x i64> %x0, <2 x i64> %x1, <2 x i64>
|
|
|
|
|
; AVX512-LABEL: reassociate_umax_v2i64:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddq %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxuq %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxuq %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxuq %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX512-NEXT: vpmaxuq %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <2 x i64> %x0, %x1
|
|
|
|
|
@@ -470,8 +470,8 @@ define <16 x i8> @reassociate_smax_v16i8(<16 x i8> %x0, <16 x i8> %x1, <16 x i8>
|
|
|
|
|
; AVX-LABEL: reassociate_smax_v16i8:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddb %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxsb %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxsb %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxsb %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX-NEXT: vpmaxsb %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <16 x i8> %x0, %x1
|
|
|
|
|
@@ -486,15 +486,15 @@ define <8 x i16> @reassociate_smax_v8i16(<8 x i16> %x0, <8 x i16> %x1, <8 x i16>
|
|
|
|
|
; SSE-LABEL: reassociate_smax_v8i16:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddw %xmm1, %xmm0
|
|
|
|
|
; SSE-NEXT: pmaxsw %xmm3, %xmm2
|
|
|
|
|
; SSE-NEXT: pmaxsw %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: pmaxsw %xmm3, %xmm0
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX-LABEL: reassociate_smax_v8i16:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddw %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxsw %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxsw %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxsw %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX-NEXT: vpmaxsw %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <8 x i16> %x0, %x1
|
|
|
|
|
@@ -524,8 +524,8 @@ define <4 x i32> @reassociate_smax_v4i32(<4 x i32> %x0, <4 x i32> %x1, <4 x i32>
|
|
|
|
|
; AVX-LABEL: reassociate_smax_v4i32:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddd %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxsd %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxsd %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX-NEXT: vpmaxsd %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX-NEXT: vpmaxsd %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <4 x i32> %x0, %x1
|
|
|
|
|
@@ -584,8 +584,8 @@ define <2 x i64> @reassociate_smax_v2i64(<2 x i64> %x0, <2 x i64> %x1, <2 x i64>
|
|
|
|
|
; AVX512-LABEL: reassociate_smax_v2i64:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddq %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsq %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsq %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsq %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX512-NEXT: vpmaxsq %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <2 x i64> %x0, %x1
|
|
|
|
|
@@ -600,15 +600,15 @@ define <16 x i8> @reassociate_umin_v16i8(<16 x i8> %x0, <16 x i8> %x1, <16 x i8>
|
|
|
|
|
; SSE-LABEL: reassociate_umin_v16i8:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddb %xmm1, %xmm0
|
|
|
|
|
; SSE-NEXT: pminub %xmm3, %xmm2
|
|
|
|
|
; SSE-NEXT: pminub %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: pminub %xmm3, %xmm0
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX-LABEL: reassociate_umin_v16i8:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddb %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminub %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminub %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminub %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX-NEXT: vpminub %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <16 x i8> %x0, %x1
|
|
|
|
|
@@ -635,8 +635,8 @@ define <8 x i16> @reassociate_umin_v8i16(<8 x i16> %x0, <8 x i16> %x1, <8 x i16>
|
|
|
|
|
; AVX-LABEL: reassociate_umin_v8i16:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddw %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminuw %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminuw %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminuw %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX-NEXT: vpminuw %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <8 x i16> %x0, %x1
|
|
|
|
|
@@ -672,8 +672,8 @@ define <4 x i32> @reassociate_umin_v4i32(<4 x i32> %x0, <4 x i32> %x1, <4 x i32>
|
|
|
|
|
; AVX-LABEL: reassociate_umin_v4i32:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddd %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminud %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminud %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminud %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX-NEXT: vpminud %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <4 x i32> %x0, %x1
|
|
|
|
|
@@ -737,8 +737,8 @@ define <2 x i64> @reassociate_umin_v2i64(<2 x i64> %x0, <2 x i64> %x1, <2 x i64>
|
|
|
|
|
; AVX512-LABEL: reassociate_umin_v2i64:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddq %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX512-NEXT: vpminuq %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX512-NEXT: vpminuq %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX512-NEXT: vpminuq %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX512-NEXT: vpminuq %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <2 x i64> %x0, %x1
|
|
|
|
|
@@ -768,8 +768,8 @@ define <16 x i8> @reassociate_smin_v16i8(<16 x i8> %x0, <16 x i8> %x1, <16 x i8>
|
|
|
|
|
; AVX-LABEL: reassociate_smin_v16i8:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddb %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminsb %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminsb %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminsb %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX-NEXT: vpminsb %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <16 x i8> %x0, %x1
|
|
|
|
|
@@ -784,15 +784,15 @@ define <8 x i16> @reassociate_smin_v8i16(<8 x i16> %x0, <8 x i16> %x1, <8 x i16>
|
|
|
|
|
; SSE-LABEL: reassociate_smin_v8i16:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddw %xmm1, %xmm0
|
|
|
|
|
; SSE-NEXT: pminsw %xmm3, %xmm2
|
|
|
|
|
; SSE-NEXT: pminsw %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: pminsw %xmm3, %xmm0
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX-LABEL: reassociate_smin_v8i16:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddw %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminsw %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminsw %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminsw %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX-NEXT: vpminsw %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <8 x i16> %x0, %x1
|
|
|
|
|
@@ -822,8 +822,8 @@ define <4 x i32> @reassociate_smin_v4i32(<4 x i32> %x0, <4 x i32> %x1, <4 x i32>
|
|
|
|
|
; AVX-LABEL: reassociate_smin_v4i32:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddd %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminsd %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminsd %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX-NEXT: vpminsd %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX-NEXT: vpminsd %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <4 x i32> %x0, %x1
|
|
|
|
|
@@ -882,8 +882,8 @@ define <2 x i64> @reassociate_smin_v2i64(<2 x i64> %x0, <2 x i64> %x1, <2 x i64>
|
|
|
|
|
; AVX512-LABEL: reassociate_smin_v2i64:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddq %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX512-NEXT: vpminsq %xmm0, %xmm2, %xmm0
|
|
|
|
|
; AVX512-NEXT: vpminsq %xmm0, %xmm3, %xmm0
|
|
|
|
|
; AVX512-NEXT: vpminsq %xmm3, %xmm2, %xmm1
|
|
|
|
|
; AVX512-NEXT: vpminsq %xmm1, %xmm0, %xmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <2 x i64> %x0, %x1
|
|
|
|
|
@@ -901,17 +901,17 @@ define <32 x i8> @reassociate_umax_v32i8(<32 x i8> %x0, <32 x i8> %x1, <32 x i8>
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddb %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: paddb %xmm3, %xmm1
|
|
|
|
|
; SSE-NEXT: pmaxub %xmm5, %xmm1
|
|
|
|
|
; SSE-NEXT: pmaxub %xmm6, %xmm4
|
|
|
|
|
; SSE-NEXT: pmaxub %xmm4, %xmm0
|
|
|
|
|
; SSE-NEXT: pmaxub %xmm6, %xmm0
|
|
|
|
|
; SSE-NEXT: pmaxub %xmm7, %xmm1
|
|
|
|
|
; SSE-NEXT: pmaxub %xmm7, %xmm5
|
|
|
|
|
; SSE-NEXT: pmaxub %xmm5, %xmm1
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX-LABEL: reassociate_umax_v32i8:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddb %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxub %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxub %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxub %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX-NEXT: vpmaxub %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <32 x i8> %x0, %x1
|
|
|
|
|
@@ -940,8 +940,8 @@ define <16 x i16> @reassociate_umax_v16i16(<16 x i16> %x0, <16 x i16> %x1, <16 x
|
|
|
|
|
; AVX-LABEL: reassociate_umax_v16i16:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddw %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxuw %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxuw %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxuw %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX-NEXT: vpmaxuw %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <16 x i16> %x0, %x1
|
|
|
|
|
@@ -995,8 +995,8 @@ define <8 x i32> @reassociate_umax_v8i32(<8 x i32> %x0, <8 x i32> %x1, <8 x i32>
|
|
|
|
|
; AVX-LABEL: reassociate_umax_v8i32:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddd %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxud %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxud %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxud %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX-NEXT: vpmaxud %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <8 x i32> %x0, %x1
|
|
|
|
|
@@ -1091,8 +1091,8 @@ define <4 x i64> @reassociate_umax_v4i64(<4 x i64> %x0, <4 x i64> %x1, <4 x i64>
|
|
|
|
|
; AVX512-LABEL: reassociate_umax_v4i64:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddq %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX512-NEXT: vpmaxuq %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX512-NEXT: vpmaxuq %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX512-NEXT: vpmaxuq %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX512-NEXT: vpmaxuq %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <4 x i64> %x0, %x1
|
|
|
|
|
@@ -1133,8 +1133,8 @@ define <32 x i8> @reassociate_smax_v32i8(<32 x i8> %x0, <32 x i8> %x1, <32 x i8>
|
|
|
|
|
; AVX-LABEL: reassociate_smax_v32i8:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddb %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxsb %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxsb %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxsb %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX-NEXT: vpmaxsb %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <32 x i8> %x0, %x1
|
|
|
|
|
@@ -1150,17 +1150,17 @@ define <16 x i16> @reassociate_smax_v16i16(<16 x i16> %x0, <16 x i16> %x1, <16 x
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddw %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: paddw %xmm3, %xmm1
|
|
|
|
|
; SSE-NEXT: pmaxsw %xmm5, %xmm1
|
|
|
|
|
; SSE-NEXT: pmaxsw %xmm6, %xmm4
|
|
|
|
|
; SSE-NEXT: pmaxsw %xmm4, %xmm0
|
|
|
|
|
; SSE-NEXT: pmaxsw %xmm6, %xmm0
|
|
|
|
|
; SSE-NEXT: pmaxsw %xmm7, %xmm1
|
|
|
|
|
; SSE-NEXT: pmaxsw %xmm7, %xmm5
|
|
|
|
|
; SSE-NEXT: pmaxsw %xmm5, %xmm1
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX-LABEL: reassociate_smax_v16i16:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddw %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxsw %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxsw %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxsw %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX-NEXT: vpmaxsw %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <16 x i16> %x0, %x1
|
|
|
|
|
@@ -1201,8 +1201,8 @@ define <8 x i32> @reassociate_smax_v8i32(<8 x i32> %x0, <8 x i32> %x1, <8 x i32>
|
|
|
|
|
; AVX-LABEL: reassociate_smax_v8i32:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddd %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxsd %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxsd %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX-NEXT: vpmaxsd %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX-NEXT: vpmaxsd %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <8 x i32> %x0, %x1
|
|
|
|
|
@@ -1292,8 +1292,8 @@ define <4 x i64> @reassociate_smax_v4i64(<4 x i64> %x0, <4 x i64> %x1, <4 x i64>
|
|
|
|
|
; AVX512-LABEL: reassociate_smax_v4i64:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddq %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsq %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsq %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsq %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX512-NEXT: vpmaxsq %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <4 x i64> %x0, %x1
|
|
|
|
|
@@ -1309,17 +1309,17 @@ define <32 x i8> @reassociate_umin_v32i8(<32 x i8> %x0, <32 x i8> %x1, <32 x i8>
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddb %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: paddb %xmm3, %xmm1
|
|
|
|
|
; SSE-NEXT: pminub %xmm5, %xmm1
|
|
|
|
|
; SSE-NEXT: pminub %xmm6, %xmm4
|
|
|
|
|
; SSE-NEXT: pminub %xmm4, %xmm0
|
|
|
|
|
; SSE-NEXT: pminub %xmm6, %xmm0
|
|
|
|
|
; SSE-NEXT: pminub %xmm7, %xmm1
|
|
|
|
|
; SSE-NEXT: pminub %xmm7, %xmm5
|
|
|
|
|
; SSE-NEXT: pminub %xmm5, %xmm1
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX-LABEL: reassociate_umin_v32i8:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddb %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminub %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminub %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminub %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX-NEXT: vpminub %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <32 x i8> %x0, %x1
|
|
|
|
|
@@ -1354,8 +1354,8 @@ define <16 x i16> @reassociate_umin_v16i16(<16 x i16> %x0, <16 x i16> %x1, <16 x
|
|
|
|
|
; AVX-LABEL: reassociate_umin_v16i16:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddw %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminuw %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminuw %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminuw %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX-NEXT: vpminuw %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <16 x i16> %x0, %x1
|
|
|
|
|
@@ -1408,8 +1408,8 @@ define <8 x i32> @reassociate_umin_v8i32(<8 x i32> %x0, <8 x i32> %x1, <8 x i32>
|
|
|
|
|
; AVX-LABEL: reassociate_umin_v8i32:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddd %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminud %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminud %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminud %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX-NEXT: vpminud %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <8 x i32> %x0, %x1
|
|
|
|
|
@@ -1504,8 +1504,8 @@ define <4 x i64> @reassociate_umin_v4i64(<4 x i64> %x0, <4 x i64> %x1, <4 x i64>
|
|
|
|
|
; AVX512-LABEL: reassociate_umin_v4i64:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddq %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX512-NEXT: vpminuq %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX512-NEXT: vpminuq %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX512-NEXT: vpminuq %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX512-NEXT: vpminuq %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <4 x i64> %x0, %x1
|
|
|
|
|
@@ -1546,8 +1546,8 @@ define <32 x i8> @reassociate_smin_v32i8(<32 x i8> %x0, <32 x i8> %x1, <32 x i8>
|
|
|
|
|
; AVX-LABEL: reassociate_smin_v32i8:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddb %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminsb %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminsb %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminsb %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX-NEXT: vpminsb %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <32 x i8> %x0, %x1
|
|
|
|
|
@@ -1563,17 +1563,17 @@ define <16 x i16> @reassociate_smin_v16i16(<16 x i16> %x0, <16 x i16> %x1, <16 x
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: paddw %xmm2, %xmm0
|
|
|
|
|
; SSE-NEXT: paddw %xmm3, %xmm1
|
|
|
|
|
; SSE-NEXT: pminsw %xmm5, %xmm1
|
|
|
|
|
; SSE-NEXT: pminsw %xmm6, %xmm4
|
|
|
|
|
; SSE-NEXT: pminsw %xmm4, %xmm0
|
|
|
|
|
; SSE-NEXT: pminsw %xmm6, %xmm0
|
|
|
|
|
; SSE-NEXT: pminsw %xmm7, %xmm1
|
|
|
|
|
; SSE-NEXT: pminsw %xmm7, %xmm5
|
|
|
|
|
; SSE-NEXT: pminsw %xmm5, %xmm1
|
|
|
|
|
; SSE-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX-LABEL: reassociate_smin_v16i16:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddw %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminsw %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminsw %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminsw %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX-NEXT: vpminsw %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <16 x i16> %x0, %x1
|
|
|
|
|
@@ -1614,8 +1614,8 @@ define <8 x i32> @reassociate_smin_v8i32(<8 x i32> %x0, <8 x i32> %x1, <8 x i32>
|
|
|
|
|
; AVX-LABEL: reassociate_smin_v8i32:
|
|
|
|
|
; AVX: # %bb.0:
|
|
|
|
|
; AVX-NEXT: vpaddd %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminsd %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminsd %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX-NEXT: vpminsd %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX-NEXT: vpminsd %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <8 x i32> %x0, %x1
|
|
|
|
|
@@ -1705,8 +1705,8 @@ define <4 x i64> @reassociate_smin_v4i64(<4 x i64> %x0, <4 x i64> %x1, <4 x i64>
|
|
|
|
|
; AVX512-LABEL: reassociate_smin_v4i64:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddq %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX512-NEXT: vpminsq %ymm0, %ymm2, %ymm0
|
|
|
|
|
; AVX512-NEXT: vpminsq %ymm0, %ymm3, %ymm0
|
|
|
|
|
; AVX512-NEXT: vpminsq %ymm3, %ymm2, %ymm1
|
|
|
|
|
; AVX512-NEXT: vpminsq %ymm1, %ymm0, %ymm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <4 x i64> %x0, %x1
|
|
|
|
|
@@ -1740,17 +1740,17 @@ define <64 x i8> @reassociate_umax_v64i8(<64 x i8> %x0, <64 x i8> %x1, <64 x i8>
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddb %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddb %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxub %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxub %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxub %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxub %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxub %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpmaxub %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxub %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpmaxub %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_umax_v64i8:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddb %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxub %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxub %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxub %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpmaxub %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <64 x i8> %x0, %x1
|
|
|
|
|
@@ -1798,17 +1798,17 @@ define <32 x i16> @reassociate_umax_v32i16(<32 x i16> %x0, <32 x i16> %x1, <32 x
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddw %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddw %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxuw %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxuw %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxuw %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxuw %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxuw %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpmaxuw %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxuw %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpmaxuw %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_umax_v32i16:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddw %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxuw %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxuw %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxuw %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpmaxuw %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <32 x i16> %x0, %x1
|
|
|
|
|
@@ -1907,17 +1907,17 @@ define <16 x i32> @reassociate_umax_v16i32(<16 x i32> %x0, <16 x i32> %x1, <16 x
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxud %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxud %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxud %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxud %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxud %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpmaxud %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxud %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpmaxud %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_umax_v16i32:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddd %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxud %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxud %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxud %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpmaxud %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <16 x i32> %x0, %x1
|
|
|
|
|
@@ -2091,8 +2091,8 @@ define <8 x i64> @reassociate_umax_v8i64(<8 x i64> %x0, <8 x i64> %x1, <8 x i64>
|
|
|
|
|
; AVX512-LABEL: reassociate_umax_v8i64:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddq %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxuq %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxuq %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxuq %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpmaxuq %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <8 x i64> %x0, %x1
|
|
|
|
|
@@ -2164,17 +2164,17 @@ define <64 x i8> @reassociate_smax_v64i8(<64 x i8> %x0, <64 x i8> %x1, <64 x i8>
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddb %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddb %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxsb %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxsb %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxsb %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxsb %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxsb %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpmaxsb %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxsb %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpmaxsb %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_smax_v64i8:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddb %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsb %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsb %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsb %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpmaxsb %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <64 x i8> %x0, %x1
|
|
|
|
|
@@ -2206,17 +2206,17 @@ define <32 x i16> @reassociate_smax_v32i16(<32 x i16> %x0, <32 x i16> %x1, <32 x
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddw %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddw %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxsw %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxsw %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxsw %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxsw %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxsw %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpmaxsw %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxsw %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpmaxsw %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_smax_v32i16:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddw %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsw %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsw %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsw %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpmaxsw %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <32 x i16> %x0, %x1
|
|
|
|
|
@@ -2288,17 +2288,17 @@ define <16 x i32> @reassociate_smax_v16i32(<16 x i32> %x0, <16 x i32> %x1, <16 x
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxsd %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxsd %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxsd %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxsd %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpmaxsd %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpmaxsd %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpmaxsd %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpmaxsd %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_smax_v16i32:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddd %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsd %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsd %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsd %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpmaxsd %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <16 x i32> %x0, %x1
|
|
|
|
|
@@ -2463,8 +2463,8 @@ define <8 x i64> @reassociate_smax_v8i64(<8 x i64> %x0, <8 x i64> %x1, <8 x i64>
|
|
|
|
|
; AVX512-LABEL: reassociate_smax_v8i64:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddq %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsq %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsq %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpmaxsq %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpmaxsq %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <8 x i64> %x0, %x1
|
|
|
|
|
@@ -2496,17 +2496,17 @@ define <64 x i8> @reassociate_umin_v64i8(<64 x i8> %x0, <64 x i8> %x1, <64 x i8>
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddb %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddb %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminub %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminub %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminub %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminub %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminub %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpminub %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminub %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpminub %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_umin_v64i8:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddb %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminub %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminub %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminub %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpminub %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <64 x i8> %x0, %x1
|
|
|
|
|
@@ -2566,17 +2566,17 @@ define <32 x i16> @reassociate_umin_v32i16(<32 x i16> %x0, <32 x i16> %x1, <32 x
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddw %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddw %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminuw %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminuw %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminuw %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminuw %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminuw %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpminuw %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminuw %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpminuw %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_umin_v32i16:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddw %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminuw %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminuw %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminuw %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpminuw %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <32 x i16> %x0, %x1
|
|
|
|
|
@@ -2672,17 +2672,17 @@ define <16 x i32> @reassociate_umin_v16i32(<16 x i32> %x0, <16 x i32> %x1, <16 x
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminud %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminud %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminud %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminud %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminud %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpminud %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminud %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpminud %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_umin_v16i32:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddd %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminud %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminud %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminud %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpminud %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <16 x i32> %x0, %x1
|
|
|
|
|
@@ -2856,8 +2856,8 @@ define <8 x i64> @reassociate_umin_v8i64(<8 x i64> %x0, <8 x i64> %x1, <8 x i64>
|
|
|
|
|
; AVX512-LABEL: reassociate_umin_v8i64:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddq %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminuq %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminuq %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminuq %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpminuq %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <8 x i64> %x0, %x1
|
|
|
|
|
@@ -2929,17 +2929,17 @@ define <64 x i8> @reassociate_smin_v64i8(<64 x i8> %x0, <64 x i8> %x1, <64 x i8>
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddb %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddb %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminsb %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminsb %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminsb %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminsb %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminsb %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpminsb %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminsb %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpminsb %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_smin_v64i8:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddb %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminsb %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminsb %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminsb %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpminsb %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <64 x i8> %x0, %x1
|
|
|
|
|
@@ -2971,17 +2971,17 @@ define <32 x i16> @reassociate_smin_v32i16(<32 x i16> %x0, <32 x i16> %x1, <32 x
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddw %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddw %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminsw %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminsw %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminsw %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminsw %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminsw %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpminsw %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminsw %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpminsw %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_smin_v32i16:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddw %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminsw %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminsw %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminsw %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpminsw %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <32 x i16> %x0, %x1
|
|
|
|
|
@@ -3053,17 +3053,17 @@ define <16 x i32> @reassociate_smin_v16i32(<16 x i32> %x0, <16 x i32> %x1, <16 x
|
|
|
|
|
; AVX2: # %bb.0:
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpaddd %ymm3, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminsd %ymm1, %ymm5, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminsd %ymm0, %ymm4, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminsd %ymm0, %ymm6, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminsd %ymm1, %ymm7, %ymm1
|
|
|
|
|
; AVX2-NEXT: vpminsd %ymm6, %ymm4, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpminsd %ymm2, %ymm0, %ymm0
|
|
|
|
|
; AVX2-NEXT: vpminsd %ymm7, %ymm5, %ymm2
|
|
|
|
|
; AVX2-NEXT: vpminsd %ymm2, %ymm1, %ymm1
|
|
|
|
|
; AVX2-NEXT: retq
|
|
|
|
|
;
|
|
|
|
|
; AVX512-LABEL: reassociate_smin_v16i32:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddd %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminsd %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminsd %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminsd %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpminsd %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <16 x i32> %x0, %x1
|
|
|
|
|
@@ -3228,8 +3228,8 @@ define <8 x i64> @reassociate_smin_v8i64(<8 x i64> %x0, <8 x i64> %x1, <8 x i64>
|
|
|
|
|
; AVX512-LABEL: reassociate_smin_v8i64:
|
|
|
|
|
; AVX512: # %bb.0:
|
|
|
|
|
; AVX512-NEXT: vpaddq %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminsq %zmm0, %zmm2, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminsq %zmm0, %zmm3, %zmm0
|
|
|
|
|
; AVX512-NEXT: vpminsq %zmm3, %zmm2, %zmm1
|
|
|
|
|
; AVX512-NEXT: vpminsq %zmm1, %zmm0, %zmm0
|
|
|
|
|
; AVX512-NEXT: retq
|
|
|
|
|
|
|
|
|
|
%t0 = add <8 x i64> %x0, %x1
|
|
|
|
|
|