Fix unit tests.
Change-Id: I70899be0455958aaad6af8d8218f1db50591beae
Reviewed-on: https://chromium-review.googlesource.com/401385
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Jim Stichnoth <stichnot@chromium.org>
diff --git a/src/IceAssemblerX86BaseImpl.h b/src/IceAssemblerX86BaseImpl.h
index 9c50ea9..77b746d 100644
--- a/src/IceAssemblerX86BaseImpl.h
+++ b/src/IceAssemblerX86BaseImpl.h
@@ -1667,15 +1667,15 @@
}
template <typename TraitsType>
-void AssemblerX86Base<TraitsType>::packss(Type DestTy, XmmRegister Dst,
+void AssemblerX86Base<TraitsType>::packss(Type Ty, XmmRegister Dst,
XmmRegister Src) {
AssemblerBuffer::EnsureCapacity ensured(&Buffer);
emitUint8(0x66);
emitRexRB(RexTypeIrrelevant, Dst, Src);
emitUint8(0x0F);
- if (DestTy == IceType_v8i16) {
+ if (Ty == IceType_v4i32 || Ty == IceType_v4f32) {
emitUint8(0x6B);
- } else if (DestTy == IceType_v16i8) {
+ } else if (Ty == IceType_v8i16) {
emitUint8(0x63);
} else {
assert(false && "Unexpected vector pack operand type");
@@ -1684,16 +1684,16 @@
}
template <typename TraitsType>
-void AssemblerX86Base<TraitsType>::packss(Type DestTy, XmmRegister Dst,
+void AssemblerX86Base<TraitsType>::packss(Type Ty, XmmRegister Dst,
const Address &Src) {
AssemblerBuffer::EnsureCapacity ensured(&Buffer);
emitUint8(0x66);
emitAddrSizeOverridePrefix();
emitRex(RexTypeIrrelevant, Src, Dst);
emitUint8(0x0F);
- if (DestTy == IceType_v8i16) {
+ if (Ty == IceType_v4i32 || Ty == IceType_v4f32) {
emitUint8(0x6B);
- } else if (DestTy == IceType_v16i8) {
+ } else if (Ty == IceType_v8i16) {
emitUint8(0x63);
} else {
assert(false && "Unexpected vector pack operand type");
@@ -1702,16 +1702,16 @@
}
template <typename TraitsType>
-void AssemblerX86Base<TraitsType>::packus(Type DestTy, XmmRegister Dst,
+void AssemblerX86Base<TraitsType>::packus(Type Ty, XmmRegister Dst,
XmmRegister Src) {
AssemblerBuffer::EnsureCapacity ensured(&Buffer);
emitUint8(0x66);
emitRexRB(RexTypeIrrelevant, Dst, Src);
emitUint8(0x0F);
- if (DestTy == IceType_v8i16) {
+ if (Ty == IceType_v4i32 || Ty == IceType_v4f32) {
emitUint8(0x38);
emitUint8(0x2B);
- } else if (DestTy == IceType_v16i8) {
+ } else if (Ty == IceType_v8i16) {
emitUint8(0x67);
} else {
assert(false && "Unexpected vector pack operand type");
@@ -1720,17 +1720,17 @@
}
template <typename TraitsType>
-void AssemblerX86Base<TraitsType>::packus(Type DestTy, XmmRegister Dst,
+void AssemblerX86Base<TraitsType>::packus(Type Ty, XmmRegister Dst,
const Address &Src) {
AssemblerBuffer::EnsureCapacity ensured(&Buffer);
emitUint8(0x66);
emitAddrSizeOverridePrefix();
emitRex(RexTypeIrrelevant, Src, Dst);
emitUint8(0x0F);
- if (DestTy == IceType_v8i16) {
+ if (Ty == IceType_v4i32 || Ty == IceType_v4f32) {
emitUint8(0x38);
emitUint8(0x2B);
- } else if (DestTy == IceType_v16i8) {
+ } else if (Ty == IceType_v8i16) {
emitUint8(0x67);
} else {
assert(false && "Unexpected vector pack operand type");
diff --git a/src/IceInstX86BaseImpl.h b/src/IceInstX86BaseImpl.h
index 4075bf3..88c0272 100644
--- a/src/IceInstX86BaseImpl.h
+++ b/src/IceInstX86BaseImpl.h
@@ -1059,6 +1059,7 @@
const Variable *Dest = this->getDest();
const Variable *Src = llvm::cast<Variable>(this->getSrc(0));
const Type DestTy = Dest->getType();
+ (void)DestTy;
const Type SrcTy = Src->getType();
assert(isVectorType(SrcTy));
assert(isScalarIntegerType(DestTy));
diff --git a/src/IceTargetLoweringX86BaseImpl.h b/src/IceTargetLoweringX86BaseImpl.h
index 86a4343..a18ff98 100644
--- a/src/IceTargetLoweringX86BaseImpl.h
+++ b/src/IceTargetLoweringX86BaseImpl.h
@@ -435,9 +435,8 @@
if (!Traits::Is64Bit ||
::Ice::getFlags().getApplicationBinaryInterface() == ::Ice::ABI_PNaCl) {
return ::Ice::IceType_i32;
- } else {
- return ::Ice::IceType_i64;
}
+ return ::Ice::IceType_i64;
}
template <typename TraitsType> void TargetX86Base<TraitsType>::translateO2() {
@@ -4437,7 +4436,7 @@
Operand *Src0 = Instr->getArg(0);
Operand *Src1 = Instr->getArg(1);
Variable *Dest = Instr->getDest();
- auto *T = makeReg(Dest->getType());
+ auto *T = makeReg(Src0->getType());
auto *Src0RM = legalize(Src0, Legal_Reg | Legal_Mem);
auto *Src1RM = legalize(Src1, Legal_Reg | Legal_Mem);
_movp(T, Src0RM);
@@ -4449,7 +4448,7 @@
Operand *Src0 = Instr->getArg(0);
Operand *Src1 = Instr->getArg(1);
Variable *Dest = Instr->getDest();
- auto *T = makeReg(Dest->getType());
+ auto *T = makeReg(Src0->getType());
auto *Src0RM = legalize(Src0, Legal_Reg | Legal_Mem);
auto *Src1RM = legalize(Src1, Legal_Reg | Legal_Mem);
_movp(T, Src0RM);
diff --git a/unittest/AssemblerX8632/DataMov.cpp b/unittest/AssemblerX8632/DataMov.cpp
index d41acd1..22ce0b2 100644
--- a/unittest/AssemblerX8632/DataMov.cpp
+++ b/unittest/AssemblerX8632/DataMov.cpp
@@ -973,7 +973,8 @@
const Dqword V0 Value1; \
\
__ movups(XmmRegister::Encoded_Reg_##Src, dwordAddress(T0)); \
- __ Inst(GPRRegister::Encoded_Reg_##GPR, XmmRegister::Encoded_Reg_##Src); \
+ __ Inst(IceType_v4f32, GPRRegister::Encoded_Reg_##GPR, \
+ XmmRegister::Encoded_Reg_##Src); \
\
AssembledTest test = assemble(); \
test.setDqwordTo(T0, V0); \
@@ -985,8 +986,7 @@
#define TestMovmsk(GPR, Src) \
do { \
- TestMovmskGPRXmm(GPR, Src, (-1.0, 1.0, -1.0, 1.0), 0x05ul, movmskps); \
- TestMovmskGPRXmm(GPR, Src, (1.0, -1.0), 0x02ul, movmskpd); \
+ TestMovmskGPRXmm(GPR, Src, (-1.0, 1.0, -1.0, 1.0), 0x05ul, movmsk); \
} while (0)
TestMovmsk(eax, xmm0);
diff --git a/unittest/AssemblerX8664/DataMov.cpp b/unittest/AssemblerX8664/DataMov.cpp
index 6e83fce..3771d64 100644
--- a/unittest/AssemblerX8664/DataMov.cpp
+++ b/unittest/AssemblerX8664/DataMov.cpp
@@ -1361,7 +1361,7 @@
const Dqword V0 Value1; \
\
__ movups(Encoded_Xmm_##Src(), dwordAddress(T0)); \
- __ Inst(Encoded_GPR_##GPR(), Encoded_Xmm_##Src()); \
+ __ Inst(IceType_v4f32, Encoded_GPR_##GPR(), Encoded_Xmm_##Src()); \
\
AssembledTest test = assemble(); \
test.setDqwordTo(T0, V0); \
@@ -1373,8 +1373,7 @@
#define TestMovmsk(GPR, Src) \
do { \
- TestMovmskGPRXmm(GPR, Src, (-1.0, 1.0, -1.0, 1.0), 0x05ul, movmskps); \
- TestMovmskGPRXmm(GPR, Src, (1.0, -1.0), 0x02ul, movmskpd); \
+ TestMovmskGPRXmm(GPR, Src, (-1.0, 1.0, -1.0, 1.0), 0x05ul, movmsk); \
} while (0)
TestMovmsk(r1, xmm0);