Index: test/unittests/compiler/node-matchers-unittest.cc |
diff --git a/test/unittests/compiler/node-matchers-unittest.cc b/test/unittests/compiler/node-matchers-unittest.cc |
index 45d7427494e00948543fc529c289539014a9f07f..7f043049f0b269e3503f5b53258ecb1e6967534b 100644 |
--- a/test/unittests/compiler/node-matchers-unittest.cc |
+++ b/test/unittests/compiler/node-matchers-unittest.cc |
@@ -43,6 +43,17 @@ void CheckBaseWithIndexAndDisplacement( |
} // namespace |
+#define ADD_ADDRESSING_OPERAND_USES(node) \ |
+ graph()->NewNode(machine()->Load(MachineType::Int32()), node, d0, \ |
+ graph()->start(), graph()->start()); \ |
+ graph()->NewNode(machine()->Store(rep), node, d0, d0, graph()->start(), \ |
+ graph()->start()); \ |
+ graph()->NewNode(machine()->Int32Add(), node, d0); \ |
+ graph()->NewNode(machine()->Int64Add(), node, d0); |
+ |
+#define ADD_NONE_ADDRESSING_OPERAND_USES(node) \ |
+ graph()->NewNode(machine()->Store(rep), b0, d0, node, graph()->start(), \ |
+ graph()->start()); |
TEST_F(NodeMatcherTest, ScaledWithOffset32Matcher) { |
graph()->SetStart(graph()->NewNode(common()->Start(0))); |
@@ -125,6 +136,10 @@ TEST_F(NodeMatcherTest, ScaledWithOffset32Matcher) { |
USE(s3); |
USE(s4); |
+ const StoreRepresentation rep(MachineRepresentation::kWord32, |
+ kNoWriteBarrier); |
+ USE(rep); |
+ |
// 1 INPUT |
// Only relevant test dases is Checking for non-match. |
@@ -378,6 +393,613 @@ TEST_F(NodeMatcherTest, ScaledWithOffset32Matcher) { |
graph()->NewNode(a_op, graph()->NewNode(sub_op, b0, d15), s3)); |
CheckBaseWithIndexAndDisplacement(&match46, p1, 3, b0, d15, |
kNegativeDisplacement); |
+ |
+ // 4 INPUT - with addressing operand uses |
+ |
+ // (B0 + M1) -> [p1, 0, B0, NULL] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement32Matcher match47(graph()->NewNode(a_op, b0, m1)); |
+ CheckBaseWithIndexAndDisplacement(&match47, p1, 0, b0, NULL); |
+ |
+ // (M1 + B0) -> [p1, 0, B0, NULL] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement32Matcher match48(graph()->NewNode(a_op, m1, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match48, p1, 0, b0, NULL); |
+ |
+ // (D15 + M1) -> [P1, 0, NULL, D15] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement32Matcher match49( |
+ graph()->NewNode(a_op, d15, m1)); |
+ CheckBaseWithIndexAndDisplacement(&match49, p1, 0, NULL, d15); |
+ |
+ // (M1 + D15) -> [P1, 0, NULL, D15] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement32Matcher match50( |
+ graph()->NewNode(a_op, m1, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match50, p1, 0, NULL, d15); |
+ |
+ // (B0 + S0) -> [p1, 0, B0, NULL] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement32Matcher match51(graph()->NewNode(a_op, b0, s0)); |
+ CheckBaseWithIndexAndDisplacement(&match51, p1, 0, b0, NULL); |
+ |
+ // (S0 + B0) -> [p1, 0, B0, NULL] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement32Matcher match52(graph()->NewNode(a_op, s0, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match52, p1, 0, b0, NULL); |
+ |
+ // (D15 + S0) -> [P1, 0, NULL, D15] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement32Matcher match53( |
+ graph()->NewNode(a_op, d15, s0)); |
+ CheckBaseWithIndexAndDisplacement(&match53, p1, 0, NULL, d15); |
+ |
+ // (S0 + D15) -> [P1, 0, NULL, D15] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement32Matcher match54( |
+ graph()->NewNode(a_op, s0, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match54, p1, 0, NULL, d15); |
+ |
+ // (B0 + M2) -> [p1, 1, B0, NULL] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement32Matcher match55(graph()->NewNode(a_op, b0, m2)); |
+ CheckBaseWithIndexAndDisplacement(&match55, p1, 1, b0, NULL); |
+ |
+ // (M2 + B0) -> [p1, 1, B0, NULL] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement32Matcher match56(graph()->NewNode(a_op, m2, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match56, p1, 1, b0, NULL); |
+ |
+ // (D15 + M2) -> [P1, 1, NULL, D15] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement32Matcher match57( |
+ graph()->NewNode(a_op, d15, m2)); |
+ CheckBaseWithIndexAndDisplacement(&match57, p1, 1, NULL, d15); |
+ |
+ // (M2 + D15) -> [P1, 1, NULL, D15] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement32Matcher match58( |
+ graph()->NewNode(a_op, m2, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match58, p1, 1, NULL, d15); |
+ |
+ // (B0 + S1) -> [p1, 1, B0, NULL] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement32Matcher match59(graph()->NewNode(a_op, b0, s1)); |
+ CheckBaseWithIndexAndDisplacement(&match59, p1, 1, b0, NULL); |
+ |
+ // (S1 + B0) -> [p1, 1, B0, NULL] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement32Matcher match60(graph()->NewNode(a_op, s1, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match60, p1, 1, b0, NULL); |
+ |
+ // (D15 + S1) -> [P1, 1, NULL, D15] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement32Matcher match61( |
+ graph()->NewNode(a_op, d15, s1)); |
+ CheckBaseWithIndexAndDisplacement(&match61, p1, 1, NULL, d15); |
+ |
+ // (S1 + D15) -> [P1, 1, NULL, D15] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement32Matcher match62( |
+ graph()->NewNode(a_op, s1, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match62, p1, 1, NULL, d15); |
+ |
+ // (B0 + M4) -> [p1, 2, B0, NULL] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement32Matcher match63(graph()->NewNode(a_op, b0, m4)); |
+ CheckBaseWithIndexAndDisplacement(&match63, p1, 2, b0, NULL); |
+ |
+ // (M4 + B0) -> [p1, 2, B0, NULL] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement32Matcher match64(graph()->NewNode(a_op, m4, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match64, p1, 2, b0, NULL); |
+ |
+ // (D15 + M4) -> [p1, 2, NULL, D15] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement32Matcher match65( |
+ graph()->NewNode(a_op, d15, m4)); |
+ CheckBaseWithIndexAndDisplacement(&match65, p1, 2, NULL, d15); |
+ |
+ // (M4 + D15) -> [p1, 2, NULL, D15] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement32Matcher match66( |
+ graph()->NewNode(a_op, m4, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match66, p1, 2, NULL, d15); |
+ |
+ // (B0 + S2) -> [p1, 2, B0, NULL] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement32Matcher match67(graph()->NewNode(a_op, b0, s2)); |
+ CheckBaseWithIndexAndDisplacement(&match67, p1, 2, b0, NULL); |
+ |
+ // (S2 + B0) -> [p1, 2, B0, NULL] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement32Matcher match68(graph()->NewNode(a_op, s2, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match68, p1, 2, b0, NULL); |
+ |
+ // (D15 + S2) -> [p1, 2, NULL, D15] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement32Matcher match69( |
+ graph()->NewNode(a_op, d15, s2)); |
+ CheckBaseWithIndexAndDisplacement(&match69, p1, 2, NULL, d15); |
+ |
+ // (S2 + D15) -> [p1, 2, NULL, D15] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement32Matcher match70( |
+ graph()->NewNode(a_op, s2, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match70, p1, 2, NULL, d15); |
+ |
+ // (B0 + M8) -> [p1, 2, B0, NULL] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement32Matcher match71(graph()->NewNode(a_op, b0, m8)); |
+ CheckBaseWithIndexAndDisplacement(&match71, p1, 3, b0, NULL); |
+ |
+ // (M8 + B0) -> [p1, 2, B0, NULL] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement32Matcher match72(graph()->NewNode(a_op, m8, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match72, p1, 3, b0, NULL); |
+ |
+ // (D15 + M8) -> [p1, 2, NULL, D15] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement32Matcher match73( |
+ graph()->NewNode(a_op, d15, m8)); |
+ CheckBaseWithIndexAndDisplacement(&match73, p1, 3, NULL, d15); |
+ |
+ // (M8 + D15) -> [p1, 2, NULL, D15] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement32Matcher match74( |
+ graph()->NewNode(a_op, m8, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match74, p1, 3, NULL, d15); |
+ |
+ // (B0 + S3) -> [p1, 2, B0, NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement32Matcher match75(graph()->NewNode(a_op, b0, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match75, p1, 3, b0, NULL); |
+ |
+ // (S3 + B0) -> [p1, 2, B0, NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement32Matcher match76(graph()->NewNode(a_op, s3, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match76, p1, 3, b0, NULL); |
+ |
+ // (D15 + S3) -> [p1, 2, NULL, D15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement32Matcher match77( |
+ graph()->NewNode(a_op, d15, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match77, p1, 3, NULL, d15); |
+ |
+ // (S3 + D15) -> [p1, 2, NULL, D15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement32Matcher match78( |
+ graph()->NewNode(a_op, s3, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match78, p1, 3, NULL, d15); |
+ |
+ // (D15 + S3) + B0 -> [p1, 2, b0, d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ Node* temp = graph()->NewNode(a_op, d15, s3); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match79( |
+ graph()->NewNode(a_op, temp, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match79, p1, 3, b0, d15); |
+ |
+ // (B0 + D15) + S3 -> [p1, 2, b0, d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, b0, d15); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match80( |
+ graph()->NewNode(a_op, temp, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match80, p1, 3, b0, d15); |
+ |
+ // (S3 + B0) + D15 -> [NULL, 0, (s3 + b0), d15] |
+ // Avoid changing simple addressing to complex addressing |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, s3, b0); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match81( |
+ graph()->NewNode(a_op, temp, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match81, NULL, 0, temp, d15); |
+ |
+ // D15 + (S3 + B0) -> [NULL, 0, (s3 + b0), d15] |
+ // Avoid changing simple addressing to complex addressing |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, s3, b0); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match82( |
+ graph()->NewNode(a_op, d15, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match82, NULL, 0, temp, d15); |
+ |
+ // B0 + (D15 + S3) -> [p1, 2, b0, d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, d15, s3); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match83( |
+ graph()->NewNode(a_op, b0, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match83, p1, 3, b0, d15); |
+ |
+ // S3 + (B0 + D15) -> [p1, 2, b0, d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, b0, d15); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match84( |
+ graph()->NewNode(a_op, s3, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match84, p1, 3, b0, d15); |
+ |
+ // S3 + (B0 - D15) -> [p1, 2, b0, d15, true] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(sub_op, b0, d15); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match85( |
+ graph()->NewNode(a_op, s3, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match85, p1, 3, b0, d15, |
+ kNegativeDisplacement); |
+ |
+ // B0 + (B1 - D15) -> [p1, 2, b0, d15, true] |
+ temp = graph()->NewNode(sub_op, b1, d15); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match86( |
+ graph()->NewNode(a_op, b0, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match86, b1, 0, b0, d15, |
+ kNegativeDisplacement); |
+ |
+ // (B0 - D15) + S3 -> [p1, 2, b0, d15, true] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(sub_op, b0, d15); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match87( |
+ graph()->NewNode(a_op, temp, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match87, p1, 3, b0, d15, |
+ kNegativeDisplacement); |
+ |
+ // (B0 + B1) + D15 -> [NULL, 0, (b0 + b1), d15] |
+ // Avoid changing simple addressing to complex addressing |
+ temp = graph()->NewNode(a_op, b0, b1); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match88( |
+ graph()->NewNode(a_op, temp, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match88, NULL, 0, temp, d15); |
+ |
+ // D15 + (B0 + B1) -> [NULL, 0, (b0 + b1), d15] |
+ // Avoid changing simple addressing to complex addressing |
+ temp = graph()->NewNode(a_op, b0, b1); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match89( |
+ graph()->NewNode(a_op, d15, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match89, NULL, 0, temp, d15); |
+ |
+ // 5 INPUT - with none-addressing operand uses |
+ |
+ // (B0 + M1) -> [b0, 0, m1, NULL] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement32Matcher match90(graph()->NewNode(a_op, b0, m1)); |
+ CheckBaseWithIndexAndDisplacement(&match90, b0, 0, m1, NULL); |
+ |
+ // (M1 + B0) -> [b0, 0, m1, NULL] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement32Matcher match91(graph()->NewNode(a_op, m1, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match91, b0, 0, m1, NULL); |
+ |
+ // (D15 + M1) -> [NULL, 0, m1, d15] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement32Matcher match92( |
+ graph()->NewNode(a_op, d15, m1)); |
+ CheckBaseWithIndexAndDisplacement(&match92, NULL, 0, m1, d15); |
+ |
+ // (M1 + D15) -> [NULL, 0, m1, d15] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement32Matcher match93( |
+ graph()->NewNode(a_op, m1, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match93, NULL, 0, m1, d15); |
+ |
+ // (B0 + S0) -> [b0, 0, s0, NULL] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement32Matcher match94(graph()->NewNode(a_op, b0, s0)); |
+ CheckBaseWithIndexAndDisplacement(&match94, b0, 0, s0, NULL); |
+ |
+ // (S0 + B0) -> [b0, 0, s0, NULL] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement32Matcher match95(graph()->NewNode(a_op, s0, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match95, b0, 0, s0, NULL); |
+ |
+ // (D15 + S0) -> [NULL, 0, s0, d15] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement32Matcher match96( |
+ graph()->NewNode(a_op, d15, s0)); |
+ CheckBaseWithIndexAndDisplacement(&match96, NULL, 0, s0, d15); |
+ |
+ // (S0 + D15) -> [NULL, 0, s0, d15] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement32Matcher match97( |
+ graph()->NewNode(a_op, s0, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match97, NULL, 0, s0, d15); |
+ |
+ // (B0 + M2) -> [b0, 0, m2, NULL] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement32Matcher match98(graph()->NewNode(a_op, b0, m2)); |
+ CheckBaseWithIndexAndDisplacement(&match98, b0, 0, m2, NULL); |
+ |
+ // (M2 + B0) -> [b0, 0, m2, NULL] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement32Matcher match99(graph()->NewNode(a_op, m2, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match99, b0, 0, m2, NULL); |
+ |
+ // (D15 + M2) -> [NULL, 0, m2, d15] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement32Matcher match100( |
+ graph()->NewNode(a_op, d15, m2)); |
+ CheckBaseWithIndexAndDisplacement(&match100, NULL, 0, m2, d15); |
+ |
+ // (M2 + D15) -> [NULL, 0, m2, d15] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement32Matcher match101( |
+ graph()->NewNode(a_op, m2, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match101, NULL, 0, m2, d15); |
+ |
+ // (B0 + S1) -> [b0, 0, s1, NULL] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement32Matcher match102( |
+ graph()->NewNode(a_op, b0, s1)); |
+ CheckBaseWithIndexAndDisplacement(&match102, b0, 0, s1, NULL); |
+ |
+ // (S1 + B0) -> [b0, 0, s1, NULL] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement32Matcher match103( |
+ graph()->NewNode(a_op, s1, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match103, b0, 0, s1, NULL); |
+ |
+ // (D15 + S1) -> [NULL, 0, s1, d15] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement32Matcher match104( |
+ graph()->NewNode(a_op, d15, s1)); |
+ CheckBaseWithIndexAndDisplacement(&match104, NULL, 0, s1, d15); |
+ |
+ // (S1 + D15) -> [NULL, 0, s1, d15] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement32Matcher match105( |
+ graph()->NewNode(a_op, s1, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match105, NULL, 0, s1, d15); |
+ |
+ // (B0 + M4) -> [b0, 0, m4, NULL] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement32Matcher match106( |
+ graph()->NewNode(a_op, b0, m4)); |
+ CheckBaseWithIndexAndDisplacement(&match106, b0, 0, m4, NULL); |
+ |
+ // (M4 + B0) -> [b0, 0, m4, NULL] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement32Matcher match107( |
+ graph()->NewNode(a_op, m4, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match107, b0, 0, m4, NULL); |
+ |
+ // (D15 + M4) -> [NULL, 0, m4, d15] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement32Matcher match108( |
+ graph()->NewNode(a_op, d15, m4)); |
+ CheckBaseWithIndexAndDisplacement(&match108, NULL, 0, m4, d15); |
+ |
+ // (M4 + D15) -> [NULL, 0, m4, d15] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement32Matcher match109( |
+ graph()->NewNode(a_op, m4, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match109, NULL, 0, m4, d15); |
+ |
+ // (B0 + S2) -> [b0, 0, s2, NULL] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement32Matcher match110( |
+ graph()->NewNode(a_op, b0, s2)); |
+ CheckBaseWithIndexAndDisplacement(&match110, b0, 0, s2, NULL); |
+ |
+ // (S2 + B0) -> [b0, 0, s2, NULL] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement32Matcher match111( |
+ graph()->NewNode(a_op, s2, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match111, b0, 0, s2, NULL); |
+ |
+ // (D15 + S2) -> [NULL, 0, s2, d15] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement32Matcher match112( |
+ graph()->NewNode(a_op, d15, s2)); |
+ CheckBaseWithIndexAndDisplacement(&match112, NULL, 0, s2, d15); |
+ |
+ // (S2 + D15) -> [NULL, 0, s2, d15] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement32Matcher match113( |
+ graph()->NewNode(a_op, s2, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match113, NULL, 0, s2, d15); |
+ |
+ // (B0 + M8) -> [b0, 0, m8, NULL] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement32Matcher match114( |
+ graph()->NewNode(a_op, b0, m8)); |
+ CheckBaseWithIndexAndDisplacement(&match114, b0, 0, m8, NULL); |
+ |
+ // (M8 + B0) -> [b0, 0, m8, NULL] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement32Matcher match115( |
+ graph()->NewNode(a_op, m8, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match115, b0, 0, m8, NULL); |
+ |
+ // (D15 + M8) -> [NULL, 0, m8, d15] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement32Matcher match116( |
+ graph()->NewNode(a_op, d15, m8)); |
+ CheckBaseWithIndexAndDisplacement(&match116, NULL, 0, m8, d15); |
+ |
+ // (M8 + D15) -> [NULL, 0, m8, d15] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement32Matcher match117( |
+ graph()->NewNode(a_op, m8, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match117, NULL, 0, m8, d15); |
+ |
+ // (B0 + S3) -> [b0, 0, s3, NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement32Matcher match118( |
+ graph()->NewNode(a_op, b0, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match118, b0, 0, s3, NULL); |
+ |
+ // (S3 + B0) -> [b0, 0, s3, NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement32Matcher match119( |
+ graph()->NewNode(a_op, s3, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match119, b0, 0, s3, NULL); |
+ |
+ // (D15 + S3) -> [NULL, 0, s3, d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement32Matcher match120( |
+ graph()->NewNode(a_op, d15, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match120, NULL, 0, s3, d15); |
+ |
+ // (S3 + D15) -> [NULL, 0, s3, d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement32Matcher match121( |
+ graph()->NewNode(a_op, s3, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match121, NULL, 0, s3, d15); |
+ |
+ // (D15 + S3) + B0 -> [b0, 0, (D15 + S3), NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, d15, s3); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match122( |
+ graph()->NewNode(a_op, temp, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match122, b0, 0, temp, NULL); |
+ |
+ // (B0 + D15) + S3 -> [p1, 3, (B0 + D15), NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, b0, d15); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match123( |
+ graph()->NewNode(a_op, temp, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match123, p1, 3, temp, NULL); |
+ |
+ // (S3 + B0) + D15 -> [NULL, 0, (S3 + B0), d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, s3, b0); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match124( |
+ graph()->NewNode(a_op, temp, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match124, NULL, 0, temp, d15); |
+ |
+ // D15 + (S3 + B0) -> [NULL, 0, (S3 + B0), d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, s3, b0); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match125( |
+ graph()->NewNode(a_op, d15, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match125, NULL, 0, temp, d15); |
+ |
+ // B0 + (D15 + S3) -> [b0, 0, (D15 + S3), NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, d15, s3); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match126( |
+ graph()->NewNode(a_op, b0, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match126, b0, 0, temp, NULL); |
+ |
+ // S3 + (B0 + D15) -> [p1, 3, (B0 + D15), NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, b0, d15); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match127( |
+ graph()->NewNode(a_op, s3, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match127, p1, 3, temp, NULL); |
+ |
+ // S3 + (B0 - D15) -> [p1, 3, (B0 - D15), NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(sub_op, b0, d15); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match128( |
+ graph()->NewNode(a_op, s3, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match128, p1, 3, temp, NULL); |
+ |
+ // B0 + (B1 - D15) -> [b0, 0, (B1 - D15), NULL] |
+ temp = graph()->NewNode(sub_op, b1, d15); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match129( |
+ graph()->NewNode(a_op, b0, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match129, b0, 0, temp, NULL); |
+ |
+ // (B0 - D15) + S3 -> [p1, 3, temp, NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(sub_op, b0, d15); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match130( |
+ graph()->NewNode(a_op, temp, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match130, p1, 3, temp, NULL); |
+ |
+ // (B0 + B1) + D15 -> [NULL, 0, (B0 + B1), d15] |
+ temp = graph()->NewNode(a_op, b0, b1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match131( |
+ graph()->NewNode(a_op, temp, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match131, NULL, 0, temp, d15); |
+ |
+ // D15 + (B0 + B1) -> [NULL, 0, (B0 + B1), d15] |
+ temp = graph()->NewNode(a_op, b0, b1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement32Matcher match132( |
+ graph()->NewNode(a_op, d15, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match132, NULL, 0, temp, d15); |
} |
@@ -465,6 +1087,10 @@ TEST_F(NodeMatcherTest, ScaledWithOffset64Matcher) { |
USE(s3); |
USE(s4); |
+ const StoreRepresentation rep(MachineRepresentation::kWord32, |
+ kNoWriteBarrier); |
+ USE(rep); |
+ |
// 1 INPUT |
// Only relevant test dases is Checking for non-match. |
@@ -635,8 +1261,8 @@ TEST_F(NodeMatcherTest, ScaledWithOffset64Matcher) { |
CheckBaseWithIndexAndDisplacement(&match31, p1, 3, NULL, d15); |
// (B0 + S3) -> [p1, 2, B0, NULL] |
- BaseWithIndexAndDisplacement64Matcher match64(graph()->NewNode(a_op, b0, s3)); |
- CheckBaseWithIndexAndDisplacement(&match64, p1, 3, b0, NULL); |
+ BaseWithIndexAndDisplacement64Matcher match32(graph()->NewNode(a_op, b0, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match32, p1, 3, b0, NULL); |
// (S3 + B0) -> [p1, 2, B0, NULL] |
s3 = graph()->NewNode(s_op, p1, d3); |
@@ -772,6 +1398,617 @@ TEST_F(NodeMatcherTest, ScaledWithOffset64Matcher) { |
graph()->NewNode(a_op, graph()->NewNode(sub_op, b0, d15), s3)); |
CheckBaseWithIndexAndDisplacement(&match53, p1, 3, b0, d15, |
kNegativeDisplacement); |
+ |
+ // 4 INPUT - with addressing operand uses |
+ |
+ // (B0 + M1) -> [p1, 0, B0, NULL] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement64Matcher match54(graph()->NewNode(a_op, b0, m1)); |
+ CheckBaseWithIndexAndDisplacement(&match54, p1, 0, b0, NULL); |
+ |
+ // (M1 + B0) -> [p1, 0, B0, NULL] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement64Matcher match55(graph()->NewNode(a_op, m1, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match55, p1, 0, b0, NULL); |
+ |
+ // (D15 + M1) -> [P1, 0, NULL, D15] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement64Matcher match56( |
+ graph()->NewNode(a_op, d15, m1)); |
+ CheckBaseWithIndexAndDisplacement(&match56, p1, 0, NULL, d15); |
+ |
+ // (M1 + D15) -> [P1, 0, NULL, D15] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement64Matcher match57( |
+ graph()->NewNode(a_op, m1, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match57, p1, 0, NULL, d15); |
+ |
+ // (B0 + S0) -> [p1, 0, B0, NULL] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement64Matcher match58(graph()->NewNode(a_op, b0, s0)); |
+ CheckBaseWithIndexAndDisplacement(&match58, p1, 0, b0, NULL); |
+ |
+ // (S0 + B0) -> [p1, 0, B0, NULL] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement64Matcher match59(graph()->NewNode(a_op, s0, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match59, p1, 0, b0, NULL); |
+ |
+ // (D15 + S0) -> [P1, 0, NULL, D15] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement64Matcher match60( |
+ graph()->NewNode(a_op, d15, s0)); |
+ CheckBaseWithIndexAndDisplacement(&match60, p1, 0, NULL, d15); |
+ |
+ // (S0 + D15) -> [P1, 0, NULL, D15] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement64Matcher match61( |
+ graph()->NewNode(a_op, s0, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match61, p1, 0, NULL, d15); |
+ |
+ // (B0 + M2) -> [p1, 1, B0, NULL] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement64Matcher match62(graph()->NewNode(a_op, b0, m2)); |
+ CheckBaseWithIndexAndDisplacement(&match62, p1, 1, b0, NULL); |
+ |
+ // (M2 + B0) -> [p1, 1, B0, NULL] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement64Matcher match63(graph()->NewNode(a_op, m2, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match63, p1, 1, b0, NULL); |
+ |
+ // (D15 + M2) -> [P1, 1, NULL, D15] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement64Matcher match64( |
+ graph()->NewNode(a_op, d15, m2)); |
+ CheckBaseWithIndexAndDisplacement(&match64, p1, 1, NULL, d15); |
+ |
+ // (M2 + D15) -> [P1, 1, NULL, D15] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement64Matcher match65( |
+ graph()->NewNode(a_op, m2, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match65, p1, 1, NULL, d15); |
+ |
+ // (B0 + S1) -> [p1, 1, B0, NULL] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement64Matcher match66(graph()->NewNode(a_op, b0, s1)); |
+ CheckBaseWithIndexAndDisplacement(&match66, p1, 1, b0, NULL); |
+ |
+ // (S1 + B0) -> [p1, 1, B0, NULL] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement64Matcher match67(graph()->NewNode(a_op, s1, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match67, p1, 1, b0, NULL); |
+ |
+ // (D15 + S1) -> [P1, 1, NULL, D15] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement64Matcher match68( |
+ graph()->NewNode(a_op, d15, s1)); |
+ CheckBaseWithIndexAndDisplacement(&match68, p1, 1, NULL, d15); |
+ |
+ // (S1 + D15) -> [P1, 1, NULL, D15] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement64Matcher match69( |
+ graph()->NewNode(a_op, s1, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match69, p1, 1, NULL, d15); |
+ |
+ // (B0 + M4) -> [p1, 2, B0, NULL] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement64Matcher match70(graph()->NewNode(a_op, b0, m4)); |
+ CheckBaseWithIndexAndDisplacement(&match70, p1, 2, b0, NULL); |
+ |
+ // (M4 + B0) -> [p1, 2, B0, NULL] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement64Matcher match71(graph()->NewNode(a_op, m4, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match71, p1, 2, b0, NULL); |
+ |
+ // (D15 + M4) -> [p1, 2, NULL, D15] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement64Matcher match72( |
+ graph()->NewNode(a_op, d15, m4)); |
+ CheckBaseWithIndexAndDisplacement(&match72, p1, 2, NULL, d15); |
+ |
+ // (M4 + D15) -> [p1, 2, NULL, D15] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement64Matcher match73( |
+ graph()->NewNode(a_op, m4, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match73, p1, 2, NULL, d15); |
+ |
+ // (B0 + S2) -> [p1, 2, B0, NULL] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement64Matcher match74(graph()->NewNode(a_op, b0, s2)); |
+ CheckBaseWithIndexAndDisplacement(&match74, p1, 2, b0, NULL); |
+ |
+ // (S2 + B0) -> [p1, 2, B0, NULL] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement64Matcher match75(graph()->NewNode(a_op, s2, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match75, p1, 2, b0, NULL); |
+ |
+ // (D15 + S2) -> [p1, 2, NULL, D15] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement64Matcher match76( |
+ graph()->NewNode(a_op, d15, s2)); |
+ CheckBaseWithIndexAndDisplacement(&match76, p1, 2, NULL, d15); |
+ |
+ // (S2 + D15) -> [p1, 2, NULL, D15] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement64Matcher match77( |
+ graph()->NewNode(a_op, s2, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match77, p1, 2, NULL, d15); |
+ |
+ // (B0 + M8) -> [p1, 2, B0, NULL] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement64Matcher match78(graph()->NewNode(a_op, b0, m8)); |
+ CheckBaseWithIndexAndDisplacement(&match78, p1, 3, b0, NULL); |
+ |
+ // (M8 + B0) -> [p1, 2, B0, NULL] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement64Matcher match79(graph()->NewNode(a_op, m8, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match79, p1, 3, b0, NULL); |
+ |
+ // (D15 + M8) -> [p1, 2, NULL, D15] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement64Matcher match80( |
+ graph()->NewNode(a_op, d15, m8)); |
+ CheckBaseWithIndexAndDisplacement(&match80, p1, 3, NULL, d15); |
+ |
+ // (M8 + D15) -> [p1, 2, NULL, D15] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement64Matcher match81( |
+ graph()->NewNode(a_op, m8, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match81, p1, 3, NULL, d15); |
+ |
+ // (B0 + S3) -> [p1, 2, B0, NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement64Matcher match82(graph()->NewNode(a_op, b0, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match82, p1, 3, b0, NULL); |
+ |
+ // (S3 + B0) -> [p1, 2, B0, NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement64Matcher match83(graph()->NewNode(a_op, s3, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match83, p1, 3, b0, NULL); |
+ |
+ // (D15 + S3) -> [p1, 2, NULL, D15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement64Matcher match84( |
+ graph()->NewNode(a_op, d15, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match84, p1, 3, NULL, d15); |
+ |
+ // (S3 + D15) -> [p1, 2, NULL, D15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement64Matcher match85( |
+ graph()->NewNode(a_op, s3, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match85, p1, 3, NULL, d15); |
+ |
+ // (D15 + S3) + B0 -> [p1, 2, b0, d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, d15, s3); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match86( |
+ graph()->NewNode(a_op, temp, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match86, p1, 3, b0, d15); |
+ |
+ // (B0 + D15) + S3 -> [p1, 2, b0, d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, b0, d15); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match87( |
+ graph()->NewNode(a_op, temp, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match87, p1, 3, b0, d15); |
+ |
+ // (S3 + B0) + D15 -> [NULL, 0, (s3 + b0), d15] |
+ // Avoid changing simple addressing to complex addressing |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, s3, b0); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match88( |
+ graph()->NewNode(a_op, temp, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match88, NULL, 0, temp, d15); |
+ |
+ // D15 + (S3 + B0) -> [NULL, 0, (s3 + b0), d15] |
+ // Avoid changing simple addressing to complex addressing |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, s3, b0); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match89( |
+ graph()->NewNode(a_op, d15, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match89, NULL, 0, temp, d15); |
+ |
+ // B0 + (D15 + S3) -> [p1, 2, b0, d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, d15, s3); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match90( |
+ graph()->NewNode(a_op, b0, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match90, p1, 3, b0, d15); |
+ |
+ // S3 + (B0 + D15) -> [p1, 2, b0, d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, b0, d15); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match91( |
+ graph()->NewNode(a_op, s3, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match91, p1, 3, b0, d15); |
+ |
+ // S3 + (B0 - D15) -> [p1, 2, b0, d15, true] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(sub_op, b0, d15); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match92( |
+ graph()->NewNode(a_op, s3, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match92, p1, 3, b0, d15, |
+ kNegativeDisplacement); |
+ |
+ // B0 + (B1 - D15) -> [p1, 2, b0, d15, true] |
+ temp = graph()->NewNode(sub_op, b1, d15); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match93( |
+ graph()->NewNode(a_op, b0, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match93, b1, 0, b0, d15, |
+ kNegativeDisplacement); |
+ |
+ // (B0 - D15) + S3 -> [p1, 2, b0, d15, true] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(sub_op, b0, d15); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match94( |
+ graph()->NewNode(a_op, temp, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match94, p1, 3, b0, d15, |
+ kNegativeDisplacement); |
+ |
+ // (B0 + B1) + D15 -> [NULL, 0, (b0 + b1), d15] |
+ // Avoid changing simple addressing to complex addressing |
+ temp = graph()->NewNode(a_op, b0, b1); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match95( |
+ graph()->NewNode(a_op, temp, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match95, NULL, 0, temp, d15); |
+ |
+ // D15 + (B0 + B1) -> [NULL, 0, (b0 + b1), d15] |
+ // Avoid changing simple addressing to complex addressing |
+ temp = graph()->NewNode(a_op, b0, b1); |
+ ADD_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match96( |
+ graph()->NewNode(a_op, d15, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match96, NULL, 0, temp, d15); |
+ |
+ // 5 INPUT - with none-addressing operand uses |
+ |
+ // (B0 + M1) -> [b0, 0, m1, NULL] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement64Matcher match97(graph()->NewNode(a_op, b0, m1)); |
+ CheckBaseWithIndexAndDisplacement(&match97, b0, 0, m1, NULL); |
+ |
+ // (M1 + B0) -> [b0, 0, m1, NULL] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement64Matcher match98(graph()->NewNode(a_op, m1, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match98, b0, 0, m1, NULL); |
+ |
+ // (D15 + M1) -> [NULL, 0, m1, d15] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement64Matcher match99( |
+ graph()->NewNode(a_op, d15, m1)); |
+ CheckBaseWithIndexAndDisplacement(&match99, NULL, 0, m1, d15); |
+ |
+ // (M1 + D15) -> [NULL, 0, m1, d15] |
+ m1 = graph()->NewNode(m_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m1); |
+ BaseWithIndexAndDisplacement64Matcher match100( |
+ graph()->NewNode(a_op, m1, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match100, NULL, 0, m1, d15); |
+ |
+ // (B0 + S0) -> [b0, 0, s0, NULL] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement64Matcher match101( |
+ graph()->NewNode(a_op, b0, s0)); |
+ CheckBaseWithIndexAndDisplacement(&match101, b0, 0, s0, NULL); |
+ |
+ // (S0 + B0) -> [b0, 0, s0, NULL] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement64Matcher match102( |
+ graph()->NewNode(a_op, s0, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match102, b0, 0, s0, NULL); |
+ |
+ // (D15 + S0) -> [NULL, 0, s0, d15] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement64Matcher match103( |
+ graph()->NewNode(a_op, d15, s0)); |
+ CheckBaseWithIndexAndDisplacement(&match103, NULL, 0, s0, d15); |
+ |
+ // (S0 + D15) -> [NULL, 0, s0, d15] |
+ s0 = graph()->NewNode(s_op, p1, d0); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s0); |
+ BaseWithIndexAndDisplacement64Matcher match104( |
+ graph()->NewNode(a_op, s0, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match104, NULL, 0, s0, d15); |
+ |
+ // (B0 + M2) -> [b0, 0, m2, NULL] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement64Matcher match105( |
+ graph()->NewNode(a_op, b0, m2)); |
+ CheckBaseWithIndexAndDisplacement(&match105, b0, 0, m2, NULL); |
+ |
+ // (M2 + B0) -> [b0, 0, m2, NULL] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement64Matcher match106( |
+ graph()->NewNode(a_op, m2, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match106, b0, 0, m2, NULL); |
+ |
+ // (D15 + M2) -> [NULL, 0, m2, d15] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement64Matcher match107( |
+ graph()->NewNode(a_op, d15, m2)); |
+ CheckBaseWithIndexAndDisplacement(&match107, NULL, 0, m2, d15); |
+ |
+ // (M2 + D15) -> [NULL, 0, m2, d15] |
+ m2 = graph()->NewNode(m_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m2); |
+ BaseWithIndexAndDisplacement64Matcher match108( |
+ graph()->NewNode(a_op, m2, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match108, NULL, 0, m2, d15); |
+ |
+ // (B0 + S1) -> [b0, 0, s1, NULL] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement64Matcher match109( |
+ graph()->NewNode(a_op, b0, s1)); |
+ CheckBaseWithIndexAndDisplacement(&match109, b0, 0, s1, NULL); |
+ |
+ // (S1 + B0) -> [b0, 0, s1, NULL] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement64Matcher match110( |
+ graph()->NewNode(a_op, s1, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match110, b0, 0, s1, NULL); |
+ |
+ // (D15 + S1) -> [NULL, 0, s1, d15] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement64Matcher match111( |
+ graph()->NewNode(a_op, d15, s1)); |
+ CheckBaseWithIndexAndDisplacement(&match111, NULL, 0, s1, d15); |
+ |
+ // (S1 + D15) -> [NULL, 0, s1, d15] |
+ s1 = graph()->NewNode(s_op, p1, d1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s1); |
+ BaseWithIndexAndDisplacement64Matcher match112( |
+ graph()->NewNode(a_op, s1, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match112, NULL, 0, s1, d15); |
+ |
+ // (B0 + M4) -> [b0, 0, m4, NULL] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement64Matcher match113( |
+ graph()->NewNode(a_op, b0, m4)); |
+ CheckBaseWithIndexAndDisplacement(&match113, b0, 0, m4, NULL); |
+ |
+ // (M4 + B0) -> [b0, 0, m4, NULL] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement64Matcher match114( |
+ graph()->NewNode(a_op, m4, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match114, b0, 0, m4, NULL); |
+ |
+ // (D15 + M4) -> [NULL, 0, m4, d15] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement64Matcher match115( |
+ graph()->NewNode(a_op, d15, m4)); |
+ CheckBaseWithIndexAndDisplacement(&match115, NULL, 0, m4, d15); |
+ |
+ // (M4 + D15) -> [NULL, 0, m4, d15] |
+ m4 = graph()->NewNode(m_op, p1, d4); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m4); |
+ BaseWithIndexAndDisplacement64Matcher match116( |
+ graph()->NewNode(a_op, m4, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match116, NULL, 0, m4, d15); |
+ |
+ // (B0 + S2) -> [b0, 0, s2, NULL] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement64Matcher match117( |
+ graph()->NewNode(a_op, b0, s2)); |
+ CheckBaseWithIndexAndDisplacement(&match117, b0, 0, s2, NULL); |
+ |
+ // (S2 + B0) -> [b0, 0, s2, NULL] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement64Matcher match118( |
+ graph()->NewNode(a_op, s2, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match118, b0, 0, s2, NULL); |
+ |
+ // (D15 + S2) -> [NULL, 0, s2, d15] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement64Matcher match119( |
+ graph()->NewNode(a_op, d15, s2)); |
+ CheckBaseWithIndexAndDisplacement(&match119, NULL, 0, s2, d15); |
+ |
+ // (S2 + D15) -> [NULL, 0, s2, d15] |
+ s2 = graph()->NewNode(s_op, p1, d2); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s2); |
+ BaseWithIndexAndDisplacement64Matcher match120( |
+ graph()->NewNode(a_op, s2, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match120, NULL, 0, s2, d15); |
+ |
+ // (B0 + M8) -> [b0, 0, m8, NULL] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement64Matcher match121( |
+ graph()->NewNode(a_op, b0, m8)); |
+ CheckBaseWithIndexAndDisplacement(&match121, b0, 0, m8, NULL); |
+ |
+ // (M8 + B0) -> [b0, 0, m8, NULL] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement64Matcher match122( |
+ graph()->NewNode(a_op, m8, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match122, b0, 0, m8, NULL); |
+ |
+ // (D15 + M8) -> [NULL, 0, m8, d15] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement64Matcher match123( |
+ graph()->NewNode(a_op, d15, m8)); |
+ CheckBaseWithIndexAndDisplacement(&match123, NULL, 0, m8, d15); |
+ |
+ // (M8 + D15) -> [NULL, 0, m8, d15] |
+ m8 = graph()->NewNode(m_op, p1, d8); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(m8); |
+ BaseWithIndexAndDisplacement64Matcher match124( |
+ graph()->NewNode(a_op, m8, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match124, NULL, 0, m8, d15); |
+ |
+ // (B0 + S3) -> [b0, 0, s3, NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement64Matcher match125( |
+ graph()->NewNode(a_op, b0, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match125, b0, 0, s3, NULL); |
+ |
+ // (S3 + B0) -> [b0, 0, s3, NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement64Matcher match126( |
+ graph()->NewNode(a_op, s3, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match126, b0, 0, s3, NULL); |
+ |
+ // (D15 + S3) -> [NULL, 0, s3, d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement64Matcher match127( |
+ graph()->NewNode(a_op, d15, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match127, NULL, 0, s3, d15); |
+ |
+ // (S3 + D15) -> [NULL, 0, s3, d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(s3); |
+ BaseWithIndexAndDisplacement64Matcher match128( |
+ graph()->NewNode(a_op, s3, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match128, NULL, 0, s3, d15); |
+ |
+ // (D15 + S3) + B0 -> [b0, 0, (D15 + S3), NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, d15, s3); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match129( |
+ graph()->NewNode(a_op, temp, b0)); |
+ CheckBaseWithIndexAndDisplacement(&match129, b0, 0, temp, NULL); |
+ |
+ // (B0 + D15) + S3 -> [p1, 3, (B0 + D15), NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, b0, d15); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match130( |
+ graph()->NewNode(a_op, temp, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match130, p1, 3, temp, NULL); |
+ |
+ // (S3 + B0) + D15 -> [NULL, 0, (S3 + B0), d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, s3, b0); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match131( |
+ graph()->NewNode(a_op, temp, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match131, NULL, 0, temp, d15); |
+ |
+ // D15 + (S3 + B0) -> [NULL, 0, (S3 + B0), d15] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, s3, b0); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match132( |
+ graph()->NewNode(a_op, d15, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match132, NULL, 0, temp, d15); |
+ |
+ // B0 + (D15 + S3) -> [b0, 0, (D15 + S3), NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, d15, s3); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match133( |
+ graph()->NewNode(a_op, b0, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match133, b0, 0, temp, NULL); |
+ |
+ // S3 + (B0 + D15) -> [p1, 3, (B0 + D15), NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(a_op, b0, d15); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match134( |
+ graph()->NewNode(a_op, s3, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match134, p1, 3, temp, NULL); |
+ |
+ // S3 + (B0 - D15) -> [p1, 3, (B0 - D15), NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(sub_op, b0, d15); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match135( |
+ graph()->NewNode(a_op, s3, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match135, p1, 3, temp, NULL); |
+ |
+ // B0 + (B1 - D15) -> [b0, 0, (B1 - D15), NULL] |
+ temp = graph()->NewNode(sub_op, b1, d15); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match136( |
+ graph()->NewNode(a_op, b0, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match136, b0, 0, temp, NULL); |
+ |
+ // (B0 - D15) + S3 -> [p1, 3, temp, NULL] |
+ s3 = graph()->NewNode(s_op, p1, d3); |
+ temp = graph()->NewNode(sub_op, b0, d15); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match137( |
+ graph()->NewNode(a_op, temp, s3)); |
+ CheckBaseWithIndexAndDisplacement(&match137, p1, 3, temp, NULL); |
+ |
+ // (B0 + B1) + D15 -> [NULL, 0, (B0 + B1), d15] |
+ temp = graph()->NewNode(a_op, b0, b1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match138( |
+ graph()->NewNode(a_op, temp, d15)); |
+ CheckBaseWithIndexAndDisplacement(&match138, NULL, 0, temp, d15); |
+ |
+ // D15 + (B0 + B1) -> [NULL, 0, (B0 + B1), d15] |
+ temp = graph()->NewNode(a_op, b0, b1); |
+ ADD_NONE_ADDRESSING_OPERAND_USES(temp); |
+ BaseWithIndexAndDisplacement64Matcher match139( |
+ graph()->NewNode(a_op, d15, temp)); |
+ CheckBaseWithIndexAndDisplacement(&match139, NULL, 0, temp, d15); |
} |
TEST_F(NodeMatcherTest, BranchMatcher_match) { |