git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207352
91177308-0d34-0410-b5e6-
96231b3b80d8
if (Identity && NElts)
return N1;
+ // Shuffling a constant splat doesn't change the result.
+ if (N2Undef && N1.getOpcode() == ISD::BUILD_VECTOR)
+ if (cast<BuildVectorSDNode>(N1)->getConstantSplatValue())
+ return N1;
+
FoldingSetNodeID ID;
SDValue Ops[2] = { N1, N2 };
AddNodeIDNode(ID, ISD::VECTOR_SHUFFLE, getVTList(VT), Ops, 2);
; SSE-LABEL: test8:
; SSE: pmuldq
; SSE: pshufd $57
+; SSE-NOT: pshufd $57
; SSE: pmuldq
; SSE: shufps $-35
; SSE: pshufd $-40
; AVX-LABEL: test8:
; AVX: vpmuldq
; AVX: vpshufd $57
+; AVX-NOT: vpshufd $57
; AVX: vpmuldq
; AVX: vshufps $-35
; AVX: vpshufd $-40
ret <8 x i32> %div
; AVX-LABEL: test9:
-; AVX: vpermd
+; AVX: vpbroadcastd
; AVX: vpmuldq
; AVX: vshufps $-35
; AVX: vpmuldq
ret <8 x i32> %rem
; AVX-LABEL: test10:
-; AVX: vpermd
+; AVX: vpbroadcastd
; AVX: vpmuludq
; AVX: vshufps $-35
; AVX: vpmuludq
ret <8 x i32> %rem
; AVX-LABEL: test11:
-; AVX: vpermd
+; AVX: vpbroadcastd
; AVX: vpmuldq
; AVX: vshufps $-35
; AVX: vpmuldq