Commit a29da906 by Nicolas Capens Committed by Nicolas Capens

Ensure that the sub-vector load destination is a register.

BUG=swiftshader:15 Change-Id: I7e10342fa1ef9bce22bc8c445240fc34a68e8f47 Reviewed-on: https://chromium-review.googlesource.com/414992Reviewed-by: 's avatarJim Stichnoth <stichnot@chromium.org>
parent e1e17832
...@@ -4397,17 +4397,19 @@ void TargetX86Base<TraitsType>::lowerIntrinsicCall( ...@@ -4397,17 +4397,19 @@ void TargetX86Base<TraitsType>::lowerIntrinsicCall(
return; return;
} }
auto *T = makeReg(Ty);
switch (SubVectorSize->getValue()) { switch (SubVectorSize->getValue()) {
case 4: case 4:
_movd(Dest, Src); _movd(T, Src);
break; break;
case 8: case 8:
_movq(Dest, Src); _movq(T, Src);
break; break;
default: default:
Func->setError("Unexpected size for LoadSubVector"); Func->setError("Unexpected size for LoadSubVector");
return; return;
} }
_movp(Dest, T);
return; return;
} }
case Intrinsics::StoreSubVector: { case Intrinsics::StoreSubVector: {
......
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