Commit f52cea4b by Nicolas Capens Committed by Nicolas Capens

Fix unpacking from a single vector.

Both vector arguments were being used in a punpckl instruction, while the shuffle mask repeats elements from just the first vector. BUG=swiftshader:15 Change-Id: I8e29c252ee4957692c4949e724ae67253b423e89 Reviewed-on: https://chromium-review.googlesource.com/399419Reviewed-by: 's avatarJim Stichnoth <stichnot@chromium.org> Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 3a01f337
......@@ -6022,9 +6022,8 @@ void TargetX86Base<TraitsType>::lowerShuffleVector(
Index12 == 6 && Index13 == 6 && Index14 == 7 && Index15 == 7) {
auto *T = makeReg(DestTy);
auto *Src0RM = legalize(Src0, Legal_Reg | Legal_Mem);
auto *Src1RM = legalize(Src1, Legal_Reg | Legal_Mem);
_movp(T, Src0RM);
_punpckl(T, Src1RM);
_punpckl(T, Src0RM);
_movp(Dest, T);
return;
}
......@@ -6058,9 +6057,8 @@ void TargetX86Base<TraitsType>::lowerShuffleVector(
Index4 == 2 && Index5 == 2 && Index6 == 3 && Index7 == 3) {
auto *T = makeReg(DestTy);
auto *Src0RM = legalize(Src0, Legal_Reg | Legal_Mem);
auto *Src1RM = legalize(Src1, Legal_Reg | Legal_Mem);
_movp(T, Src0RM);
_punpckl(T, Src1RM);
_punpckl(T, Src0RM);
_movp(Dest, T);
return;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment