Match sub-vector load/store operand order to regular load/store.
BUG=swiftshader:15
Change-Id: If608ab4903d97daa0ad342d02f496ac3fa6471d9
Reviewed-on: https://chromium-review.googlesource.com/414389
Reviewed-by: Jim Stichnoth <stichnot@chromium.org>
diff --git a/src/IceTargetLoweringX86BaseImpl.h b/src/IceTargetLoweringX86BaseImpl.h
index bfdb019..0ba7bce 100644
--- a/src/IceTargetLoweringX86BaseImpl.h
+++ b/src/IceTargetLoweringX86BaseImpl.h
@@ -546,7 +546,7 @@
return;
// The post-codegen dump is done here, after liveness analysis and associated
// 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
// deliberately only made when assertions are enabled.
assert(Func->validateLiveness());
@@ -621,7 +621,7 @@
if (SandboxingType != ST_None) {
initSandbox();
}
- Func->dump("After initial x8632 codegen");
+ Func->dump("After initial x86 codegen");
regAlloc(RAK_InfOnly);
if (Func->hasError())
@@ -4383,12 +4383,12 @@
_ud2();
return;
case Intrinsics::LoadSubVector: {
- assert(llvm::isa<ConstantInteger32>(Instr->getArg(0)) &&
- "LoadSubVector first argument must be a constant");
+ assert(llvm::isa<ConstantInteger32>(Instr->getArg(1)) &&
+ "LoadSubVector second argument must be a constant");
Variable *Dest = Instr->getDest();
Type Ty = Dest->getType();
- auto *SubVectorSize = llvm::dyn_cast<ConstantInteger32>(Instr->getArg(0));
- Operand *Addr = Instr->getArg(1);
+ auto *SubVectorSize = llvm::cast<ConstantInteger32>(Instr->getArg(1));
+ Operand *Addr = Instr->getArg(0);
X86OperandMem *Src = formMemoryOperand(Addr, Ty);
doMockBoundsCheck(Src);
@@ -4411,11 +4411,11 @@
return;
}
case Intrinsics::StoreSubVector: {
- assert(llvm::isa<ConstantInteger32>(Instr->getArg(0)) &&
- "StoreSubVector first argument must be a constant");
- auto *SubVectorSize = llvm::dyn_cast<ConstantInteger32>(Instr->getArg(0));
- Operand *Value = Instr->getArg(1);
- Operand *Addr = Instr->getArg(2);
+ assert(llvm::isa<ConstantInteger32>(Instr->getArg(2)) &&
+ "StoreSubVector third argument must be a constant");
+ auto *SubVectorSize = llvm::cast<ConstantInteger32>(Instr->getArg(2));
+ Operand *Value = Instr->getArg(0);
+ Operand *Addr = Instr->getArg(1);
X86OperandMem *NewAddr = formMemoryOperand(Addr, Value->getType());
doMockBoundsCheck(NewAddr);