| Index: test/cctest/compiler/test-instruction-selector-arm.cc
|
| diff --git a/test/cctest/compiler/test-instruction-selector-arm.cc b/test/cctest/compiler/test-instruction-selector-arm.cc
|
| index f62e09f978e9f4744669ca100a2c60cd397fc15d..ece37a882501f6a0f4ceeec55dea64c818f44ed0 100644
|
| --- a/test/cctest/compiler/test-instruction-selector-arm.cc
|
| +++ b/test/cctest/compiler/test-instruction-selector-arm.cc
|
| @@ -45,6 +45,8 @@ struct ODPI {
|
| Operator* op;
|
| ArchOpcode arch_opcode;
|
| ArchOpcode reverse_arch_opcode;
|
| + FlagsCondition condition;
|
| + FlagsCondition negated_condition;
|
| };
|
|
|
|
|
| @@ -53,10 +55,18 @@ class ODPIs V8_FINAL : public std::list<ODPI>, private HandleAndZoneScope {
|
| public:
|
| ODPIs() {
|
| MachineOperatorBuilder machine(main_zone());
|
| - ODPI add = {machine.Int32AddWithOverflow(), kArmAdd, kArmAdd};
|
| - push_back(add);
|
| - ODPI sub = {machine.Int32SubWithOverflow(), kArmSub, kArmRsb};
|
| - push_back(sub);
|
| + ODPI sadd = {machine.Int32AddWithOverflow(), kArmAdd, kArmAdd, kOverflow,
|
| + kNotOverflow};
|
| + push_back(sadd);
|
| + ODPI ssub = {machine.Int32SubWithOverflow(), kArmSub, kArmRsb, kOverflow,
|
| + kNotOverflow};
|
| + push_back(ssub);
|
| + ODPI uadd = {machine.Uint32AddWithOverflow(), kArmAdd, kArmAdd,
|
| + kUnsignedGreaterThanOrEqual, kUnsignedLessThan};
|
| + push_back(uadd);
|
| + ODPI usub = {machine.Uint32SubWithOverflow(), kArmSub, kArmRsb,
|
| + kUnsignedLessThan, kUnsignedGreaterThanOrEqual};
|
| + push_back(usub);
|
| }
|
| };
|
|
|
| @@ -287,7 +297,7 @@ TEST(InstructionSelectorODPIP) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_R, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(2, m.code[0]->InputCount());
|
| CHECK_LE(1, m.code[0]->OutputCount());
|
| }
|
| @@ -312,7 +322,7 @@ TEST(InstructionSelectorODPIP) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_R, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(2, m.code[0]->InputCount());
|
| CHECK_EQ(2, m.code[0]->OutputCount());
|
| }
|
| @@ -337,7 +347,7 @@ TEST(InstructionSelectorODPIImm) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_I, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(2, m.code[0]->InputCount());
|
| CHECK_EQ(imm, m.ToInt32(m.code[0]->InputAt(1)));
|
| CHECK_LE(1, m.code[0]->OutputCount());
|
| @@ -351,7 +361,7 @@ TEST(InstructionSelectorODPIImm) {
|
| CHECK_EQ(odpi.reverse_arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_I, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(2, m.code[0]->InputCount());
|
| CHECK_EQ(imm, m.ToInt32(m.code[0]->InputAt(1)));
|
| CHECK_LE(1, m.code[0]->OutputCount());
|
| @@ -391,7 +401,7 @@ TEST(InstructionSelectorODPIImm) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_I, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(2, m.code[0]->InputCount());
|
| CHECK_EQ(imm, m.ToInt32(m.code[0]->InputAt(1)));
|
| CHECK_EQ(2, m.code[0]->OutputCount());
|
| @@ -405,7 +415,7 @@ TEST(InstructionSelectorODPIImm) {
|
| CHECK_EQ(odpi.reverse_arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_I, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(2, m.code[0]->InputCount());
|
| CHECK_EQ(imm, m.ToInt32(m.code[0]->InputAt(1)));
|
| CHECK_EQ(2, m.code[0]->OutputCount());
|
| @@ -432,7 +442,7 @@ TEST(InstructionSelectorODPIAndShiftP) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(shift.r_mode, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(3, m.code[0]->InputCount());
|
| CHECK_LE(1, m.code[0]->OutputCount());
|
| }
|
| @@ -447,7 +457,7 @@ TEST(InstructionSelectorODPIAndShiftP) {
|
| CHECK_EQ(odpi.reverse_arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(shift.r_mode, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(3, m.code[0]->InputCount());
|
| CHECK_LE(1, m.code[0]->OutputCount());
|
| }
|
| @@ -489,7 +499,7 @@ TEST(InstructionSelectorODPIAndShiftP) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(shift.r_mode, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(3, m.code[0]->InputCount());
|
| CHECK_EQ(2, m.code[0]->OutputCount());
|
| }
|
| @@ -504,7 +514,7 @@ TEST(InstructionSelectorODPIAndShiftP) {
|
| CHECK_EQ(odpi.reverse_arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(shift.r_mode, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(3, m.code[0]->InputCount());
|
| CHECK_EQ(2, m.code[0]->OutputCount());
|
| }
|
| @@ -531,7 +541,7 @@ TEST(InstructionSelectorODPIAndShiftImm) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(shift.i_mode, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(3, m.code[0]->InputCount());
|
| CHECK_EQ(imm, m.ToInt32(m.code[0]->InputAt(2)));
|
| CHECK_LE(1, m.code[0]->OutputCount());
|
| @@ -547,7 +557,7 @@ TEST(InstructionSelectorODPIAndShiftImm) {
|
| CHECK_EQ(odpi.reverse_arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(shift.i_mode, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(3, m.code[0]->InputCount());
|
| CHECK_EQ(imm, m.ToInt32(m.code[0]->InputAt(2)));
|
| CHECK_LE(1, m.code[0]->OutputCount());
|
| @@ -592,7 +602,7 @@ TEST(InstructionSelectorODPIAndShiftImm) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(shift.i_mode, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(3, m.code[0]->InputCount());
|
| CHECK_EQ(imm, m.ToInt32(m.code[0]->InputAt(2)));
|
| CHECK_EQ(2, m.code[0]->OutputCount());
|
| @@ -608,7 +618,7 @@ TEST(InstructionSelectorODPIAndShiftImm) {
|
| CHECK_EQ(odpi.reverse_arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(shift.i_mode, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_set, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_EQ(3, m.code[0]->InputCount());
|
| CHECK_EQ(imm, m.ToInt32(m.code[0]->InputAt(2)));
|
| CHECK_EQ(2, m.code[0]->OutputCount());
|
| @@ -1736,7 +1746,7 @@ TEST(InstructionSelectorBranchWithODPIP) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_R, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_branch, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| }
|
| {
|
| InstructionSelectorTester m;
|
| @@ -1753,7 +1763,7 @@ TEST(InstructionSelectorBranchWithODPIP) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_R, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_branch, m.code[0]->flags_mode());
|
| - CHECK_EQ(kNotOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.negated_condition, m.code[0]->flags_condition());
|
| }
|
| {
|
| InstructionSelectorTester m;
|
| @@ -1770,7 +1780,7 @@ TEST(InstructionSelectorBranchWithODPIP) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_R, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_branch, m.code[0]->flags_mode());
|
| - CHECK_EQ(kNotOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.negated_condition, m.code[0]->flags_condition());
|
| }
|
| }
|
| }
|
| @@ -1798,7 +1808,7 @@ TEST(InstructionSelectorBranchWithODPIImm) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_I, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_branch, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_LE(2, m.code[0]->InputCount());
|
| CHECK_EQ(imm, m.ToInt32(m.code[0]->InputAt(1)));
|
| }
|
| @@ -1816,7 +1826,7 @@ TEST(InstructionSelectorBranchWithODPIImm) {
|
| CHECK_EQ(odpi.reverse_arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_I, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_branch, m.code[0]->flags_mode());
|
| - CHECK_EQ(kOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.condition, m.code[0]->flags_condition());
|
| CHECK_LE(2, m.code[0]->InputCount());
|
| CHECK_EQ(imm, m.ToInt32(m.code[0]->InputAt(1)));
|
| }
|
| @@ -1835,7 +1845,7 @@ TEST(InstructionSelectorBranchWithODPIImm) {
|
| CHECK_EQ(odpi.arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_I, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_branch, m.code[0]->flags_mode());
|
| - CHECK_EQ(kNotOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.negated_condition, m.code[0]->flags_condition());
|
| CHECK_LE(2, m.code[0]->InputCount());
|
| CHECK_EQ(imm, m.ToInt32(m.code[0]->InputAt(1)));
|
| }
|
| @@ -1854,7 +1864,7 @@ TEST(InstructionSelectorBranchWithODPIImm) {
|
| CHECK_EQ(odpi.reverse_arch_opcode, m.code[0]->arch_opcode());
|
| CHECK_EQ(kMode_Operand2_I, m.code[0]->addressing_mode());
|
| CHECK_EQ(kFlags_branch, m.code[0]->flags_mode());
|
| - CHECK_EQ(kNotOverflow, m.code[0]->flags_condition());
|
| + CHECK_EQ(odpi.negated_condition, m.code[0]->flags_condition());
|
| CHECK_LE(2, m.code[0]->InputCount());
|
| CHECK_EQ(imm, m.ToInt32(m.code[0]->InputAt(1)));
|
| }
|
|
|