Commit ef18fc51 by Nicolas Capens Committed by Nicolas Capens

Match sub-vector load/store operand order to regular load/store.

BUG=swiftshader:15 Change-Id: If608ab4903d97daa0ad342d02f496ac3fa6471d9 Reviewed-on: https://chromium-review.googlesource.com/414389Reviewed-by: 's avatarJim Stichnoth <stichnot@chromium.org>
parent 2220990e
...@@ -546,7 +546,7 @@ template <typename TraitsType> void TargetX86Base<TraitsType>::translateO2() { ...@@ -546,7 +546,7 @@ template <typename TraitsType> void TargetX86Base<TraitsType>::translateO2() {
return; return;
// The post-codegen dump is done here, after liveness analysis and associated // The post-codegen dump is done here, after liveness analysis and associated
// cleanup, to make the dump cleaner and more useful. // cleanup, to make the dump cleaner and more useful.
Func->dump("After initial x8632 codegen"); Func->dump("After initial x86 codegen");
// Validate the live range computations. The expensive validation call is // Validate the live range computations. The expensive validation call is
// deliberately only made when assertions are enabled. // deliberately only made when assertions are enabled.
assert(Func->validateLiveness()); assert(Func->validateLiveness());
...@@ -621,7 +621,7 @@ template <typename TraitsType> void TargetX86Base<TraitsType>::translateOm1() { ...@@ -621,7 +621,7 @@ template <typename TraitsType> void TargetX86Base<TraitsType>::translateOm1() {
if (SandboxingType != ST_None) { if (SandboxingType != ST_None) {
initSandbox(); initSandbox();
} }
Func->dump("After initial x8632 codegen"); Func->dump("After initial x86 codegen");
regAlloc(RAK_InfOnly); regAlloc(RAK_InfOnly);
if (Func->hasError()) if (Func->hasError())
...@@ -4383,12 +4383,12 @@ void TargetX86Base<TraitsType>::lowerIntrinsicCall( ...@@ -4383,12 +4383,12 @@ void TargetX86Base<TraitsType>::lowerIntrinsicCall(
_ud2(); _ud2();
return; return;
case Intrinsics::LoadSubVector: { case Intrinsics::LoadSubVector: {
assert(llvm::isa<ConstantInteger32>(Instr->getArg(0)) && assert(llvm::isa<ConstantInteger32>(Instr->getArg(1)) &&
"LoadSubVector first argument must be a constant"); "LoadSubVector second argument must be a constant");
Variable *Dest = Instr->getDest(); Variable *Dest = Instr->getDest();
Type Ty = Dest->getType(); Type Ty = Dest->getType();
auto *SubVectorSize = llvm::dyn_cast<ConstantInteger32>(Instr->getArg(0)); auto *SubVectorSize = llvm::cast<ConstantInteger32>(Instr->getArg(1));
Operand *Addr = Instr->getArg(1); Operand *Addr = Instr->getArg(0);
X86OperandMem *Src = formMemoryOperand(Addr, Ty); X86OperandMem *Src = formMemoryOperand(Addr, Ty);
doMockBoundsCheck(Src); doMockBoundsCheck(Src);
...@@ -4411,11 +4411,11 @@ void TargetX86Base<TraitsType>::lowerIntrinsicCall( ...@@ -4411,11 +4411,11 @@ void TargetX86Base<TraitsType>::lowerIntrinsicCall(
return; return;
} }
case Intrinsics::StoreSubVector: { case Intrinsics::StoreSubVector: {
assert(llvm::isa<ConstantInteger32>(Instr->getArg(0)) && assert(llvm::isa<ConstantInteger32>(Instr->getArg(2)) &&
"StoreSubVector first argument must be a constant"); "StoreSubVector third argument must be a constant");
auto *SubVectorSize = llvm::dyn_cast<ConstantInteger32>(Instr->getArg(0)); auto *SubVectorSize = llvm::cast<ConstantInteger32>(Instr->getArg(2));
Operand *Value = Instr->getArg(1); Operand *Value = Instr->getArg(0);
Operand *Addr = Instr->getArg(2); Operand *Addr = Instr->getArg(1);
X86OperandMem *NewAddr = formMemoryOperand(Addr, Value->getType()); X86OperandMem *NewAddr = formMemoryOperand(Addr, Value->getType());
doMockBoundsCheck(NewAddr); doMockBoundsCheck(NewAddr);
......
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