Bug 1073478 - IonMonkey: Commute SIMD binary operators r=bbouvier

This commit is contained in:
Dan Gohman 2014-10-03 14:34:39 -07:00
parent 9d74dbfe56
commit d518e5ce17

View File

@ -3806,6 +3806,9 @@ LIRGenerator::visitSimdBinaryComp(MSimdBinaryComp *ins)
{
MOZ_ASSERT(ins->type() == MIRType_Int32x4);
if (ShouldReorderCommutative(ins->lhs(), ins->rhs(), ins))
ins->reverse();
if (ins->compareType() == MSimdBinaryComp::CompareInt32x4) {
LSimdBinaryCompIx4 *add = new(alloc()) LSimdBinaryCompIx4();
return lowerForCompIx4(add, ins, ins->lhs(), ins->rhs());
@ -3825,14 +3828,19 @@ LIRGenerator::visitSimdBinaryArith(MSimdBinaryArith *ins)
{
MOZ_ASSERT(IsSimdType(ins->type()));
MDefinition *lhs = ins->lhs();
MDefinition *rhs = ins->rhs();
if (ins->isCommutative())
ReorderCommutative(&lhs, &rhs, ins);
if (ins->type() == MIRType_Int32x4) {
LSimdBinaryArithIx4 *add = new(alloc()) LSimdBinaryArithIx4();
return lowerForFPU(add, ins, ins->lhs(), ins->rhs());
return lowerForFPU(add, ins, lhs, rhs);
}
if (ins->type() == MIRType_Float32x4) {
LSimdBinaryArithFx4 *add = new(alloc()) LSimdBinaryArithFx4();
return lowerForFPU(add, ins, ins->lhs(), ins->rhs());
return lowerForFPU(add, ins, lhs, rhs);
}
MOZ_CRASH("Unknown SIMD kind when adding values");
@ -3843,9 +3851,13 @@ LIRGenerator::visitSimdBinaryBitwise(MSimdBinaryBitwise *ins)
{
MOZ_ASSERT(IsSimdType(ins->type()));
MDefinition *lhs = ins->lhs();
MDefinition *rhs = ins->rhs();
ReorderCommutative(&lhs, &rhs, ins);
if (ins->type() == MIRType_Int32x4 || ins->type() == MIRType_Float32x4) {
LSimdBinaryBitwiseX4 *lir = new(alloc()) LSimdBinaryBitwiseX4;
return lowerForFPU(lir, ins, ins->lhs(), ins->rhs());
return lowerForFPU(lir, ins, lhs, rhs);
}
MOZ_CRASH("Unknown SIMD kind when doing bitwise operations");