commit | a29da906bf910a32de3a81ef43d6ec43f138f2ab | [log] [tgz] |
---|---|---|
author | Nicolas Capens <capn@google.com> | Wed Nov 30 10:39:01 2016 -0500 |
committer | Nicolas Capens <nicolascapens@google.com> | Wed Nov 30 17:03:42 2016 +0000 |
tree | 80e8111be1920b7933ac74853dd8180f37edff05 | |
parent | e1e17832e9c85b8b2be2a9efe98697c9d851345a [diff] |
Ensure that the sub-vector load destination is a register. BUG=swiftshader:15 Change-Id: I7e10342fa1ef9bce22bc8c445240fc34a68e8f47 Reviewed-on: https://chromium-review.googlesource.com/414992 Reviewed-by: Jim Stichnoth <stichnot@chromium.org>
diff --git a/src/IceTargetLoweringX86BaseImpl.h b/src/IceTargetLoweringX86BaseImpl.h index 0ba7bce..796aa13 100644 --- a/src/IceTargetLoweringX86BaseImpl.h +++ b/src/IceTargetLoweringX86BaseImpl.h
@@ -4397,17 +4397,19 @@ return; } + auto *T = makeReg(Ty); switch (SubVectorSize->getValue()) { case 4: - _movd(Dest, Src); + _movd(T, Src); break; case 8: - _movq(Dest, Src); + _movq(T, Src); break; default: Func->setError("Unexpected size for LoadSubVector"); return; } + _movp(Dest, T); return; } case Intrinsics::StoreSubVector: {