From 8fa00adfd1352656820bd4e1d8616d68a19830d6 Mon Sep 17 00:00:00 2001 From: Philipp Grulich Date: Thu, 8 Aug 2024 08:09:06 +0200 Subject: [PATCH] fix argument handling for root basic block --- .../test/data/after_ssa/addArrayInt32.trace | 25 ++++++++ .../test/data/after_ssa/andCondition.trace | 16 +++++ .../test/data/after_ssa/andFunction.trace | 15 +++++ .../test/data/after_ssa/castVoidPtr.trace | 7 +++ nautilus/test/data/after_ssa/collatz.trace | 31 ++++++++++ .../after_ssa/complexLogicalExpressions.trace | 21 +++++++ .../data/after_ssa/compoundStatements.trace | 14 +++++ .../data/after_ssa/conditionalReturn.trace | 12 ++++ .../test/data/after_ssa/countDigits.trace | 16 +++++ .../test/data/after_ssa/decimalToBinary.trace | 21 +++++++ .../deeplyNestedIfElseCondition.trace | 47 ++++++++++++++ .../deeplyNestedIfElseIfCondition.trace | 38 ++++++++++++ nautilus/test/data/after_ssa/digitSum.trace | 17 +++++ .../data/after_ssa/doubleIfCondition.trace | 25 ++++++++ .../test/data/after_ssa/elseOnlySumLoop.trace | 26 ++++++++ nautilus/test/data/after_ssa/factorial.trace | 15 +++++ nautilus/test/data/after_ssa/fibonacci.trace | 16 +++++ nautilus/test/data/after_ssa/gcd.trace | 12 ++++ .../data/after_ssa/ifElseIfCondition.trace | 27 ++++++++ .../test/data/after_ssa/ifElseSumLoop.trace | 28 +++++++++ .../test/data/after_ssa/ifInsideLoop.trace | 26 ++++++++ nautilus/test/data/after_ssa/ifNotEqual.trace | 12 ++++ nautilus/test/data/after_ssa/ifSumLoop.trace | 26 ++++++++ .../test/data/after_ssa/ifThenCondition.trace | 16 +++++ .../data/after_ssa/ifThenElseCondition.trace | 18 ++++++ .../data/after_ssa/ifWithFunctionCall.trace | 14 +++++ .../test/data/after_ssa/ifWithTernary.trace | 22 +++++++ nautilus/test/data/after_ssa/isPrime.trace | 30 +++++++++ nautilus/test/data/after_ssa/logicalAnd.trace | 15 +++++ nautilus/test/data/after_ssa/logicalOr.trace | 15 +++++ nautilus/test/data/after_ssa/logicalXOR.trace | 15 +++++ .../test/data/after_ssa/loopDirectCall.trace | 14 +++++ .../data/after_ssa/multipleConditions.trace | 18 ++++++ .../after_ssa/nestedElseOnlySumLoop.trace | 37 +++++++++++ nautilus/test/data/after_ssa/nestedIf.trace | 19 ++++++ .../nestedIfElseDifferentLevels.trace | 27 ++++++++ .../data/after_ssa/nestedIfElseSumLoop.trace | 39 ++++++++++++ .../after_ssa/nestedIfNoElseCondition.trace | 28 +++++++++ .../test/data/after_ssa/nestedIfSumLoop.trace | 37 +++++++++++ .../after_ssa/nestedIfThenElseCondition.trace | 24 +++++++ .../test/data/after_ssa/nestedSumLoop.trace | 25 ++++++++ .../test/data/after_ssa/orCondition.trace | 16 +++++ .../data/after_ssa/passCustomStruct.trace | 3 + .../test/data/after_ssa/reverseNumber.trace | 19 ++++++ .../after_ssa/shortCircuitEvaluation.trace | 17 +++++ .../data/after_ssa/simpleDirectCall.trace | 3 + .../test/data/after_ssa/specializeType.trace | 3 + nautilus/test/data/after_ssa/staticLoop.trace | 23 +++++++ .../data/after_ssa/staticLoopIncrement.trace | 23 +++++++ .../after_ssa/staticLoopWithDynamicLoop.trace | 52 ++++++++++++++++ .../after_ssa/staticWhileLoopDecrement.trace | 25 ++++++++ nautilus/test/data/after_ssa/sumArray.trace | 18 ++++++ nautilus/test/data/after_ssa/sumLoop.trace | 15 +++++ .../test/data/after_ssa/sumOfNumbers.trace | 14 +++++ .../test/data/after_ssa/sumOfSquares.trace | 15 +++++ nautilus/test/data/after_ssa/useWrapper.trace | 5 ++ .../data/after_ssa/varyingComplexity.trace | 31 ++++++++++ .../test/data/after_ssa/voidFuncCall.trace | 3 + .../test/data/tracing/addArrayInt32.trace | 35 +++++++++++ nautilus/test/data/tracing/andCondition.trace | 15 +++++ nautilus/test/data/tracing/andFunction.trace | 21 +++++++ nautilus/test/data/tracing/castVoidPtr.trace | 9 +++ nautilus/test/data/tracing/collatz.trace | 36 +++++++++++ .../tracing/complexLogicalExpressions.trace | 20 ++++++ .../data/tracing/compoundStatements.trace | 14 +++++ .../test/data/tracing/conditionalReturn.trace | 10 +++ nautilus/test/data/tracing/countDigits.trace | 19 ++++++ .../test/data/tracing/decimalToBinary.trace | 25 ++++++++ .../tracing/deeplyNestedIfElseCondition.trace | 56 +++++++++++++++++ .../deeplyNestedIfElseIfCondition.trace | 46 ++++++++++++++ nautilus/test/data/tracing/digitSum.trace | 20 ++++++ .../test/data/tracing/doubleIfCondition.trace | 30 +++++++++ .../test/data/tracing/elseOnlySumLoop.trace | 30 +++++++++ nautilus/test/data/tracing/factorial.trace | 19 ++++++ nautilus/test/data/tracing/fibonacci.trace | 20 ++++++ nautilus/test/data/tracing/gcd.trace | 16 +++++ .../test/data/tracing/ifElseIfCondition.trace | 33 ++++++++++ .../test/data/tracing/ifElseSumLoop.trace | 33 ++++++++++ nautilus/test/data/tracing/ifInsideLoop.trace | 29 +++++++++ nautilus/test/data/tracing/ifNotEqual.trace | 11 ++++ nautilus/test/data/tracing/ifSumLoop.trace | 30 +++++++++ .../test/data/tracing/ifThenCondition.trace | 18 ++++++ .../data/tracing/ifThenElseCondition.trace | 21 +++++++ .../data/tracing/ifWithFunctionCall.trace | 14 +++++ .../test/data/tracing/ifWithTernary.trace | 23 +++++++ nautilus/test/data/tracing/isPrime.trace | 29 +++++++++ nautilus/test/data/tracing/logicalAnd.trace | 14 +++++ nautilus/test/data/tracing/logicalOr.trace | 14 +++++ nautilus/test/data/tracing/logicalXOR.trace | 14 +++++ .../test/data/tracing/loopDirectCall.trace | 20 ++++++ .../data/tracing/multipleConditions.trace | 17 +++++ .../data/tracing/nestedElseOnlySumLoop.trace | 43 +++++++++++++ nautilus/test/data/tracing/nestedIf.trace | 19 ++++++ .../tracing/nestedIfElseDifferentLevels.trace | 29 +++++++++ .../data/tracing/nestedIfElseSumLoop.trace | 46 ++++++++++++++ .../tracing/nestedIfNoElseCondition.trace | 34 ++++++++++ .../test/data/tracing/nestedIfSumLoop.trace | 43 +++++++++++++ .../tracing/nestedIfThenElseCondition.trace | 29 +++++++++ .../test/data/tracing/nestedSumLoop.trace | 28 +++++++++ nautilus/test/data/tracing/orCondition.trace | 15 +++++ .../test/data/tracing/passCustomStruct.trace | 3 + .../test/data/tracing/reverseNumber.trace | 22 +++++++ .../data/tracing/shortCircuitEvaluation.trace | 16 +++++ .../test/data/tracing/simpleDirectCall.trace | 7 +++ .../test/data/tracing/specializeType.trace | 3 + nautilus/test/data/tracing/staticLoop.trace | 33 ++++++++++ .../data/tracing/staticLoopIncrement.trace | 33 ++++++++++ .../tracing/staticLoopWithDynamicLoop.trace | 62 +++++++++++++++++++ .../tracing/staticWhileLoopDecrement.trace | 36 +++++++++++ nautilus/test/data/tracing/sumArray.trace | 23 +++++++ nautilus/test/data/tracing/sumLoop.trace | 17 +++++ nautilus/test/data/tracing/sumOfNumbers.trace | 17 +++++ nautilus/test/data/tracing/sumOfSquares.trace | 17 +++++ nautilus/test/data/tracing/useWrapper.trace | 5 ++ .../test/data/tracing/varyingComplexity.trace | 33 ++++++++++ nautilus/test/data/tracing/voidFuncCall.trace | 7 +++ 116 files changed, 2572 insertions(+) create mode 100644 nautilus/test/data/after_ssa/addArrayInt32.trace create mode 100644 nautilus/test/data/after_ssa/andCondition.trace create mode 100644 nautilus/test/data/after_ssa/andFunction.trace create mode 100644 nautilus/test/data/after_ssa/castVoidPtr.trace create mode 100644 nautilus/test/data/after_ssa/collatz.trace create mode 100644 nautilus/test/data/after_ssa/complexLogicalExpressions.trace create mode 100644 nautilus/test/data/after_ssa/compoundStatements.trace create mode 100644 nautilus/test/data/after_ssa/conditionalReturn.trace create mode 100644 nautilus/test/data/after_ssa/countDigits.trace create mode 100644 nautilus/test/data/after_ssa/decimalToBinary.trace create mode 100644 nautilus/test/data/after_ssa/deeplyNestedIfElseCondition.trace create mode 100644 nautilus/test/data/after_ssa/deeplyNestedIfElseIfCondition.trace create mode 100644 nautilus/test/data/after_ssa/digitSum.trace create mode 100644 nautilus/test/data/after_ssa/doubleIfCondition.trace create mode 100644 nautilus/test/data/after_ssa/elseOnlySumLoop.trace create mode 100644 nautilus/test/data/after_ssa/factorial.trace create mode 100644 nautilus/test/data/after_ssa/fibonacci.trace create mode 100644 nautilus/test/data/after_ssa/gcd.trace create mode 100644 nautilus/test/data/after_ssa/ifElseIfCondition.trace create mode 100644 nautilus/test/data/after_ssa/ifElseSumLoop.trace create mode 100644 nautilus/test/data/after_ssa/ifInsideLoop.trace create mode 100644 nautilus/test/data/after_ssa/ifNotEqual.trace create mode 100644 nautilus/test/data/after_ssa/ifSumLoop.trace create mode 100644 nautilus/test/data/after_ssa/ifThenCondition.trace create mode 100644 nautilus/test/data/after_ssa/ifThenElseCondition.trace create mode 100644 nautilus/test/data/after_ssa/ifWithFunctionCall.trace create mode 100644 nautilus/test/data/after_ssa/ifWithTernary.trace create mode 100644 nautilus/test/data/after_ssa/isPrime.trace create mode 100644 nautilus/test/data/after_ssa/logicalAnd.trace create mode 100644 nautilus/test/data/after_ssa/logicalOr.trace create mode 100644 nautilus/test/data/after_ssa/logicalXOR.trace create mode 100644 nautilus/test/data/after_ssa/loopDirectCall.trace create mode 100644 nautilus/test/data/after_ssa/multipleConditions.trace create mode 100644 nautilus/test/data/after_ssa/nestedElseOnlySumLoop.trace create mode 100644 nautilus/test/data/after_ssa/nestedIf.trace create mode 100644 nautilus/test/data/after_ssa/nestedIfElseDifferentLevels.trace create mode 100644 nautilus/test/data/after_ssa/nestedIfElseSumLoop.trace create mode 100644 nautilus/test/data/after_ssa/nestedIfNoElseCondition.trace create mode 100644 nautilus/test/data/after_ssa/nestedIfSumLoop.trace create mode 100644 nautilus/test/data/after_ssa/nestedIfThenElseCondition.trace create mode 100644 nautilus/test/data/after_ssa/nestedSumLoop.trace create mode 100644 nautilus/test/data/after_ssa/orCondition.trace create mode 100644 nautilus/test/data/after_ssa/passCustomStruct.trace create mode 100644 nautilus/test/data/after_ssa/reverseNumber.trace create mode 100644 nautilus/test/data/after_ssa/shortCircuitEvaluation.trace create mode 100644 nautilus/test/data/after_ssa/simpleDirectCall.trace create mode 100644 nautilus/test/data/after_ssa/specializeType.trace create mode 100644 nautilus/test/data/after_ssa/staticLoop.trace create mode 100644 nautilus/test/data/after_ssa/staticLoopIncrement.trace create mode 100644 nautilus/test/data/after_ssa/staticLoopWithDynamicLoop.trace create mode 100644 nautilus/test/data/after_ssa/staticWhileLoopDecrement.trace create mode 100644 nautilus/test/data/after_ssa/sumArray.trace create mode 100644 nautilus/test/data/after_ssa/sumLoop.trace create mode 100644 nautilus/test/data/after_ssa/sumOfNumbers.trace create mode 100644 nautilus/test/data/after_ssa/sumOfSquares.trace create mode 100644 nautilus/test/data/after_ssa/useWrapper.trace create mode 100644 nautilus/test/data/after_ssa/varyingComplexity.trace create mode 100644 nautilus/test/data/after_ssa/voidFuncCall.trace create mode 100644 nautilus/test/data/tracing/addArrayInt32.trace create mode 100644 nautilus/test/data/tracing/andCondition.trace create mode 100644 nautilus/test/data/tracing/andFunction.trace create mode 100644 nautilus/test/data/tracing/castVoidPtr.trace create mode 100644 nautilus/test/data/tracing/collatz.trace create mode 100644 nautilus/test/data/tracing/complexLogicalExpressions.trace create mode 100644 nautilus/test/data/tracing/compoundStatements.trace create mode 100644 nautilus/test/data/tracing/conditionalReturn.trace create mode 100644 nautilus/test/data/tracing/countDigits.trace create mode 100644 nautilus/test/data/tracing/decimalToBinary.trace create mode 100644 nautilus/test/data/tracing/deeplyNestedIfElseCondition.trace create mode 100644 nautilus/test/data/tracing/deeplyNestedIfElseIfCondition.trace create mode 100644 nautilus/test/data/tracing/digitSum.trace create mode 100644 nautilus/test/data/tracing/doubleIfCondition.trace create mode 100644 nautilus/test/data/tracing/elseOnlySumLoop.trace create mode 100644 nautilus/test/data/tracing/factorial.trace create mode 100644 nautilus/test/data/tracing/fibonacci.trace create mode 100644 nautilus/test/data/tracing/gcd.trace create mode 100644 nautilus/test/data/tracing/ifElseIfCondition.trace create mode 100644 nautilus/test/data/tracing/ifElseSumLoop.trace create mode 100644 nautilus/test/data/tracing/ifInsideLoop.trace create mode 100644 nautilus/test/data/tracing/ifNotEqual.trace create mode 100644 nautilus/test/data/tracing/ifSumLoop.trace create mode 100644 nautilus/test/data/tracing/ifThenCondition.trace create mode 100644 nautilus/test/data/tracing/ifThenElseCondition.trace create mode 100644 nautilus/test/data/tracing/ifWithFunctionCall.trace create mode 100644 nautilus/test/data/tracing/ifWithTernary.trace create mode 100644 nautilus/test/data/tracing/isPrime.trace create mode 100644 nautilus/test/data/tracing/logicalAnd.trace create mode 100644 nautilus/test/data/tracing/logicalOr.trace create mode 100644 nautilus/test/data/tracing/logicalXOR.trace create mode 100644 nautilus/test/data/tracing/loopDirectCall.trace create mode 100644 nautilus/test/data/tracing/multipleConditions.trace create mode 100644 nautilus/test/data/tracing/nestedElseOnlySumLoop.trace create mode 100644 nautilus/test/data/tracing/nestedIf.trace create mode 100644 nautilus/test/data/tracing/nestedIfElseDifferentLevels.trace create mode 100644 nautilus/test/data/tracing/nestedIfElseSumLoop.trace create mode 100644 nautilus/test/data/tracing/nestedIfNoElseCondition.trace create mode 100644 nautilus/test/data/tracing/nestedIfSumLoop.trace create mode 100644 nautilus/test/data/tracing/nestedIfThenElseCondition.trace create mode 100644 nautilus/test/data/tracing/nestedSumLoop.trace create mode 100644 nautilus/test/data/tracing/orCondition.trace create mode 100644 nautilus/test/data/tracing/passCustomStruct.trace create mode 100644 nautilus/test/data/tracing/reverseNumber.trace create mode 100644 nautilus/test/data/tracing/shortCircuitEvaluation.trace create mode 100644 nautilus/test/data/tracing/simpleDirectCall.trace create mode 100644 nautilus/test/data/tracing/specializeType.trace create mode 100644 nautilus/test/data/tracing/staticLoop.trace create mode 100644 nautilus/test/data/tracing/staticLoopIncrement.trace create mode 100644 nautilus/test/data/tracing/staticLoopWithDynamicLoop.trace create mode 100644 nautilus/test/data/tracing/staticWhileLoopDecrement.trace create mode 100644 nautilus/test/data/tracing/sumArray.trace create mode 100644 nautilus/test/data/tracing/sumLoop.trace create mode 100644 nautilus/test/data/tracing/sumOfNumbers.trace create mode 100644 nautilus/test/data/tracing/sumOfSquares.trace create mode 100644 nautilus/test/data/tracing/useWrapper.trace create mode 100644 nautilus/test/data/tracing/varyingComplexity.trace create mode 100644 nautilus/test/data/tracing/voidFuncCall.trace diff --git a/nautilus/test/data/after_ssa/addArrayInt32.trace b/nautilus/test/data/after_ssa/addArrayInt32.trace new file mode 100644 index 00000000..a78366ac --- /dev/null +++ b/nautilus/test/data/after_ssa/addArrayInt32.trace @@ -0,0 +1,25 @@ +B0($1:ptr,$2:ptr,$3:i32) + CONST $4 0 :i32 + JMP $0 B3($4,$3,$1,$2) :void +B1($3:i32,$4:i32,$1:ptr,$2:ptr) + CONST $10 4 :i32 + MUL $11 $4 $10 :i32 + ADD $12 $1 $11 :ptr + LOAD $13 $12 :i32 + CONST $17 4 :i32 + MUL $18 $4 $17 :i32 + ADD $19 $2 $18 :ptr + LOAD $20 $19 :i32 + ADD $21 $13 $20 :i32 + CONST $25 4 :i32 + MUL $26 $4 $25 :i32 + ADD $27 $1 $26 :ptr + STORE $27 $21 :i32 + CONST $28 1 :i32 + ADD $29 $4 $28 :i32 + JMP $0 B3($29,$3,$1,$2) :void +B2() + RETURN $0 :void +B3($4:i32,$3:i32,$1:ptr,$2:ptr) ControlFlowMerge + LT $5 $4 $3 :bool + CMP $6 $5 B1($3,$4,$1,$2) B2() :void diff --git a/nautilus/test/data/after_ssa/andCondition.trace b/nautilus/test/data/after_ssa/andCondition.trace new file mode 100644 index 00000000..3d1975c6 --- /dev/null +++ b/nautilus/test/data/after_ssa/andCondition.trace @@ -0,0 +1,16 @@ +B0($1:i32,$2:i32) + CONST $3 1 :i32 + CONST $4 8 :i32 + EQ $5 $1 $4 :bool + CONST $6 1 :i32 + EQ $7 $2 $6 :bool + AND $8 $5 $7 :bool + CMP $9 $8 B1($3) B2($3) :void +B1($3:i32) + CONST $10 14 :i32 + ADD $11 $3 $10 :i32 + JMP $0 B3($11) :void +B2($3:i32) + JMP $0 B3($3) :void +B3($3:i32) + RETURN $3 :i32 diff --git a/nautilus/test/data/after_ssa/andFunction.trace b/nautilus/test/data/after_ssa/andFunction.trace new file mode 100644 index 00000000..571bc06e --- /dev/null +++ b/nautilus/test/data/after_ssa/andFunction.trace @@ -0,0 +1,15 @@ +B0($1:i32) + CONST $2 :bool + CONST $4 42 :i64 + CAST $5 $1 :i64 + EQ $6 $5 $4 :bool + AND $7 $2 $6 :bool + CONST $9 42 :i64 + CAST $10 $1 :i64 + EQ $11 $10 $9 :bool + AND $12 $7 $11 :bool + CONST $14 42 :i64 + CAST $15 $1 :i64 + EQ $16 $15 $14 :bool + AND $17 $12 $16 :bool + RETURN $17 :bool diff --git a/nautilus/test/data/after_ssa/castVoidPtr.trace b/nautilus/test/data/after_ssa/castVoidPtr.trace new file mode 100644 index 00000000..c029e35c --- /dev/null +++ b/nautilus/test/data/after_ssa/castVoidPtr.trace @@ -0,0 +1,7 @@ +B0($1:ptr) + CONST $2 0 :i32 + CONST $5 4 :i32 + MUL $6 $2 $5 :i32 + ADD $7 $1 $6 :ptr + LOAD $8 $7 :i32 + RETURN $8 :i32 diff --git a/nautilus/test/data/after_ssa/collatz.trace b/nautilus/test/data/after_ssa/collatz.trace new file mode 100644 index 00000000..d5432b3e --- /dev/null +++ b/nautilus/test/data/after_ssa/collatz.trace @@ -0,0 +1,31 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 1 :i32 + JMP $0 B5($2,$1,$3) :void +B1($2:i32,$1:i32) + CONST $6 2 :i32 + MOD $7 $1 $6 :i32 + CONST $8 0 :i32 + EQ $9 $7 $8 :bool + CMP $10 $9 B3($2,$1) B4($2,$1) :void +B2($2:i32) + RETURN $2 :i32 +B3($2:i32,$1:i32) + CONST $11 2 :i32 + DIV $12 $1 $11 :i32 + CONST $13 1 :i32 + JMP $0 B6($12,$2,$13) :void +B4($2:i32,$1:i32) + CONST $18 3 :i32 + MUL $19 $18 $1 :i32 + CONST $20 1 :i32 + ADD $21 $19 $20 :i32 + CONST $22 1 :i32 + JMP $0 B6($21,$2,$22) :void +B5($2:i32,$1:i32,$3:i32) ControlFlowMerge + NEQ $4 $1 $3 :bool + CMP $5 $4 B1($2,$1) B2($2) :void +B6($1:i32,$2:i32,$13:i32) ControlFlowMerge + ADD $14 $2 $13 :i32 + CONST $15 1 :i32 + JMP $0 B5($14,$1,$15) :void diff --git a/nautilus/test/data/after_ssa/complexLogicalExpressions.trace b/nautilus/test/data/after_ssa/complexLogicalExpressions.trace new file mode 100644 index 00000000..8034751d --- /dev/null +++ b/nautilus/test/data/after_ssa/complexLogicalExpressions.trace @@ -0,0 +1,21 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 5 :i32 + GT $4 $1 $3 :bool + CONST $5 10 :i32 + LT $6 $1 $5 :bool + AND $7 $4 $6 :bool + CONST $8 15 :i32 + GT $9 $1 $8 :bool + CONST $10 20 :i32 + LT $11 $1 $10 :bool + AND $12 $9 $11 :bool + OR $13 $7 $12 :bool + CMP $14 $13 B1() B2($2) :void +B1() + CONST $15 1 :i32 + JMP $0 B3($15) :void +B2($2:i32) + JMP $0 B3($2) :void +B3($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/compoundStatements.trace b/nautilus/test/data/after_ssa/compoundStatements.trace new file mode 100644 index 00000000..127ee009 --- /dev/null +++ b/nautilus/test/data/after_ssa/compoundStatements.trace @@ -0,0 +1,14 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 5 :i32 + GT $4 $1 $3 :bool + CMP $5 $4 B1() B2($2) :void +B1() + CONST $6 1 :i32 + CONST $7 2 :i32 + MUL $8 $6 $7 :i32 + JMP $0 B3($8) :void +B2($2:i32) + JMP $0 B3($2) :void +B3($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/conditionalReturn.trace b/nautilus/test/data/after_ssa/conditionalReturn.trace new file mode 100644 index 00000000..092f9896 --- /dev/null +++ b/nautilus/test/data/after_ssa/conditionalReturn.trace @@ -0,0 +1,12 @@ +B0($1:i32) + CONST $2 42 :i32 + EQ $3 $1 $2 :bool + CMP $4 $3 B1() B2() :void +B1() + CONST $5 1 :i32 + JMP $0 B3($5) :void +B2() + CONST $7 120 :i32 + JMP $0 B3($7) :void +B3($5:i32) + RETURN $5 :i32 diff --git a/nautilus/test/data/after_ssa/countDigits.trace b/nautilus/test/data/after_ssa/countDigits.trace new file mode 100644 index 00000000..de0f3dcb --- /dev/null +++ b/nautilus/test/data/after_ssa/countDigits.trace @@ -0,0 +1,16 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 0 :i32 + JMP $0 B3($2,$1,$3) :void +B1($2:i32,$1:i32) + CONST $6 10 :i32 + DIV $7 $1 $6 :i32 + CONST $8 1 :i32 + ADD $9 $2 $8 :i32 + CONST $10 0 :i32 + JMP $0 B3($9,$7,$10) :void +B2($2:i32) + RETURN $2 :i32 +B3($2:i32,$1:i32,$3:i32) ControlFlowMerge + NEQ $4 $1 $3 :bool + CMP $5 $4 B1($2,$1) B2($2) :void diff --git a/nautilus/test/data/after_ssa/decimalToBinary.trace b/nautilus/test/data/after_ssa/decimalToBinary.trace new file mode 100644 index 00000000..45253039 --- /dev/null +++ b/nautilus/test/data/after_ssa/decimalToBinary.trace @@ -0,0 +1,21 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 1 :i32 + CONST $4 2 :i32 + JMP $0 B3($1,$3,$2,$4) :void +B1($1:i32,$3:i32,$2:i32) + CONST $15 2 :i32 + JMP $0 B3($1,$3,$2,$15) :void +B2($2:i32) + RETURN $2 :i32 +B3($1:i32,$3:i32,$2:i32,$4:i32) ControlFlowMerge + MOD $5 $1 $4 :i32 + MUL $6 $5 $3 :i32 + ADD $7 $2 $6 :i32 + CONST $8 10 :i32 + MUL $9 $3 $8 :i32 + CONST $10 2 :i32 + DIV $11 $1 $10 :i32 + CONST $12 0 :i32 + GT $13 $11 $12 :bool + CMP $14 $13 B1($11,$9,$7) B2($7) :void diff --git a/nautilus/test/data/after_ssa/deeplyNestedIfElseCondition.trace b/nautilus/test/data/after_ssa/deeplyNestedIfElseCondition.trace new file mode 100644 index 00000000..700e2451 --- /dev/null +++ b/nautilus/test/data/after_ssa/deeplyNestedIfElseCondition.trace @@ -0,0 +1,47 @@ +B0() + CONST $1 5 :i32 + CONST $2 8 :i32 + LT $3 $1 $2 :bool + CMP $4 $3 B1($1) B2($1) :void +B1($1:i32) + CONST $5 6 :i32 + GT $6 $1 $5 :bool + CMP $7 $6 B3($1) B4($1) :void +B2($1:i32) + CONST $13 20 :i32 + ADD $14 $1 $13 :i32 + CONST $15 2 :i32 + JMP $0 B5($14,$15) :void +B3($1:i32) + CONST $8 10 :i32 + ADD $9 $1 $8 :i32 + CONST $10 2 :i32 + JMP $0 B5($9,$10) :void +B4($1:i32) + CONST $16 6 :i32 + LT $17 $1 $16 :bool + CMP $18 $17 B6($1) B7($1) :void +B5($1:i32,$10:i32) ControlFlowMerge + JMP $0 B10($1,$10) :void +B6($1:i32) + CONST $19 5 :i32 + EQ $20 $1 $19 :bool + CMP $21 $20 B8($1) B9($1) :void +B7($1:i32) + CONST $25 2 :i32 + JMP $0 B11($1,$25) :void +B8($1:i32) + CONST $22 5 :i32 + ADD $23 $1 $22 :i32 + CONST $24 2 :i32 + JMP $0 B10($23,$24) :void +B9($1:i32) + CONST $26 2 :i32 + JMP $0 B12($1,$26) :void +B10($1:i32,$10:i32) ControlFlowMerge + JMP $0 B11($1,$10) :void +B11($1:i32,$10:i32) ControlFlowMerge + JMP $0 B12($1,$10) :void +B12($1:i32,$10:i32) ControlFlowMerge + ADD $11 $1 $10 :i32 + RETURN $11 :i32 diff --git a/nautilus/test/data/after_ssa/deeplyNestedIfElseIfCondition.trace b/nautilus/test/data/after_ssa/deeplyNestedIfElseIfCondition.trace new file mode 100644 index 00000000..b36b2d7e --- /dev/null +++ b/nautilus/test/data/after_ssa/deeplyNestedIfElseIfCondition.trace @@ -0,0 +1,38 @@ +B0() + CONST $1 5 :i32 + CONST $2 8 :i32 + LT $3 $1 $2 :bool + CMP $4 $3 B1($1) B2($1) :void +B1($1:i32) + CONST $5 10 :i32 + ADD $6 $1 $5 :i32 + CONST $7 2 :i32 + JMP $0 B5($6,$7) :void +B2($1:i32) + CONST $10 5 :i32 + EQ $11 $1 $10 :bool + CMP $12 $11 B3($1) B4($1) :void +B3($1:i32) + CONST $13 5 :i32 + ADD $14 $1 $13 :i32 + CONST $15 2 :i32 + JMP $0 B5($14,$15) :void +B4($1:i32) + CONST $16 4 :i32 + EQ $17 $1 $16 :bool + CMP $18 $17 B6($1) B7($1) :void +B5($1:i32,$7:i32) ControlFlowMerge + JMP $0 B8($1,$7) :void +B6($1:i32) + CONST $19 4 :i32 + ADD $20 $1 $19 :i32 + CONST $21 2 :i32 + JMP $0 B8($20,$21) :void +B7($1:i32) + CONST $22 2 :i32 + JMP $0 B9($1,$22) :void +B8($1:i32,$7:i32) ControlFlowMerge + JMP $0 B9($1,$7) :void +B9($1:i32,$7:i32) ControlFlowMerge + ADD $8 $1 $7 :i32 + RETURN $8 :i32 diff --git a/nautilus/test/data/after_ssa/digitSum.trace b/nautilus/test/data/after_ssa/digitSum.trace new file mode 100644 index 00000000..106c06de --- /dev/null +++ b/nautilus/test/data/after_ssa/digitSum.trace @@ -0,0 +1,17 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B3($1,$2,$3) :void +B1($1:i32,$2:i32) + CONST $11 10 :i32 + JMP $0 B3($1,$2,$11) :void +B2($2:i32) + RETURN $2 :i32 +B3($1:i32,$2:i32,$3:i32) ControlFlowMerge + MOD $4 $1 $3 :i32 + ADD $5 $2 $4 :i32 + CONST $6 10 :i32 + DIV $7 $1 $6 :i32 + CONST $8 0 :i32 + GT $9 $7 $8 :bool + CMP $10 $9 B1($7,$5) B2($5) :void diff --git a/nautilus/test/data/after_ssa/doubleIfCondition.trace b/nautilus/test/data/after_ssa/doubleIfCondition.trace new file mode 100644 index 00000000..68e524de --- /dev/null +++ b/nautilus/test/data/after_ssa/doubleIfCondition.trace @@ -0,0 +1,25 @@ +B0() + CONST $1 1 :i32 + CONST $2 8 :i32 + EQ $3 $1 $2 :bool + CMP $4 $3 B1($1) B2($1) :void +B1($1:i32) + CONST $5 1 :i32 + JMP $0 B5($1,$5) :void +B2($1:i32) + CONST $13 1 :i32 + JMP $0 B5($1,$13) :void +B3($1:i32) + CONST $8 20 :i32 + ADD $9 $1 $8 :i32 + CONST $10 2 :i32 + JMP $0 B6($9,$10) :void +B4($1:i32) + CONST $14 2 :i32 + JMP $0 B6($1,$14) :void +B5($1:i32,$5:i32) ControlFlowMerge + EQ $6 $1 $5 :bool + CMP $7 $6 B3($1) B4($1) :void +B6($1:i32,$10:i32) ControlFlowMerge + ADD $11 $1 $10 :i32 + RETURN $11 :i32 diff --git a/nautilus/test/data/after_ssa/elseOnlySumLoop.trace b/nautilus/test/data/after_ssa/elseOnlySumLoop.trace new file mode 100644 index 00000000..4cc127c3 --- /dev/null +++ b/nautilus/test/data/after_ssa/elseOnlySumLoop.trace @@ -0,0 +1,26 @@ +B0() + CONST $1 1 :i32 + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B5($1,$2,$3) :void +B1($1:i32,$2:i32) + CONST $6 50 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3($1,$2) B4($2,$1) :void +B2($1:i32) + RETURN $1 :i32 +B3($1:i32,$2:i32) + CONST $9 1 :i32 + JMP $0 B6($1,$2,$9) :void +B4($2:i32,$1:i32) + CONST $12 1 :i32 + ADD $13 $1 $12 :i32 + CONST $14 1 :i32 + JMP $0 B6($13,$2,$14) :void +B5($1:i32,$2:i32,$3:i32) ControlFlowMerge + LT $4 $2 $3 :bool + CMP $5 $4 B1($1,$2) B2($1) :void +B6($1:i32,$2:i32,$9:i32) ControlFlowMerge + ADD $10 $2 $9 :i32 + CONST $11 10 :i32 + JMP $0 B5($1,$10,$11) :void diff --git a/nautilus/test/data/after_ssa/factorial.trace b/nautilus/test/data/after_ssa/factorial.trace new file mode 100644 index 00000000..fe6a1dce --- /dev/null +++ b/nautilus/test/data/after_ssa/factorial.trace @@ -0,0 +1,15 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 1 :i32 + JMP $0 B3($2,$1,$3) :void +B1($1:i32,$2:i32) + MUL $7 $2 $1 :i32 + CONST $8 1 :i32 + SUB $9 $1 $8 :i32 + CONST $10 1 :i32 + JMP $0 B3($7,$9,$10) :void +B2($2:i32) + RETURN $2 :i32 +B3($2:i32,$1:i32,$3:i32) ControlFlowMerge + GT $4 $1 $3 :bool + CMP $5 $4 B1($1,$2) B2($2) :void diff --git a/nautilus/test/data/after_ssa/fibonacci.trace b/nautilus/test/data/after_ssa/fibonacci.trace new file mode 100644 index 00000000..894aa0e1 --- /dev/null +++ b/nautilus/test/data/after_ssa/fibonacci.trace @@ -0,0 +1,16 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 1 :i32 + CONST $4 0 :i32 + CONST $5 2 :i32 + JMP $0 B3($3,$5,$1,$2) :void +B1($1:i32,$5:i32,$3:i32,$2:i32) + ADD $8 $2 $3 :i32 + CONST $9 1 :i32 + ADD $10 $5 $9 :i32 + JMP $0 B3($8,$10,$1,$3) :void +B2($3:i32) + RETURN $3 :i32 +B3($3:i32,$5:i32,$1:i32,$2:i32) ControlFlowMerge + LTE $6 $5 $1 :bool + CMP $7 $6 B1($1,$5,$3,$2) B2($3) :void diff --git a/nautilus/test/data/after_ssa/gcd.trace b/nautilus/test/data/after_ssa/gcd.trace new file mode 100644 index 00000000..e6557802 --- /dev/null +++ b/nautilus/test/data/after_ssa/gcd.trace @@ -0,0 +1,12 @@ +B0($1:i32,$2:i32) + CONST $3 0 :i32 + JMP $0 B3($1,$2,$3) :void +B1($1:i32,$2:i32) + MOD $7 $1 $2 :i32 + CONST $8 0 :i32 + JMP $0 B3($2,$7,$8) :void +B2($1:i32) + RETURN $1 :i32 +B3($1:i32,$2:i32,$3:i32) ControlFlowMerge + NEQ $4 $2 $3 :bool + CMP $5 $4 B1($1,$2) B2($1) :void diff --git a/nautilus/test/data/after_ssa/ifElseIfCondition.trace b/nautilus/test/data/after_ssa/ifElseIfCondition.trace new file mode 100644 index 00000000..8cf864a3 --- /dev/null +++ b/nautilus/test/data/after_ssa/ifElseIfCondition.trace @@ -0,0 +1,27 @@ +B0() + CONST $1 1 :i32 + CONST $2 8 :i32 + EQ $3 $1 $2 :bool + CMP $4 $3 B1($1) B2($1) :void +B1($1:i32) + CONST $5 14 :i32 + ADD $6 $1 $5 :i32 + CONST $7 2 :i32 + JMP $0 B5($6,$7) :void +B2($1:i32) + CONST $10 1 :i32 + EQ $11 $1 $10 :bool + CMP $12 $11 B3($1) B4($1) :void +B3($1:i32) + CONST $13 20 :i32 + ADD $14 $1 $13 :i32 + CONST $15 2 :i32 + JMP $0 B5($14,$15) :void +B4($1:i32) + CONST $16 2 :i32 + JMP $0 B6($1,$16) :void +B5($1:i32,$7:i32) ControlFlowMerge + JMP $0 B6($1,$7) :void +B6($1:i32,$7:i32) ControlFlowMerge + ADD $8 $1 $7 :i32 + RETURN $8 :i32 diff --git a/nautilus/test/data/after_ssa/ifElseSumLoop.trace b/nautilus/test/data/after_ssa/ifElseSumLoop.trace new file mode 100644 index 00000000..0436820f --- /dev/null +++ b/nautilus/test/data/after_ssa/ifElseSumLoop.trace @@ -0,0 +1,28 @@ +B0() + CONST $1 1 :i32 + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B5($1,$2,$3) :void +B1($2:i32,$1:i32) + CONST $6 50 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3($2,$1) B4($2,$1) :void +B2($1:i32) + RETURN $1 :i32 +B3($2:i32,$1:i32) + CONST $9 10 :i32 + ADD $10 $1 $9 :i32 + CONST $11 1 :i32 + JMP $0 B6($10,$2,$11) :void +B4($2:i32,$1:i32) + CONST $14 1 :i32 + ADD $15 $1 $14 :i32 + CONST $16 1 :i32 + JMP $0 B6($15,$2,$16) :void +B5($1:i32,$2:i32,$3:i32) ControlFlowMerge + LT $4 $2 $3 :bool + CMP $5 $4 B1($2,$1) B2($1) :void +B6($1:i32,$2:i32,$11:i32) ControlFlowMerge + ADD $12 $2 $11 :i32 + CONST $13 10 :i32 + JMP $0 B5($1,$12,$13) :void diff --git a/nautilus/test/data/after_ssa/ifInsideLoop.trace b/nautilus/test/data/after_ssa/ifInsideLoop.trace new file mode 100644 index 00000000..212022db --- /dev/null +++ b/nautilus/test/data/after_ssa/ifInsideLoop.trace @@ -0,0 +1,26 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 0 :i32 + JMP $0 B5($2,$3,$1) :void +B1($1:i32,$3:i32,$2:i32) + CONST $6 2 :i32 + MOD $7 $3 $6 :i32 + CONST $8 0 :i32 + EQ $9 $7 $8 :bool + CMP $10 $9 B3($1,$3,$2) B4($2,$1,$3) :void +B2($2:i32) + RETURN $2 :i32 +B3($1:i32,$3:i32,$2:i32) + CONST $11 1 :i32 + ADD $12 $2 $11 :i32 + CONST $13 1 :i32 + JMP $0 B6($12,$1,$3,$13) :void +B4($2:i32,$1:i32,$3:i32) + CONST $17 1 :i32 + JMP $0 B6($2,$1,$3,$17) :void +B5($2:i32,$3:i32,$1:i32) ControlFlowMerge + LT $4 $3 $1 :bool + CMP $5 $4 B1($1,$3,$2) B2($2) :void +B6($2:i32,$1:i32,$3:i32,$13:i32) ControlFlowMerge + ADD $14 $3 $13 :i32 + JMP $0 B5($2,$14,$1) :void diff --git a/nautilus/test/data/after_ssa/ifNotEqual.trace b/nautilus/test/data/after_ssa/ifNotEqual.trace new file mode 100644 index 00000000..09b8f404 --- /dev/null +++ b/nautilus/test/data/after_ssa/ifNotEqual.trace @@ -0,0 +1,12 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 5 :i32 + NEQ $4 $1 $3 :bool + CMP $5 $4 B1() B2($2) :void +B1() + CONST $6 2 :i32 + JMP $0 B3($6) :void +B2($2:i32) + JMP $0 B3($2) :void +B3($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/ifSumLoop.trace b/nautilus/test/data/after_ssa/ifSumLoop.trace new file mode 100644 index 00000000..534cdcfc --- /dev/null +++ b/nautilus/test/data/after_ssa/ifSumLoop.trace @@ -0,0 +1,26 @@ +B0() + CONST $1 1 :i32 + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B5($1,$2,$3) :void +B1($2:i32,$1:i32) + CONST $6 50 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3($2,$1) B4($1,$2) :void +B2($1:i32) + RETURN $1 :i32 +B3($2:i32,$1:i32) + CONST $9 10 :i32 + ADD $10 $1 $9 :i32 + CONST $11 1 :i32 + JMP $0 B6($10,$2,$11) :void +B4($1:i32,$2:i32) + CONST $14 1 :i32 + JMP $0 B6($1,$2,$14) :void +B5($1:i32,$2:i32,$3:i32) ControlFlowMerge + LT $4 $2 $3 :bool + CMP $5 $4 B1($2,$1) B2($1) :void +B6($1:i32,$2:i32,$11:i32) ControlFlowMerge + ADD $12 $2 $11 :i32 + CONST $13 10 :i32 + JMP $0 B5($1,$12,$13) :void diff --git a/nautilus/test/data/after_ssa/ifThenCondition.trace b/nautilus/test/data/after_ssa/ifThenCondition.trace new file mode 100644 index 00000000..db7eafd5 --- /dev/null +++ b/nautilus/test/data/after_ssa/ifThenCondition.trace @@ -0,0 +1,16 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 42 :i32 + EQ $4 $1 $3 :bool + CMP $5 $4 B1($2) B2($2) :void +B1($2:i32) + CONST $6 1 :i32 + ADD $7 $2 $6 :i32 + CONST $8 42 :i32 + JMP $0 B3($7,$8) :void +B2($2:i32) + CONST $11 42 :i32 + JMP $0 B3($2,$11) :void +B3($2:i32,$8:i32) ControlFlowMerge + ADD $9 $2 $8 :i32 + RETURN $9 :i32 diff --git a/nautilus/test/data/after_ssa/ifThenElseCondition.trace b/nautilus/test/data/after_ssa/ifThenElseCondition.trace new file mode 100644 index 00000000..db6d95c9 --- /dev/null +++ b/nautilus/test/data/after_ssa/ifThenElseCondition.trace @@ -0,0 +1,18 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 42 :i32 + EQ $4 $1 $3 :bool + CMP $5 $4 B1($2) B2($2) :void +B1($2:i32) + CONST $6 1 :i32 + ADD $7 $2 $6 :i32 + CONST $8 42 :i32 + JMP $0 B3($7,$8) :void +B2($2:i32) + CONST $11 42 :i32 + ADD $12 $2 $11 :i32 + CONST $13 42 :i32 + JMP $0 B3($12,$13) :void +B3($2:i32,$8:i32) ControlFlowMerge + ADD $9 $2 $8 :i32 + RETURN $9 :i32 diff --git a/nautilus/test/data/after_ssa/ifWithFunctionCall.trace b/nautilus/test/data/after_ssa/ifWithFunctionCall.trace new file mode 100644 index 00000000..ebff2bfe --- /dev/null +++ b/nautilus/test/data/after_ssa/ifWithFunctionCall.trace @@ -0,0 +1,14 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $4 2 :i32 + MUL $5 $1 $4 :i32 + CONST $6 10 :i32 + GT $7 $5 $6 :bool + CMP $8 $7 B1() B2($2) :void +B1() + CONST $9 1 :i32 + JMP $0 B3($9) :void +B2($2:i32) + JMP $0 B3($2) :void +B3($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/ifWithTernary.trace b/nautilus/test/data/after_ssa/ifWithTernary.trace new file mode 100644 index 00000000..7d2f3be0 --- /dev/null +++ b/nautilus/test/data/after_ssa/ifWithTernary.trace @@ -0,0 +1,22 @@ +B0($1:i32) + CONST $2 5 :i32 + GT $3 $1 $2 :bool + CMP $4 $3 B1($1) B2($1) :void +B1($1:i32) + CONST $5 10 :i32 + CONST $6 0 :i32 + JMP $0 B5($1,$6,$5) :void +B2($1:i32) + CONST $11 5 :i32 + CONST $12 0 :i32 + JMP $0 B5($1,$12,$11) :void +B3() + CONST $9 -1 :i32 + JMP $0 B6($9) :void +B4($5:i32) + JMP $0 B6($5) :void +B5($1:i32,$6:i32,$5:i32) ControlFlowMerge + EQ $7 $1 $6 :bool + CMP $8 $7 B3() B4($5) :void +B6($5:i32) + RETURN $5 :i32 diff --git a/nautilus/test/data/after_ssa/isPrime.trace b/nautilus/test/data/after_ssa/isPrime.trace new file mode 100644 index 00000000..90dd4279 --- /dev/null +++ b/nautilus/test/data/after_ssa/isPrime.trace @@ -0,0 +1,30 @@ +B0($1:i32) + CONST $2 :bool + CONST $3 :bool + CONST $4 1 :i32 + LTE $5 $1 $4 :bool + CMP $6 $5 B1($2) B2($2,$1,$3) :void +B1($2:bool) + JMP $0 B8($2) :void +B2($2:bool,$1:i32,$3:bool) + CONST $8 2 :i32 + JMP $0 B7($2,$1,$8,$3) :void +B3($2:bool,$1:i32,$8:i32,$3:bool) + MOD $12 $1 $8 :i32 + CONST $13 0 :i32 + EQ $14 $12 $13 :bool + CMP $15 $14 B5($2) B6($2,$1,$8,$3) :void +B4($3:bool) + JMP $0 B8($3) :void +B5($2:bool) + JMP $0 B8($2) :void +B6($2:bool,$1:i32,$8:i32,$3:bool) + CONST $18 1 :i32 + ADD $19 $8 $18 :i32 + JMP $0 B7($2,$1,$19,$3) :void +B7($2:bool,$1:i32,$8:i32,$3:bool) ControlFlowMerge + MUL $9 $8 $8 :i32 + LTE $10 $9 $1 :bool + CMP $11 $10 B3($2,$1,$8,$3) B4($3) :void +B8($2:bool) + RETURN $2 :bool diff --git a/nautilus/test/data/after_ssa/logicalAnd.trace b/nautilus/test/data/after_ssa/logicalAnd.trace new file mode 100644 index 00000000..d8bd92c8 --- /dev/null +++ b/nautilus/test/data/after_ssa/logicalAnd.trace @@ -0,0 +1,15 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 5 :i32 + GT $4 $1 $3 :bool + CONST $5 15 :i32 + LT $6 $1 $5 :bool + AND $7 $4 $6 :bool + CMP $8 $7 B1() B2($2) :void +B1() + CONST $9 1 :i32 + JMP $0 B3($9) :void +B2($2:i32) + JMP $0 B3($2) :void +B3($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/logicalOr.trace b/nautilus/test/data/after_ssa/logicalOr.trace new file mode 100644 index 00000000..7038ce8b --- /dev/null +++ b/nautilus/test/data/after_ssa/logicalOr.trace @@ -0,0 +1,15 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 10 :i32 + EQ $4 $1 $3 :bool + CONST $5 20 :i32 + EQ $6 $1 $5 :bool + OR $7 $4 $6 :bool + CMP $8 $7 B1() B2($2) :void +B1() + CONST $9 1 :i32 + JMP $0 B3($9) :void +B2($2:i32) + JMP $0 B3($2) :void +B3($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/logicalXOR.trace b/nautilus/test/data/after_ssa/logicalXOR.trace new file mode 100644 index 00000000..4597d543 --- /dev/null +++ b/nautilus/test/data/after_ssa/logicalXOR.trace @@ -0,0 +1,15 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 10 :i32 + LT $4 $1 $3 :bool + CONST $5 5 :i32 + GT $6 $1 $5 :bool + NEQ $7 $4 $6 :bool + CMP $8 $7 B1() B2($2) :void +B1() + CONST $9 1 :i32 + JMP $0 B3($9) :void +B2($2:i32) + JMP $0 B3($2) :void +B3($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/loopDirectCall.trace b/nautilus/test/data/after_ssa/loopDirectCall.trace new file mode 100644 index 00000000..be24c63c --- /dev/null +++ b/nautilus/test/data/after_ssa/loopDirectCall.trace @@ -0,0 +1,14 @@ +B0($1:i32,$2:i32) + CONST $3 0 :i32 + CONST $4 0 :i32 + JMP $0 B3($3,$4,$1,$2) :void +B1($1:i32,$4:i32,$2:i32,$3:i32) + CALL $11 ($3,$2) :i32 + CONST $12 1 :i32 + ADD $13 $4 $12 :i32 + JMP $0 B3($11,$13,$1,$2) :void +B2($3:i32) + RETURN $3 :i32 +B3($3:i32,$4:i32,$1:i32,$2:i32) ControlFlowMerge + LT $5 $4 $1 :bool + CMP $6 $5 B1($1,$4,$2,$3) B2($3) :void diff --git a/nautilus/test/data/after_ssa/multipleConditions.trace b/nautilus/test/data/after_ssa/multipleConditions.trace new file mode 100644 index 00000000..531e2d65 --- /dev/null +++ b/nautilus/test/data/after_ssa/multipleConditions.trace @@ -0,0 +1,18 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 0 :i32 + GT $4 $1 $3 :bool + CONST $5 10 :i32 + LT $6 $1 $5 :bool + AND $7 $4 $6 :bool + CONST $8 20 :i32 + EQ $9 $1 $8 :bool + OR $10 $7 $9 :bool + CMP $11 $10 B1() B2($2) :void +B1() + CONST $12 1 :i32 + JMP $0 B3($12) :void +B2($2:i32) + JMP $0 B3($2) :void +B3($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/nestedElseOnlySumLoop.trace b/nautilus/test/data/after_ssa/nestedElseOnlySumLoop.trace new file mode 100644 index 00000000..93625c1b --- /dev/null +++ b/nautilus/test/data/after_ssa/nestedElseOnlySumLoop.trace @@ -0,0 +1,37 @@ +B0() + CONST $1 1 :i32 + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B7($1,$2,$3) :void +B1($1:i32,$2:i32) + CONST $6 50 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3($1,$2) B4($2,$1) :void +B2($1:i32) + RETURN $1 :i32 +B3($1:i32,$2:i32) + CONST $9 40 :i32 + LT $10 $1 $9 :bool + CMP $11 $10 B5($1,$2) B6($2,$1) :void +B4($2:i32,$1:i32) + CONST $15 1 :i32 + ADD $16 $1 $15 :i32 + CONST $17 1 :i32 + JMP $0 B8($16,$2,$17) :void +B5($1:i32,$2:i32) + CONST $12 1 :i32 + JMP $0 B8($1,$2,$12) :void +B6($2:i32,$1:i32) + CONST $18 100 :i32 + ADD $19 $1 $18 :i32 + CONST $20 1 :i32 + JMP $0 B9($19,$2,$20) :void +B7($1:i32,$2:i32,$3:i32) ControlFlowMerge + LT $4 $2 $3 :bool + CMP $5 $4 B1($1,$2) B2($1) :void +B8($1:i32,$2:i32,$12:i32) ControlFlowMerge + JMP $0 B9($1,$2,$12) :void +B9($1:i32,$2:i32,$12:i32) ControlFlowMerge + ADD $13 $2 $12 :i32 + CONST $14 10 :i32 + JMP $0 B7($1,$13,$14) :void diff --git a/nautilus/test/data/after_ssa/nestedIf.trace b/nautilus/test/data/after_ssa/nestedIf.trace new file mode 100644 index 00000000..7b87c8d1 --- /dev/null +++ b/nautilus/test/data/after_ssa/nestedIf.trace @@ -0,0 +1,19 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 20 :i32 + LT $4 $1 $3 :bool + CMP $5 $4 B1($1) B2($2) :void +B1($1:i32) + CONST $6 10 :i32 + GT $7 $1 $6 :bool + CMP $8 $7 B3() B4() :void +B2($2:i32) + JMP $0 B5($2) :void +B3() + CONST $9 2 :i32 + JMP $0 B5($9) :void +B4() + CONST $12 3 :i32 + JMP $0 B5($12) :void +B5($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/nestedIfElseDifferentLevels.trace b/nautilus/test/data/after_ssa/nestedIfElseDifferentLevels.trace new file mode 100644 index 00000000..2bcf08da --- /dev/null +++ b/nautilus/test/data/after_ssa/nestedIfElseDifferentLevels.trace @@ -0,0 +1,27 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 0 :i32 + GT $4 $1 $3 :bool + CMP $5 $4 B1($1) B2() :void +B1($1:i32) + CONST $6 5 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3() B4($1) :void +B2() + CONST $11 -1 :i32 + JMP $0 B7($11) :void +B3() + CONST $9 1 :i32 + JMP $0 B7($9) :void +B4($1:i32) + CONST $13 2 :i32 + CONST $14 6 :i32 + EQ $15 $1 $14 :bool + CMP $16 $15 B5() B6($13) :void +B5() + CONST $17 3 :i32 + JMP $0 B7($17) :void +B6($2:i32) + JMP $0 B7($2) :void +B7($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/nestedIfElseSumLoop.trace b/nautilus/test/data/after_ssa/nestedIfElseSumLoop.trace new file mode 100644 index 00000000..380fcacd --- /dev/null +++ b/nautilus/test/data/after_ssa/nestedIfElseSumLoop.trace @@ -0,0 +1,39 @@ +B0() + CONST $1 1 :i32 + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B7($1,$2,$3) :void +B1($2:i32,$1:i32) + CONST $6 50 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3($2,$1) B4($2,$1) :void +B2($1:i32) + RETURN $1 :i32 +B3($2:i32,$1:i32) + CONST $9 40 :i32 + LT $10 $1 $9 :bool + CMP $11 $10 B5($2,$1) B6($2,$1) :void +B4($2:i32,$1:i32) + CONST $17 1 :i32 + ADD $18 $1 $17 :i32 + CONST $19 1 :i32 + JMP $0 B8($18,$2,$19) :void +B5($2:i32,$1:i32) + CONST $12 10 :i32 + ADD $13 $1 $12 :i32 + CONST $14 1 :i32 + JMP $0 B8($13,$2,$14) :void +B6($2:i32,$1:i32) + CONST $20 100 :i32 + ADD $21 $1 $20 :i32 + CONST $22 1 :i32 + JMP $0 B9($21,$2,$22) :void +B7($1:i32,$2:i32,$3:i32) ControlFlowMerge + LT $4 $2 $3 :bool + CMP $5 $4 B1($2,$1) B2($1) :void +B8($1:i32,$2:i32,$14:i32) ControlFlowMerge + JMP $0 B9($1,$2,$14) :void +B9($1:i32,$2:i32,$14:i32) ControlFlowMerge + ADD $15 $2 $14 :i32 + CONST $16 10 :i32 + JMP $0 B7($1,$15,$16) :void diff --git a/nautilus/test/data/after_ssa/nestedIfNoElseCondition.trace b/nautilus/test/data/after_ssa/nestedIfNoElseCondition.trace new file mode 100644 index 00000000..4f734186 --- /dev/null +++ b/nautilus/test/data/after_ssa/nestedIfNoElseCondition.trace @@ -0,0 +1,28 @@ +B0($1:i32,$2:i32) + CONST $3 42 :i32 + EQ $4 $1 $3 :bool + CMP $5 $4 B1($2) B2($2) :void +B1($2:i32) + CONST $6 4 :i32 + ADD $7 $2 $6 :i32 + CONST $8 2 :i32 + JMP $0 B5($7,$8) :void +B2($2:i32) + CONST $13 9 :i32 + ADD $14 $2 $13 :i32 + CONST $15 8 :i32 + EQ $16 $14 $15 :bool + CMP $17 $16 B3($14) B4($14) :void +B3($2:i32) + CONST $18 14 :i32 + ADD $19 $2 $18 :i32 + CONST $20 2 :i32 + JMP $0 B5($2,$20) :void +B4($2:i32) + CONST $23 2 :i32 + JMP $0 B6($2,$23) :void +B5($2:i32,$8:i32) ControlFlowMerge + JMP $0 B6($2,$8) :void +B6($2:i32,$8:i32) ControlFlowMerge + ADD $9 $2 $8 :i32 + RETURN $9 :i32 diff --git a/nautilus/test/data/after_ssa/nestedIfSumLoop.trace b/nautilus/test/data/after_ssa/nestedIfSumLoop.trace new file mode 100644 index 00000000..8d97cb4f --- /dev/null +++ b/nautilus/test/data/after_ssa/nestedIfSumLoop.trace @@ -0,0 +1,37 @@ +B0() + CONST $1 1 :i32 + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B7($1,$2,$3) :void +B1($2:i32,$1:i32) + CONST $6 50 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3($2,$1) B4($2,$1) :void +B2($1:i32) + RETURN $1 :i32 +B3($2:i32,$1:i32) + CONST $9 40 :i32 + LT $10 $1 $9 :bool + CMP $11 $10 B5($2,$1) B6($1,$2) :void +B4($2:i32,$1:i32) + CONST $17 1 :i32 + ADD $18 $1 $17 :i32 + CONST $19 1 :i32 + JMP $0 B8($18,$2,$19) :void +B5($2:i32,$1:i32) + CONST $12 10 :i32 + ADD $13 $1 $12 :i32 + CONST $14 1 :i32 + JMP $0 B8($13,$2,$14) :void +B6($1:i32,$2:i32) + CONST $20 1 :i32 + JMP $0 B9($1,$2,$20) :void +B7($1:i32,$2:i32,$3:i32) ControlFlowMerge + LT $4 $2 $3 :bool + CMP $5 $4 B1($2,$1) B2($1) :void +B8($1:i32,$2:i32,$14:i32) ControlFlowMerge + JMP $0 B9($1,$2,$14) :void +B9($1:i32,$2:i32,$14:i32) ControlFlowMerge + ADD $15 $2 $14 :i32 + CONST $16 10 :i32 + JMP $0 B7($1,$15,$16) :void diff --git a/nautilus/test/data/after_ssa/nestedIfThenElseCondition.trace b/nautilus/test/data/after_ssa/nestedIfThenElseCondition.trace new file mode 100644 index 00000000..51dfe96f --- /dev/null +++ b/nautilus/test/data/after_ssa/nestedIfThenElseCondition.trace @@ -0,0 +1,24 @@ +B0($1:i32,$2:i32) + CONST $3 42 :i32 + EQ $4 $1 $3 :bool + CMP $5 $4 B1($2) B2($2) :void +B1($2:i32) + CONST $6 2 :i32 + JMP $0 B5($2,$6) :void +B2($2:i32) + CONST $11 8 :i32 + EQ $12 $2 $11 :bool + CMP $13 $12 B3($2) B4($2) :void +B3($2:i32) + CONST $14 2 :i32 + JMP $0 B5($2,$14) :void +B4($2:i32) + CONST $17 2 :i32 + ADD $18 $2 $17 :i32 + CONST $19 2 :i32 + JMP $0 B6($18,$19) :void +B5($2:i32,$6:i32) ControlFlowMerge + JMP $0 B6($2,$6) :void +B6($2:i32,$6:i32) ControlFlowMerge + ADD $7 $2 $6 :i32 + RETURN $7 :i32 diff --git a/nautilus/test/data/after_ssa/nestedSumLoop.trace b/nautilus/test/data/after_ssa/nestedSumLoop.trace new file mode 100644 index 00000000..d70f65da --- /dev/null +++ b/nautilus/test/data/after_ssa/nestedSumLoop.trace @@ -0,0 +1,25 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 0 :i32 + JMP $0 B6($2,$3,$1) :void +B1($2:i32,$1:i32,$3:i32) + CONST $6 0 :i32 + JMP $0 B5($2,$1,$3,$6) :void +B2($2:i32) + RETURN $2 :i32 +B3($1:i32,$3:i32,$6:i32,$2:i32) + CONST $9 10 :i32 + ADD $10 $2 $9 :i32 + CONST $11 1 :i32 + ADD $12 $6 $11 :i32 + JMP $0 B5($10,$1,$3,$12) :void +B4($2:i32,$1:i32,$3:i32) + CONST $15 1 :i32 + ADD $16 $3 $15 :i32 + JMP $0 B6($2,$16,$1) :void +B5($2:i32,$1:i32,$3:i32,$6:i32) ControlFlowMerge + LT $7 $6 $1 :bool + CMP $8 $7 B3($1,$3,$6,$2) B4($2,$1,$3) :void +B6($2:i32,$3:i32,$1:i32) ControlFlowMerge + LT $4 $3 $1 :bool + CMP $5 $4 B1($2,$1,$3) B2($2) :void diff --git a/nautilus/test/data/after_ssa/orCondition.trace b/nautilus/test/data/after_ssa/orCondition.trace new file mode 100644 index 00000000..20277c27 --- /dev/null +++ b/nautilus/test/data/after_ssa/orCondition.trace @@ -0,0 +1,16 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 8 :i32 + EQ $4 $1 $3 :bool + CONST $5 1 :i32 + EQ $6 $1 $5 :bool + OR $7 $4 $6 :bool + CMP $8 $7 B1($2) B2($2) :void +B1($2:i32) + CONST $9 14 :i32 + ADD $10 $2 $9 :i32 + JMP $0 B3($10) :void +B2($2:i32) + JMP $0 B3($2) :void +B3($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/passCustomStruct.trace b/nautilus/test/data/after_ssa/passCustomStruct.trace new file mode 100644 index 00000000..0976f26e --- /dev/null +++ b/nautilus/test/data/after_ssa/passCustomStruct.trace @@ -0,0 +1,3 @@ +B0($1:ptr) + CALL $2 ($1) :i32 + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/reverseNumber.trace b/nautilus/test/data/after_ssa/reverseNumber.trace new file mode 100644 index 00000000..79de79f3 --- /dev/null +++ b/nautilus/test/data/after_ssa/reverseNumber.trace @@ -0,0 +1,19 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B3($1,$2,$3) :void +B1($1:i32,$2:i32) + CONST $13 10 :i32 + JMP $0 B3($1,$2,$13) :void +B2($2:i32) + RETURN $2 :i32 +B3($1:i32,$2:i32,$3:i32) ControlFlowMerge + MUL $4 $2 $3 :i32 + CONST $5 10 :i32 + MOD $6 $1 $5 :i32 + ADD $7 $4 $6 :i32 + CONST $8 10 :i32 + DIV $9 $1 $8 :i32 + CONST $10 0 :i32 + GT $11 $9 $10 :bool + CMP $12 $11 B1($9,$7) B2($7) :void diff --git a/nautilus/test/data/after_ssa/shortCircuitEvaluation.trace b/nautilus/test/data/after_ssa/shortCircuitEvaluation.trace new file mode 100644 index 00000000..07dd0a20 --- /dev/null +++ b/nautilus/test/data/after_ssa/shortCircuitEvaluation.trace @@ -0,0 +1,17 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 0 :i32 + NEQ $4 $1 $3 :bool + CONST $5 10 :i32 + DIV $6 $5 $1 :i32 + CONST $7 1 :i32 + GT $8 $6 $7 :bool + AND $9 $4 $8 :bool + CMP $10 $9 B1() B2($2) :void +B1() + CONST $11 1 :i32 + JMP $0 B3($11) :void +B2($2:i32) + JMP $0 B3($2) :void +B3($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/simpleDirectCall.trace b/nautilus/test/data/after_ssa/simpleDirectCall.trace new file mode 100644 index 00000000..acc31067 --- /dev/null +++ b/nautilus/test/data/after_ssa/simpleDirectCall.trace @@ -0,0 +1,3 @@ +B0($1:i32,$2:i32) + CALL $7 ($1,$2) :i32 + RETURN $7 :i32 diff --git a/nautilus/test/data/after_ssa/specializeType.trace b/nautilus/test/data/after_ssa/specializeType.trace new file mode 100644 index 00000000..0976f26e --- /dev/null +++ b/nautilus/test/data/after_ssa/specializeType.trace @@ -0,0 +1,3 @@ +B0($1:ptr) + CALL $2 ($1) :i32 + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/staticLoop.trace b/nautilus/test/data/after_ssa/staticLoop.trace new file mode 100644 index 00000000..6022c849 --- /dev/null +++ b/nautilus/test/data/after_ssa/staticLoop.trace @@ -0,0 +1,23 @@ +B0() + CONST $1 1 :i32 + CONST $2 10 :i32 + ADD $3 $1 $2 :i32 + CONST $4 10 :i32 + ADD $5 $3 $4 :i32 + CONST $6 10 :i32 + ADD $7 $5 $6 :i32 + CONST $8 10 :i32 + ADD $9 $7 $8 :i32 + CONST $10 10 :i32 + ADD $11 $9 $10 :i32 + CONST $12 10 :i32 + ADD $13 $11 $12 :i32 + CONST $14 10 :i32 + ADD $15 $13 $14 :i32 + CONST $16 10 :i32 + ADD $17 $15 $16 :i32 + CONST $18 10 :i32 + ADD $19 $17 $18 :i32 + CONST $20 10 :i32 + ADD $21 $19 $20 :i32 + RETURN $21 :i32 diff --git a/nautilus/test/data/after_ssa/staticLoopIncrement.trace b/nautilus/test/data/after_ssa/staticLoopIncrement.trace new file mode 100644 index 00000000..6022c849 --- /dev/null +++ b/nautilus/test/data/after_ssa/staticLoopIncrement.trace @@ -0,0 +1,23 @@ +B0() + CONST $1 1 :i32 + CONST $2 10 :i32 + ADD $3 $1 $2 :i32 + CONST $4 10 :i32 + ADD $5 $3 $4 :i32 + CONST $6 10 :i32 + ADD $7 $5 $6 :i32 + CONST $8 10 :i32 + ADD $9 $7 $8 :i32 + CONST $10 10 :i32 + ADD $11 $9 $10 :i32 + CONST $12 10 :i32 + ADD $13 $11 $12 :i32 + CONST $14 10 :i32 + ADD $15 $13 $14 :i32 + CONST $16 10 :i32 + ADD $17 $15 $16 :i32 + CONST $18 10 :i32 + ADD $19 $17 $18 :i32 + CONST $20 10 :i32 + ADD $21 $19 $20 :i32 + RETURN $21 :i32 diff --git a/nautilus/test/data/after_ssa/staticLoopWithDynamicLoop.trace b/nautilus/test/data/after_ssa/staticLoopWithDynamicLoop.trace new file mode 100644 index 00000000..044bf5c6 --- /dev/null +++ b/nautilus/test/data/after_ssa/staticLoopWithDynamicLoop.trace @@ -0,0 +1,52 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 0 :i32 + JMP $0 B9($2,$3,$1) :void +B1($1:i32,$3:i32,$2:i32) + CONST $6 5 :i32 + GT $7 $3 $6 :bool + CMP $8 $7 B3($1,$3,$2) B4($1,$3,$2) :void +B2($2:i32) + RETURN $2 :i32 +B3($1:i32,$3:i32,$2:i32) + CONST $9 1 :i32 + ADD $10 $2 $9 :i32 + CONST $11 10 :i32 + JMP $0 B10($1,$3,$10,$11) :void +B4($1:i32,$3:i32,$2:i32) + CONST $31 10 :i32 + JMP $0 B10($1,$3,$2,$31) :void +B5($1:i32,$3:i32,$2:i32) + CONST $16 1 :i32 + ADD $17 $2 $16 :i32 + CONST $18 10 :i32 + JMP $0 B11($1,$3,$17,$18) :void +B6($1:i32,$3:i32,$2:i32) + CONST $33 10 :i32 + JMP $0 B11($1,$3,$2,$33) :void +B7($1:i32,$3:i32,$2:i32) + CONST $23 1 :i32 + ADD $24 $2 $23 :i32 + CONST $25 10 :i32 + JMP $0 B12($1,$3,$24,$25) :void +B8($1:i32,$3:i32,$2:i32) + CONST $35 10 :i32 + JMP $0 B12($1,$3,$2,$35) :void +B9($2:i32,$3:i32,$1:i32) ControlFlowMerge + LT $4 $3 $1 :bool + CMP $5 $4 B1($1,$3,$2) B2($2) :void +B10($1:i32,$3:i32,$2:i32,$11:i32) ControlFlowMerge + ADD $12 $2 $11 :i32 + CONST $13 5 :i32 + GT $14 $3 $13 :bool + CMP $15 $14 B5($1,$3,$12) B6($1,$3,$12) :void +B11($1:i32,$3:i32,$2:i32,$18:i32) ControlFlowMerge + ADD $19 $2 $18 :i32 + CONST $20 5 :i32 + GT $21 $3 $20 :bool + CMP $22 $21 B7($1,$3,$19) B8($1,$3,$19) :void +B12($1:i32,$3:i32,$2:i32,$25:i32) ControlFlowMerge + ADD $26 $2 $25 :i32 + CONST $27 1 :i32 + ADD $28 $3 $27 :i32 + JMP $0 B9($26,$28,$1) :void diff --git a/nautilus/test/data/after_ssa/staticWhileLoopDecrement.trace b/nautilus/test/data/after_ssa/staticWhileLoopDecrement.trace new file mode 100644 index 00000000..065c1267 --- /dev/null +++ b/nautilus/test/data/after_ssa/staticWhileLoopDecrement.trace @@ -0,0 +1,25 @@ +B0() + CONST $1 1 :i32 + CONST $2 10 :i32 + ADD $3 $1 $2 :i32 + CONST $4 9 :i32 + ADD $5 $3 $4 :i32 + CONST $6 8 :i32 + ADD $7 $5 $6 :i32 + CONST $8 7 :i32 + ADD $9 $7 $8 :i32 + CONST $10 6 :i32 + ADD $11 $9 $10 :i32 + CONST $12 5 :i32 + ADD $13 $11 $12 :i32 + CONST $14 4 :i32 + ADD $15 $13 $14 :i32 + CONST $16 3 :i32 + ADD $17 $15 $16 :i32 + CONST $18 2 :i32 + ADD $19 $17 $18 :i32 + CONST $20 1 :i32 + ADD $21 $19 $20 :i32 + CONST $22 0 :i32 + ADD $23 $21 $22 :i32 + RETURN $23 :i32 diff --git a/nautilus/test/data/after_ssa/sumArray.trace b/nautilus/test/data/after_ssa/sumArray.trace new file mode 100644 index 00000000..cbd614c4 --- /dev/null +++ b/nautilus/test/data/after_ssa/sumArray.trace @@ -0,0 +1,18 @@ +B0($1:ptr,$2:i32) + CONST $3 0 :i32 + CONST $4 0 :i32 + JMP $0 B3($3,$4,$2,$1) :void +B1($2:i32,$4:i32,$3:i32,$1:ptr) + CONST $10 4 :i32 + MUL $11 $4 $10 :i32 + ADD $12 $1 $11 :ptr + LOAD $13 $12 :i32 + ADD $14 $3 $13 :i32 + CONST $15 1 :i32 + ADD $16 $4 $15 :i32 + JMP $0 B3($14,$16,$2,$1) :void +B2($3:i32) + RETURN $3 :i32 +B3($3:i32,$4:i32,$2:i32,$1:ptr) ControlFlowMerge + LT $5 $4 $2 :bool + CMP $6 $5 B1($2,$4,$3,$1) B2($3) :void diff --git a/nautilus/test/data/after_ssa/sumLoop.trace b/nautilus/test/data/after_ssa/sumLoop.trace new file mode 100644 index 00000000..17d9e974 --- /dev/null +++ b/nautilus/test/data/after_ssa/sumLoop.trace @@ -0,0 +1,15 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 0 :i32 + JMP $0 B3($2,$3,$1) :void +B1($1:i32,$3:i32,$2:i32) + CONST $6 10 :i32 + ADD $7 $2 $6 :i32 + CONST $8 1 :i32 + ADD $9 $3 $8 :i32 + JMP $0 B3($7,$9,$1) :void +B2($2:i32) + RETURN $2 :i32 +B3($2:i32,$3:i32,$1:i32) ControlFlowMerge + LT $4 $3 $1 :bool + CMP $5 $4 B1($1,$3,$2) B2($2) :void diff --git a/nautilus/test/data/after_ssa/sumOfNumbers.trace b/nautilus/test/data/after_ssa/sumOfNumbers.trace new file mode 100644 index 00000000..9c85275c --- /dev/null +++ b/nautilus/test/data/after_ssa/sumOfNumbers.trace @@ -0,0 +1,14 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 1 :i32 + JMP $0 B3($2,$3,$1) :void +B1($1:i32,$3:i32,$2:i32) + ADD $7 $2 $3 :i32 + CONST $8 1 :i32 + ADD $9 $3 $8 :i32 + JMP $0 B3($7,$9,$1) :void +B2($2:i32) + RETURN $2 :i32 +B3($2:i32,$3:i32,$1:i32) ControlFlowMerge + LTE $4 $3 $1 :bool + CMP $5 $4 B1($1,$3,$2) B2($2) :void diff --git a/nautilus/test/data/after_ssa/sumOfSquares.trace b/nautilus/test/data/after_ssa/sumOfSquares.trace new file mode 100644 index 00000000..20f3e464 --- /dev/null +++ b/nautilus/test/data/after_ssa/sumOfSquares.trace @@ -0,0 +1,15 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 1 :i32 + JMP $0 B3($2,$3,$1) :void +B1($1:i32,$3:i32,$2:i32) + MUL $6 $3 $3 :i32 + ADD $7 $2 $6 :i32 + CONST $8 1 :i32 + ADD $9 $3 $8 :i32 + JMP $0 B3($7,$9,$1) :void +B2($2:i32) + RETURN $2 :i32 +B3($2:i32,$3:i32,$1:i32) ControlFlowMerge + LTE $4 $3 $1 :bool + CMP $5 $4 B1($1,$3,$2) B2($2) :void diff --git a/nautilus/test/data/after_ssa/useWrapper.trace b/nautilus/test/data/after_ssa/useWrapper.trace new file mode 100644 index 00000000..79d3913a --- /dev/null +++ b/nautilus/test/data/after_ssa/useWrapper.trace @@ -0,0 +1,5 @@ +B0($1:ptr,$2:ptr) + CALL $3 ($1) :i32 + CALL $4 ($2) :i32 + ADD $5 $3 $4 :i32 + RETURN $5 :i32 diff --git a/nautilus/test/data/after_ssa/varyingComplexity.trace b/nautilus/test/data/after_ssa/varyingComplexity.trace new file mode 100644 index 00000000..4431d9c0 --- /dev/null +++ b/nautilus/test/data/after_ssa/varyingComplexity.trace @@ -0,0 +1,31 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 5 :i32 + LT $4 $1 $3 :bool + CMP $5 $4 B1() B2($1) :void +B1() + CONST $6 1 :i32 + JMP $0 B7($6) :void +B2($1:i32) + CONST $8 5 :i32 + GTE $9 $1 $8 :bool + CONST $10 10 :i32 + LTE $11 $1 $10 :bool + AND $12 $9 $11 :bool + CMP $13 $12 B3($1) B4() :void +B3($1:i32) + CONST $14 2 :i32 + CONST $15 7 :i32 + EQ $16 $1 $15 :bool + CMP $17 $16 B5($14) B6($14) :void +B4() + CONST $21 3 :i32 + JMP $0 B7($21) :void +B5($2:i32) + CONST $18 1 :i32 + ADD $19 $2 $18 :i32 + JMP $0 B7($19) :void +B6($2:i32) + JMP $0 B7($2) :void +B7($2:i32) + RETURN $2 :i32 diff --git a/nautilus/test/data/after_ssa/voidFuncCall.trace b/nautilus/test/data/after_ssa/voidFuncCall.trace new file mode 100644 index 00000000..d1354bb0 --- /dev/null +++ b/nautilus/test/data/after_ssa/voidFuncCall.trace @@ -0,0 +1,3 @@ +B0($1:i32,$2:i32) + CALL $7 ($1,$2) :void + RETURN $1 :i32 diff --git a/nautilus/test/data/tracing/addArrayInt32.trace b/nautilus/test/data/tracing/addArrayInt32.trace new file mode 100644 index 00000000..6e59015d --- /dev/null +++ b/nautilus/test/data/tracing/addArrayInt32.trace @@ -0,0 +1,35 @@ +B0($1:ptr,$2:ptr,$3:i32) + CONST $4 0 :i32 + JMP $0 B3() :void +B1() + ASSIGN $7 $4 :i32 + ASSIGN $8 $7 :i32 + ASSIGN $9 $8 :i32 + CONST $10 4 :i32 + MUL $11 $9 $10 :i32 + ADD $12 $1 $11 :ptr + LOAD $13 $12 :i32 + ASSIGN $14 $4 :i32 + ASSIGN $15 $14 :i32 + ASSIGN $16 $15 :i32 + CONST $17 4 :i32 + MUL $18 $16 $17 :i32 + ADD $19 $2 $18 :ptr + LOAD $20 $19 :i32 + ADD $21 $13 $20 :i32 + ASSIGN $22 $4 :i32 + ASSIGN $23 $22 :i32 + ASSIGN $24 $23 :i32 + CONST $25 4 :i32 + MUL $26 $24 $25 :i32 + ADD $27 $1 $26 :ptr + STORE $27 $21 :i32 + CONST $28 1 :i32 + ADD $29 $4 $28 :i32 + ASSIGN $4 $29 :i32 + JMP $0 B3() :void +B2() + RETURN $0 :void +B3() ControlFlowMerge + LT $5 $4 $3 :bool + CMP $6 $5 B1() B2() :void diff --git a/nautilus/test/data/tracing/andCondition.trace b/nautilus/test/data/tracing/andCondition.trace new file mode 100644 index 00000000..5161bf62 --- /dev/null +++ b/nautilus/test/data/tracing/andCondition.trace @@ -0,0 +1,15 @@ +B0($1:i32,$2:i32) + CONST $3 1 :i32 + CONST $4 8 :i32 + EQ $5 $1 $4 :bool + CONST $6 1 :i32 + EQ $7 $2 $6 :bool + AND $8 $5 $7 :bool + CMP $9 $8 B1() B2() :void +B1() + CONST $10 14 :i32 + ADD $11 $3 $10 :i32 + ASSIGN $3 $11 :i32 + RETURN $3 :i32 +B2() + RETURN $3 :i32 diff --git a/nautilus/test/data/tracing/andFunction.trace b/nautilus/test/data/tracing/andFunction.trace new file mode 100644 index 00000000..a7ad00c4 --- /dev/null +++ b/nautilus/test/data/tracing/andFunction.trace @@ -0,0 +1,21 @@ +B0($1:i32) + CONST $2 :bool + ASSIGN $3 $2 :bool + CONST $4 42 :i64 + CAST $5 $1 :i64 + EQ $6 $5 $4 :bool + AND $7 $3 $6 :bool + ASSIGN $2 $7 :bool + ASSIGN $8 $2 :bool + CONST $9 42 :i64 + CAST $10 $1 :i64 + EQ $11 $10 $9 :bool + AND $12 $8 $11 :bool + ASSIGN $2 $12 :bool + ASSIGN $13 $2 :bool + CONST $14 42 :i64 + CAST $15 $1 :i64 + EQ $16 $15 $14 :bool + AND $17 $13 $16 :bool + ASSIGN $2 $17 :bool + RETURN $2 :bool diff --git a/nautilus/test/data/tracing/castVoidPtr.trace b/nautilus/test/data/tracing/castVoidPtr.trace new file mode 100644 index 00000000..2b46f457 --- /dev/null +++ b/nautilus/test/data/tracing/castVoidPtr.trace @@ -0,0 +1,9 @@ +B0($1:ptr) + CONST $2 0 :i32 + ASSIGN $3 $2 :i32 + ASSIGN $4 $3 :i32 + CONST $5 4 :i32 + MUL $6 $4 $5 :i32 + ADD $7 $1 $6 :ptr + LOAD $8 $7 :i32 + RETURN $8 :i32 diff --git a/nautilus/test/data/tracing/collatz.trace b/nautilus/test/data/tracing/collatz.trace new file mode 100644 index 00000000..928b4f37 --- /dev/null +++ b/nautilus/test/data/tracing/collatz.trace @@ -0,0 +1,36 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 1 :i32 + JMP $0 B5() :void +B1() + CONST $6 2 :i32 + MOD $7 $1 $6 :i32 + CONST $8 0 :i32 + EQ $9 $7 $8 :bool + CMP $10 $9 B3() B4() :void +B2() + RETURN $2 :i32 +B3() + CONST $11 2 :i32 + DIV $12 $1 $11 :i32 + ASSIGN $1 $12 :i32 + CONST $13 1 :i32 + JMP $0 B6() :void +B4() + CONST $18 3 :i32 + MUL $19 $18 $1 :i32 + CONST $20 1 :i32 + ADD $21 $19 $20 :i32 + ASSIGN $1 $21 :i32 + CONST $22 1 :i32 + ASSIGN $13 $22 :i32 + JMP $0 B6() :void +B5() ControlFlowMerge + NEQ $4 $1 $3 :bool + CMP $5 $4 B1() B2() :void +B6() ControlFlowMerge + ADD $14 $2 $13 :i32 + ASSIGN $2 $14 :i32 + CONST $15 1 :i32 + ASSIGN $3 $15 :i32 + JMP $0 B5() :void diff --git a/nautilus/test/data/tracing/complexLogicalExpressions.trace b/nautilus/test/data/tracing/complexLogicalExpressions.trace new file mode 100644 index 00000000..ebed6d76 --- /dev/null +++ b/nautilus/test/data/tracing/complexLogicalExpressions.trace @@ -0,0 +1,20 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 5 :i32 + GT $4 $1 $3 :bool + CONST $5 10 :i32 + LT $6 $1 $5 :bool + AND $7 $4 $6 :bool + CONST $8 15 :i32 + GT $9 $1 $8 :bool + CONST $10 20 :i32 + LT $11 $1 $10 :bool + AND $12 $9 $11 :bool + OR $13 $7 $12 :bool + CMP $14 $13 B1() B2() :void +B1() + CONST $15 1 :i32 + ASSIGN $2 $15 :i32 + RETURN $2 :i32 +B2() + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/compoundStatements.trace b/nautilus/test/data/tracing/compoundStatements.trace new file mode 100644 index 00000000..78ace26f --- /dev/null +++ b/nautilus/test/data/tracing/compoundStatements.trace @@ -0,0 +1,14 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 5 :i32 + GT $4 $1 $3 :bool + CMP $5 $4 B1() B2() :void +B1() + CONST $6 1 :i32 + ASSIGN $2 $6 :i32 + CONST $7 2 :i32 + MUL $8 $2 $7 :i32 + ASSIGN $2 $8 :i32 + RETURN $2 :i32 +B2() + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/conditionalReturn.trace b/nautilus/test/data/tracing/conditionalReturn.trace new file mode 100644 index 00000000..7475818e --- /dev/null +++ b/nautilus/test/data/tracing/conditionalReturn.trace @@ -0,0 +1,10 @@ +B0($1:i32) + CONST $2 42 :i32 + EQ $3 $1 $2 :bool + CMP $4 $3 B1() B2() :void +B1() + CONST $5 1 :i32 + RETURN $5 :i32 +B2() + CONST $7 120 :i32 + RETURN $7 :i32 diff --git a/nautilus/test/data/tracing/countDigits.trace b/nautilus/test/data/tracing/countDigits.trace new file mode 100644 index 00000000..cd5f36a7 --- /dev/null +++ b/nautilus/test/data/tracing/countDigits.trace @@ -0,0 +1,19 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 0 :i32 + JMP $0 B3() :void +B1() + CONST $6 10 :i32 + DIV $7 $1 $6 :i32 + ASSIGN $1 $7 :i32 + CONST $8 1 :i32 + ADD $9 $2 $8 :i32 + ASSIGN $2 $9 :i32 + CONST $10 0 :i32 + ASSIGN $3 $10 :i32 + JMP $0 B3() :void +B2() + RETURN $2 :i32 +B3() ControlFlowMerge + NEQ $4 $1 $3 :bool + CMP $5 $4 B1() B2() :void diff --git a/nautilus/test/data/tracing/decimalToBinary.trace b/nautilus/test/data/tracing/decimalToBinary.trace new file mode 100644 index 00000000..9bd19814 --- /dev/null +++ b/nautilus/test/data/tracing/decimalToBinary.trace @@ -0,0 +1,25 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 1 :i32 + CONST $4 2 :i32 + JMP $0 B3() :void +B1() + CONST $15 2 :i32 + ASSIGN $4 $15 :i32 + JMP $0 B3() :void +B2() + RETURN $2 :i32 +B3() ControlFlowMerge + MOD $5 $1 $4 :i32 + MUL $6 $5 $3 :i32 + ADD $7 $2 $6 :i32 + ASSIGN $2 $7 :i32 + CONST $8 10 :i32 + MUL $9 $3 $8 :i32 + ASSIGN $3 $9 :i32 + CONST $10 2 :i32 + DIV $11 $1 $10 :i32 + ASSIGN $1 $11 :i32 + CONST $12 0 :i32 + GT $13 $1 $12 :bool + CMP $14 $13 B1() B2() :void diff --git a/nautilus/test/data/tracing/deeplyNestedIfElseCondition.trace b/nautilus/test/data/tracing/deeplyNestedIfElseCondition.trace new file mode 100644 index 00000000..36fd4e89 --- /dev/null +++ b/nautilus/test/data/tracing/deeplyNestedIfElseCondition.trace @@ -0,0 +1,56 @@ +B0() + CONST $1 5 :i32 + CONST $2 8 :i32 + LT $3 $1 $2 :bool + CMP $4 $3 B1() B2() :void +B1() + CONST $5 6 :i32 + GT $6 $1 $5 :bool + CMP $7 $6 B3() B4() :void +B2() + CONST $13 20 :i32 + ADD $14 $1 $13 :i32 + ASSIGN $1 $14 :i32 + CONST $15 2 :i32 + ASSIGN $10 $15 :i32 + JMP $0 B5() :void +B3() + CONST $8 10 :i32 + ADD $9 $1 $8 :i32 + ASSIGN $1 $9 :i32 + CONST $10 2 :i32 + JMP $0 B5() :void +B4() + CONST $16 6 :i32 + LT $17 $1 $16 :bool + CMP $18 $17 B6() B7() :void +B5() ControlFlowMerge + JMP $0 B10() :void +B6() + CONST $19 5 :i32 + EQ $20 $1 $19 :bool + CMP $21 $20 B8() B9() :void +B7() + CONST $25 2 :i32 + ASSIGN $10 $25 :i32 + JMP $0 B11() :void +B8() + CONST $22 5 :i32 + ADD $23 $1 $22 :i32 + ASSIGN $1 $23 :i32 + CONST $24 2 :i32 + ASSIGN $10 $24 :i32 + JMP $0 B10() :void +B9() + CONST $26 2 :i32 + ASSIGN $10 $26 :i32 + JMP $0 B12() :void +B10() ControlFlowMerge + JMP $0 B11() :void +B11() ControlFlowMerge + JMP $0 B12() :void +B12() ControlFlowMerge + ADD $11 $1 $10 :i32 + ASSIGN $1 $11 :i32 + ASSIGN $12 $1 :i32 + RETURN $12 :i32 diff --git a/nautilus/test/data/tracing/deeplyNestedIfElseIfCondition.trace b/nautilus/test/data/tracing/deeplyNestedIfElseIfCondition.trace new file mode 100644 index 00000000..20ac3e4f --- /dev/null +++ b/nautilus/test/data/tracing/deeplyNestedIfElseIfCondition.trace @@ -0,0 +1,46 @@ +B0() + CONST $1 5 :i32 + CONST $2 8 :i32 + LT $3 $1 $2 :bool + CMP $4 $3 B1() B2() :void +B1() + CONST $5 10 :i32 + ADD $6 $1 $5 :i32 + ASSIGN $1 $6 :i32 + CONST $7 2 :i32 + JMP $0 B5() :void +B2() + CONST $10 5 :i32 + EQ $11 $1 $10 :bool + CMP $12 $11 B3() B4() :void +B3() + CONST $13 5 :i32 + ADD $14 $1 $13 :i32 + ASSIGN $1 $14 :i32 + CONST $15 2 :i32 + ASSIGN $7 $15 :i32 + JMP $0 B5() :void +B4() + CONST $16 4 :i32 + EQ $17 $1 $16 :bool + CMP $18 $17 B6() B7() :void +B5() ControlFlowMerge + JMP $0 B8() :void +B6() + CONST $19 4 :i32 + ADD $20 $1 $19 :i32 + ASSIGN $1 $20 :i32 + CONST $21 2 :i32 + ASSIGN $7 $21 :i32 + JMP $0 B8() :void +B7() + CONST $22 2 :i32 + ASSIGN $7 $22 :i32 + JMP $0 B9() :void +B8() ControlFlowMerge + JMP $0 B9() :void +B9() ControlFlowMerge + ADD $8 $1 $7 :i32 + ASSIGN $1 $8 :i32 + ASSIGN $9 $1 :i32 + RETURN $9 :i32 diff --git a/nautilus/test/data/tracing/digitSum.trace b/nautilus/test/data/tracing/digitSum.trace new file mode 100644 index 00000000..9ca53a15 --- /dev/null +++ b/nautilus/test/data/tracing/digitSum.trace @@ -0,0 +1,20 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B3() :void +B1() + CONST $11 10 :i32 + ASSIGN $3 $11 :i32 + JMP $0 B3() :void +B2() + RETURN $2 :i32 +B3() ControlFlowMerge + MOD $4 $1 $3 :i32 + ADD $5 $2 $4 :i32 + ASSIGN $2 $5 :i32 + CONST $6 10 :i32 + DIV $7 $1 $6 :i32 + ASSIGN $1 $7 :i32 + CONST $8 0 :i32 + GT $9 $1 $8 :bool + CMP $10 $9 B1() B2() :void diff --git a/nautilus/test/data/tracing/doubleIfCondition.trace b/nautilus/test/data/tracing/doubleIfCondition.trace new file mode 100644 index 00000000..879fcda9 --- /dev/null +++ b/nautilus/test/data/tracing/doubleIfCondition.trace @@ -0,0 +1,30 @@ +B0() + CONST $1 1 :i32 + CONST $2 8 :i32 + EQ $3 $1 $2 :bool + CMP $4 $3 B1() B2() :void +B1() + CONST $5 1 :i32 + JMP $0 B5() :void +B2() + CONST $13 1 :i32 + ASSIGN $5 $13 :i32 + JMP $0 B5() :void +B3() + CONST $8 20 :i32 + ADD $9 $1 $8 :i32 + ASSIGN $1 $9 :i32 + CONST $10 2 :i32 + JMP $0 B6() :void +B4() + CONST $14 2 :i32 + ASSIGN $10 $14 :i32 + JMP $0 B6() :void +B5() ControlFlowMerge + EQ $6 $1 $5 :bool + CMP $7 $6 B3() B4() :void +B6() ControlFlowMerge + ADD $11 $1 $10 :i32 + ASSIGN $1 $11 :i32 + ASSIGN $12 $1 :i32 + RETURN $12 :i32 diff --git a/nautilus/test/data/tracing/elseOnlySumLoop.trace b/nautilus/test/data/tracing/elseOnlySumLoop.trace new file mode 100644 index 00000000..c2a76d1c --- /dev/null +++ b/nautilus/test/data/tracing/elseOnlySumLoop.trace @@ -0,0 +1,30 @@ +B0() + CONST $1 1 :i32 + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B5() :void +B1() + CONST $6 50 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3() B4() :void +B2() + RETURN $1 :i32 +B3() + CONST $9 1 :i32 + JMP $0 B6() :void +B4() + CONST $12 1 :i32 + ADD $13 $1 $12 :i32 + ASSIGN $1 $13 :i32 + CONST $14 1 :i32 + ASSIGN $9 $14 :i32 + JMP $0 B6() :void +B5() ControlFlowMerge + LT $4 $2 $3 :bool + CMP $5 $4 B1() B2() :void +B6() ControlFlowMerge + ADD $10 $2 $9 :i32 + ASSIGN $2 $10 :i32 + CONST $11 10 :i32 + ASSIGN $3 $11 :i32 + JMP $0 B5() :void diff --git a/nautilus/test/data/tracing/factorial.trace b/nautilus/test/data/tracing/factorial.trace new file mode 100644 index 00000000..d796828b --- /dev/null +++ b/nautilus/test/data/tracing/factorial.trace @@ -0,0 +1,19 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 1 :i32 + JMP $0 B3() :void +B1() + ASSIGN $6 $1 :i32 + MUL $7 $2 $6 :i32 + ASSIGN $2 $7 :i32 + CONST $8 1 :i32 + SUB $9 $1 $8 :i32 + ASSIGN $1 $9 :i32 + CONST $10 1 :i32 + ASSIGN $3 $10 :i32 + JMP $0 B3() :void +B2() + RETURN $2 :i32 +B3() ControlFlowMerge + GT $4 $1 $3 :bool + CMP $5 $4 B1() B2() :void diff --git a/nautilus/test/data/tracing/fibonacci.trace b/nautilus/test/data/tracing/fibonacci.trace new file mode 100644 index 00000000..d832f63c --- /dev/null +++ b/nautilus/test/data/tracing/fibonacci.trace @@ -0,0 +1,20 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 1 :i32 + CONST $4 0 :i32 + CONST $5 2 :i32 + JMP $0 B3() :void +B1() + ADD $8 $2 $3 :i32 + ASSIGN $4 $8 :i32 + ASSIGN $2 $3 :i32 + ASSIGN $3 $4 :i32 + CONST $9 1 :i32 + ADD $10 $5 $9 :i32 + ASSIGN $5 $10 :i32 + JMP $0 B3() :void +B2() + RETURN $3 :i32 +B3() ControlFlowMerge + LTE $6 $5 $1 :bool + CMP $7 $6 B1() B2() :void diff --git a/nautilus/test/data/tracing/gcd.trace b/nautilus/test/data/tracing/gcd.trace new file mode 100644 index 00000000..f6452a8e --- /dev/null +++ b/nautilus/test/data/tracing/gcd.trace @@ -0,0 +1,16 @@ +B0($1:i32,$2:i32) + CONST $3 0 :i32 + JMP $0 B3() :void +B1() + ASSIGN $6 $2 :i32 + MOD $7 $1 $2 :i32 + ASSIGN $2 $7 :i32 + ASSIGN $1 $6 :i32 + CONST $8 0 :i32 + ASSIGN $3 $8 :i32 + JMP $0 B3() :void +B2() + RETURN $1 :i32 +B3() ControlFlowMerge + NEQ $4 $2 $3 :bool + CMP $5 $4 B1() B2() :void diff --git a/nautilus/test/data/tracing/ifElseIfCondition.trace b/nautilus/test/data/tracing/ifElseIfCondition.trace new file mode 100644 index 00000000..9a30dde8 --- /dev/null +++ b/nautilus/test/data/tracing/ifElseIfCondition.trace @@ -0,0 +1,33 @@ +B0() + CONST $1 1 :i32 + CONST $2 8 :i32 + EQ $3 $1 $2 :bool + CMP $4 $3 B1() B2() :void +B1() + CONST $5 14 :i32 + ADD $6 $1 $5 :i32 + ASSIGN $1 $6 :i32 + CONST $7 2 :i32 + JMP $0 B5() :void +B2() + CONST $10 1 :i32 + EQ $11 $1 $10 :bool + CMP $12 $11 B3() B4() :void +B3() + CONST $13 20 :i32 + ADD $14 $1 $13 :i32 + ASSIGN $1 $14 :i32 + CONST $15 2 :i32 + ASSIGN $7 $15 :i32 + JMP $0 B5() :void +B4() + CONST $16 2 :i32 + ASSIGN $7 $16 :i32 + JMP $0 B6() :void +B5() ControlFlowMerge + JMP $0 B6() :void +B6() ControlFlowMerge + ADD $8 $1 $7 :i32 + ASSIGN $1 $8 :i32 + ASSIGN $9 $1 :i32 + RETURN $9 :i32 diff --git a/nautilus/test/data/tracing/ifElseSumLoop.trace b/nautilus/test/data/tracing/ifElseSumLoop.trace new file mode 100644 index 00000000..95d3aab3 --- /dev/null +++ b/nautilus/test/data/tracing/ifElseSumLoop.trace @@ -0,0 +1,33 @@ +B0() + CONST $1 1 :i32 + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B5() :void +B1() + CONST $6 50 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3() B4() :void +B2() + RETURN $1 :i32 +B3() + CONST $9 10 :i32 + ADD $10 $1 $9 :i32 + ASSIGN $1 $10 :i32 + CONST $11 1 :i32 + JMP $0 B6() :void +B4() + CONST $14 1 :i32 + ADD $15 $1 $14 :i32 + ASSIGN $1 $15 :i32 + CONST $16 1 :i32 + ASSIGN $11 $16 :i32 + JMP $0 B6() :void +B5() ControlFlowMerge + LT $4 $2 $3 :bool + CMP $5 $4 B1() B2() :void +B6() ControlFlowMerge + ADD $12 $2 $11 :i32 + ASSIGN $2 $12 :i32 + CONST $13 10 :i32 + ASSIGN $3 $13 :i32 + JMP $0 B5() :void diff --git a/nautilus/test/data/tracing/ifInsideLoop.trace b/nautilus/test/data/tracing/ifInsideLoop.trace new file mode 100644 index 00000000..1f9798d7 --- /dev/null +++ b/nautilus/test/data/tracing/ifInsideLoop.trace @@ -0,0 +1,29 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 0 :i32 + JMP $0 B5() :void +B1() + CONST $6 2 :i32 + MOD $7 $3 $6 :i32 + CONST $8 0 :i32 + EQ $9 $7 $8 :bool + CMP $10 $9 B3() B4() :void +B2() + RETURN $2 :i32 +B3() + CONST $11 1 :i32 + ADD $12 $2 $11 :i32 + ASSIGN $2 $12 :i32 + CONST $13 1 :i32 + JMP $0 B6() :void +B4() + CONST $17 1 :i32 + ASSIGN $13 $17 :i32 + JMP $0 B6() :void +B5() ControlFlowMerge + LT $4 $3 $1 :bool + CMP $5 $4 B1() B2() :void +B6() ControlFlowMerge + ADD $14 $3 $13 :i32 + ASSIGN $3 $14 :i32 + JMP $0 B5() :void diff --git a/nautilus/test/data/tracing/ifNotEqual.trace b/nautilus/test/data/tracing/ifNotEqual.trace new file mode 100644 index 00000000..11076b6a --- /dev/null +++ b/nautilus/test/data/tracing/ifNotEqual.trace @@ -0,0 +1,11 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 5 :i32 + NEQ $4 $1 $3 :bool + CMP $5 $4 B1() B2() :void +B1() + CONST $6 2 :i32 + ASSIGN $2 $6 :i32 + RETURN $2 :i32 +B2() + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/ifSumLoop.trace b/nautilus/test/data/tracing/ifSumLoop.trace new file mode 100644 index 00000000..bbf0c322 --- /dev/null +++ b/nautilus/test/data/tracing/ifSumLoop.trace @@ -0,0 +1,30 @@ +B0() + CONST $1 1 :i32 + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B5() :void +B1() + CONST $6 50 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3() B4() :void +B2() + RETURN $1 :i32 +B3() + CONST $9 10 :i32 + ADD $10 $1 $9 :i32 + ASSIGN $1 $10 :i32 + CONST $11 1 :i32 + JMP $0 B6() :void +B4() + CONST $14 1 :i32 + ASSIGN $11 $14 :i32 + JMP $0 B6() :void +B5() ControlFlowMerge + LT $4 $2 $3 :bool + CMP $5 $4 B1() B2() :void +B6() ControlFlowMerge + ADD $12 $2 $11 :i32 + ASSIGN $2 $12 :i32 + CONST $13 10 :i32 + ASSIGN $3 $13 :i32 + JMP $0 B5() :void diff --git a/nautilus/test/data/tracing/ifThenCondition.trace b/nautilus/test/data/tracing/ifThenCondition.trace new file mode 100644 index 00000000..2338d7a5 --- /dev/null +++ b/nautilus/test/data/tracing/ifThenCondition.trace @@ -0,0 +1,18 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 42 :i32 + EQ $4 $1 $3 :bool + CMP $5 $4 B1() B2() :void +B1() + CONST $6 1 :i32 + ADD $7 $2 $6 :i32 + ASSIGN $2 $7 :i32 + CONST $8 42 :i32 + JMP $0 B3() :void +B2() + CONST $11 42 :i32 + ASSIGN $8 $11 :i32 + JMP $0 B3() :void +B3() ControlFlowMerge + ADD $9 $2 $8 :i32 + RETURN $9 :i32 diff --git a/nautilus/test/data/tracing/ifThenElseCondition.trace b/nautilus/test/data/tracing/ifThenElseCondition.trace new file mode 100644 index 00000000..30ab829b --- /dev/null +++ b/nautilus/test/data/tracing/ifThenElseCondition.trace @@ -0,0 +1,21 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 42 :i32 + EQ $4 $1 $3 :bool + CMP $5 $4 B1() B2() :void +B1() + CONST $6 1 :i32 + ADD $7 $2 $6 :i32 + ASSIGN $2 $7 :i32 + CONST $8 42 :i32 + JMP $0 B3() :void +B2() + CONST $11 42 :i32 + ADD $12 $2 $11 :i32 + ASSIGN $2 $12 :i32 + CONST $13 42 :i32 + ASSIGN $8 $13 :i32 + JMP $0 B3() :void +B3() ControlFlowMerge + ADD $9 $2 $8 :i32 + RETURN $9 :i32 diff --git a/nautilus/test/data/tracing/ifWithFunctionCall.trace b/nautilus/test/data/tracing/ifWithFunctionCall.trace new file mode 100644 index 00000000..1d3fc08b --- /dev/null +++ b/nautilus/test/data/tracing/ifWithFunctionCall.trace @@ -0,0 +1,14 @@ +B0($1:i32) + CONST $2 0 :i32 + ASSIGN $3 $1 :i32 + CONST $4 2 :i32 + MUL $5 $3 $4 :i32 + CONST $6 10 :i32 + GT $7 $5 $6 :bool + CMP $8 $7 B1() B2() :void +B1() + CONST $9 1 :i32 + ASSIGN $2 $9 :i32 + RETURN $2 :i32 +B2() + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/ifWithTernary.trace b/nautilus/test/data/tracing/ifWithTernary.trace new file mode 100644 index 00000000..74fc951e --- /dev/null +++ b/nautilus/test/data/tracing/ifWithTernary.trace @@ -0,0 +1,23 @@ +B0($1:i32) + CONST $2 5 :i32 + GT $3 $1 $2 :bool + CMP $4 $3 B1() B2() :void +B1() + CONST $5 10 :i32 + CONST $6 0 :i32 + JMP $0 B5() :void +B2() + CONST $11 5 :i32 + ASSIGN $5 $11 :i32 + CONST $12 0 :i32 + ASSIGN $6 $12 :i32 + JMP $0 B5() :void +B3() + CONST $9 -1 :i32 + ASSIGN $5 $9 :i32 + RETURN $5 :i32 +B4() + RETURN $5 :i32 +B5() ControlFlowMerge + EQ $7 $1 $6 :bool + CMP $8 $7 B3() B4() :void diff --git a/nautilus/test/data/tracing/isPrime.trace b/nautilus/test/data/tracing/isPrime.trace new file mode 100644 index 00000000..c68552ae --- /dev/null +++ b/nautilus/test/data/tracing/isPrime.trace @@ -0,0 +1,29 @@ +B0($1:i32) + CONST $2 :bool + CONST $3 :bool + CONST $4 1 :i32 + LTE $5 $1 $4 :bool + CMP $6 $5 B1() B2() :void +B1() + RETURN $2 :bool +B2() + CONST $8 2 :i32 + JMP $0 B7() :void +B3() + MOD $12 $1 $8 :i32 + CONST $13 0 :i32 + EQ $14 $12 $13 :bool + CMP $15 $14 B5() B6() :void +B4() + RETURN $3 :bool +B5() + RETURN $2 :bool +B6() + CONST $18 1 :i32 + ADD $19 $8 $18 :i32 + ASSIGN $8 $19 :i32 + JMP $0 B7() :void +B7() ControlFlowMerge + MUL $9 $8 $8 :i32 + LTE $10 $9 $1 :bool + CMP $11 $10 B3() B4() :void diff --git a/nautilus/test/data/tracing/logicalAnd.trace b/nautilus/test/data/tracing/logicalAnd.trace new file mode 100644 index 00000000..c7f4191d --- /dev/null +++ b/nautilus/test/data/tracing/logicalAnd.trace @@ -0,0 +1,14 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 5 :i32 + GT $4 $1 $3 :bool + CONST $5 15 :i32 + LT $6 $1 $5 :bool + AND $7 $4 $6 :bool + CMP $8 $7 B1() B2() :void +B1() + CONST $9 1 :i32 + ASSIGN $2 $9 :i32 + RETURN $2 :i32 +B2() + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/logicalOr.trace b/nautilus/test/data/tracing/logicalOr.trace new file mode 100644 index 00000000..f2dfc411 --- /dev/null +++ b/nautilus/test/data/tracing/logicalOr.trace @@ -0,0 +1,14 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 10 :i32 + EQ $4 $1 $3 :bool + CONST $5 20 :i32 + EQ $6 $1 $5 :bool + OR $7 $4 $6 :bool + CMP $8 $7 B1() B2() :void +B1() + CONST $9 1 :i32 + ASSIGN $2 $9 :i32 + RETURN $2 :i32 +B2() + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/logicalXOR.trace b/nautilus/test/data/tracing/logicalXOR.trace new file mode 100644 index 00000000..563d6cc8 --- /dev/null +++ b/nautilus/test/data/tracing/logicalXOR.trace @@ -0,0 +1,14 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 10 :i32 + LT $4 $1 $3 :bool + CONST $5 5 :i32 + GT $6 $1 $5 :bool + NEQ $7 $4 $6 :bool + CMP $8 $7 B1() B2() :void +B1() + CONST $9 1 :i32 + ASSIGN $2 $9 :i32 + RETURN $2 :i32 +B2() + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/loopDirectCall.trace b/nautilus/test/data/tracing/loopDirectCall.trace new file mode 100644 index 00000000..3d31d1b0 --- /dev/null +++ b/nautilus/test/data/tracing/loopDirectCall.trace @@ -0,0 +1,20 @@ +B0($1:i32,$2:i32) + CONST $3 0 :i32 + CONST $4 0 :i32 + JMP $0 B3() :void +B1() + ASSIGN $7 $3 :i32 + ASSIGN $8 $2 :i32 + ASSIGN $9 $7 :i32 + ASSIGN $10 $8 :i32 + CALL $11 ($9,$10) :i32 + ASSIGN $3 $11 :i32 + CONST $12 1 :i32 + ADD $13 $4 $12 :i32 + ASSIGN $4 $13 :i32 + JMP $0 B3() :void +B2() + RETURN $3 :i32 +B3() ControlFlowMerge + LT $5 $4 $1 :bool + CMP $6 $5 B1() B2() :void diff --git a/nautilus/test/data/tracing/multipleConditions.trace b/nautilus/test/data/tracing/multipleConditions.trace new file mode 100644 index 00000000..e391a20d --- /dev/null +++ b/nautilus/test/data/tracing/multipleConditions.trace @@ -0,0 +1,17 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 0 :i32 + GT $4 $1 $3 :bool + CONST $5 10 :i32 + LT $6 $1 $5 :bool + AND $7 $4 $6 :bool + CONST $8 20 :i32 + EQ $9 $1 $8 :bool + OR $10 $7 $9 :bool + CMP $11 $10 B1() B2() :void +B1() + CONST $12 1 :i32 + ASSIGN $2 $12 :i32 + RETURN $2 :i32 +B2() + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/nestedElseOnlySumLoop.trace b/nautilus/test/data/tracing/nestedElseOnlySumLoop.trace new file mode 100644 index 00000000..f72ec525 --- /dev/null +++ b/nautilus/test/data/tracing/nestedElseOnlySumLoop.trace @@ -0,0 +1,43 @@ +B0() + CONST $1 1 :i32 + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B7() :void +B1() + CONST $6 50 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3() B4() :void +B2() + RETURN $1 :i32 +B3() + CONST $9 40 :i32 + LT $10 $1 $9 :bool + CMP $11 $10 B5() B6() :void +B4() + CONST $15 1 :i32 + ADD $16 $1 $15 :i32 + ASSIGN $1 $16 :i32 + CONST $17 1 :i32 + ASSIGN $12 $17 :i32 + JMP $0 B8() :void +B5() + CONST $12 1 :i32 + JMP $0 B8() :void +B6() + CONST $18 100 :i32 + ADD $19 $1 $18 :i32 + ASSIGN $1 $19 :i32 + CONST $20 1 :i32 + ASSIGN $12 $20 :i32 + JMP $0 B9() :void +B7() ControlFlowMerge + LT $4 $2 $3 :bool + CMP $5 $4 B1() B2() :void +B8() ControlFlowMerge + JMP $0 B9() :void +B9() ControlFlowMerge + ADD $13 $2 $12 :i32 + ASSIGN $2 $13 :i32 + CONST $14 10 :i32 + ASSIGN $3 $14 :i32 + JMP $0 B7() :void diff --git a/nautilus/test/data/tracing/nestedIf.trace b/nautilus/test/data/tracing/nestedIf.trace new file mode 100644 index 00000000..2afe8f2b --- /dev/null +++ b/nautilus/test/data/tracing/nestedIf.trace @@ -0,0 +1,19 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 20 :i32 + LT $4 $1 $3 :bool + CMP $5 $4 B1() B2() :void +B1() + CONST $6 10 :i32 + GT $7 $1 $6 :bool + CMP $8 $7 B3() B4() :void +B2() + RETURN $2 :i32 +B3() + CONST $9 2 :i32 + ASSIGN $2 $9 :i32 + RETURN $2 :i32 +B4() + CONST $12 3 :i32 + ASSIGN $2 $12 :i32 + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/nestedIfElseDifferentLevels.trace b/nautilus/test/data/tracing/nestedIfElseDifferentLevels.trace new file mode 100644 index 00000000..63d2954a --- /dev/null +++ b/nautilus/test/data/tracing/nestedIfElseDifferentLevels.trace @@ -0,0 +1,29 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 0 :i32 + GT $4 $1 $3 :bool + CMP $5 $4 B1() B2() :void +B1() + CONST $6 5 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3() B4() :void +B2() + CONST $11 -1 :i32 + ASSIGN $2 $11 :i32 + RETURN $2 :i32 +B3() + CONST $9 1 :i32 + ASSIGN $2 $9 :i32 + RETURN $2 :i32 +B4() + CONST $13 2 :i32 + ASSIGN $2 $13 :i32 + CONST $14 6 :i32 + EQ $15 $1 $14 :bool + CMP $16 $15 B5() B6() :void +B5() + CONST $17 3 :i32 + ASSIGN $2 $17 :i32 + RETURN $2 :i32 +B6() + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/nestedIfElseSumLoop.trace b/nautilus/test/data/tracing/nestedIfElseSumLoop.trace new file mode 100644 index 00000000..5565b77b --- /dev/null +++ b/nautilus/test/data/tracing/nestedIfElseSumLoop.trace @@ -0,0 +1,46 @@ +B0() + CONST $1 1 :i32 + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B7() :void +B1() + CONST $6 50 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3() B4() :void +B2() + RETURN $1 :i32 +B3() + CONST $9 40 :i32 + LT $10 $1 $9 :bool + CMP $11 $10 B5() B6() :void +B4() + CONST $17 1 :i32 + ADD $18 $1 $17 :i32 + ASSIGN $1 $18 :i32 + CONST $19 1 :i32 + ASSIGN $14 $19 :i32 + JMP $0 B8() :void +B5() + CONST $12 10 :i32 + ADD $13 $1 $12 :i32 + ASSIGN $1 $13 :i32 + CONST $14 1 :i32 + JMP $0 B8() :void +B6() + CONST $20 100 :i32 + ADD $21 $1 $20 :i32 + ASSIGN $1 $21 :i32 + CONST $22 1 :i32 + ASSIGN $14 $22 :i32 + JMP $0 B9() :void +B7() ControlFlowMerge + LT $4 $2 $3 :bool + CMP $5 $4 B1() B2() :void +B8() ControlFlowMerge + JMP $0 B9() :void +B9() ControlFlowMerge + ADD $15 $2 $14 :i32 + ASSIGN $2 $15 :i32 + CONST $16 10 :i32 + ASSIGN $3 $16 :i32 + JMP $0 B7() :void diff --git a/nautilus/test/data/tracing/nestedIfNoElseCondition.trace b/nautilus/test/data/tracing/nestedIfNoElseCondition.trace new file mode 100644 index 00000000..9fe8a433 --- /dev/null +++ b/nautilus/test/data/tracing/nestedIfNoElseCondition.trace @@ -0,0 +1,34 @@ +B0($1:i32,$2:i32) + CONST $3 42 :i32 + EQ $4 $1 $3 :bool + CMP $5 $4 B1() B2() :void +B1() + CONST $6 4 :i32 + ADD $7 $2 $6 :i32 + ASSIGN $2 $7 :i32 + CONST $8 2 :i32 + JMP $0 B5() :void +B2() + CONST $13 9 :i32 + ADD $14 $2 $13 :i32 + ASSIGN $2 $14 :i32 + CONST $15 8 :i32 + EQ $16 $2 $15 :bool + CMP $17 $16 B3() B4() :void +B3() + CONST $18 14 :i32 + ADD $19 $2 $18 :i32 + CONST $20 2 :i32 + ASSIGN $8 $20 :i32 + JMP $0 B5() :void +B4() + CONST $23 2 :i32 + ASSIGN $8 $23 :i32 + JMP $0 B6() :void +B5() ControlFlowMerge + JMP $0 B6() :void +B6() ControlFlowMerge + ADD $9 $2 $8 :i32 + ASSIGN $2 $9 :i32 + ASSIGN $10 $2 :i32 + RETURN $10 :i32 diff --git a/nautilus/test/data/tracing/nestedIfSumLoop.trace b/nautilus/test/data/tracing/nestedIfSumLoop.trace new file mode 100644 index 00000000..72ecd5b8 --- /dev/null +++ b/nautilus/test/data/tracing/nestedIfSumLoop.trace @@ -0,0 +1,43 @@ +B0() + CONST $1 1 :i32 + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B7() :void +B1() + CONST $6 50 :i32 + LT $7 $1 $6 :bool + CMP $8 $7 B3() B4() :void +B2() + RETURN $1 :i32 +B3() + CONST $9 40 :i32 + LT $10 $1 $9 :bool + CMP $11 $10 B5() B6() :void +B4() + CONST $17 1 :i32 + ADD $18 $1 $17 :i32 + ASSIGN $1 $18 :i32 + CONST $19 1 :i32 + ASSIGN $14 $19 :i32 + JMP $0 B8() :void +B5() + CONST $12 10 :i32 + ADD $13 $1 $12 :i32 + ASSIGN $1 $13 :i32 + CONST $14 1 :i32 + JMP $0 B8() :void +B6() + CONST $20 1 :i32 + ASSIGN $14 $20 :i32 + JMP $0 B9() :void +B7() ControlFlowMerge + LT $4 $2 $3 :bool + CMP $5 $4 B1() B2() :void +B8() ControlFlowMerge + JMP $0 B9() :void +B9() ControlFlowMerge + ADD $15 $2 $14 :i32 + ASSIGN $2 $15 :i32 + CONST $16 10 :i32 + ASSIGN $3 $16 :i32 + JMP $0 B7() :void diff --git a/nautilus/test/data/tracing/nestedIfThenElseCondition.trace b/nautilus/test/data/tracing/nestedIfThenElseCondition.trace new file mode 100644 index 00000000..4c3f7552 --- /dev/null +++ b/nautilus/test/data/tracing/nestedIfThenElseCondition.trace @@ -0,0 +1,29 @@ +B0($1:i32,$2:i32) + CONST $3 42 :i32 + EQ $4 $1 $3 :bool + CMP $5 $4 B1() B2() :void +B1() + CONST $6 2 :i32 + JMP $0 B5() :void +B2() + CONST $11 8 :i32 + EQ $12 $2 $11 :bool + CMP $13 $12 B3() B4() :void +B3() + CONST $14 2 :i32 + ASSIGN $6 $14 :i32 + JMP $0 B5() :void +B4() + CONST $17 2 :i32 + ADD $18 $2 $17 :i32 + ASSIGN $2 $18 :i32 + CONST $19 2 :i32 + ASSIGN $6 $19 :i32 + JMP $0 B6() :void +B5() ControlFlowMerge + JMP $0 B6() :void +B6() ControlFlowMerge + ADD $7 $2 $6 :i32 + ASSIGN $2 $7 :i32 + ASSIGN $8 $2 :i32 + RETURN $8 :i32 diff --git a/nautilus/test/data/tracing/nestedSumLoop.trace b/nautilus/test/data/tracing/nestedSumLoop.trace new file mode 100644 index 00000000..ad2c81cb --- /dev/null +++ b/nautilus/test/data/tracing/nestedSumLoop.trace @@ -0,0 +1,28 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 0 :i32 + JMP $0 B6() :void +B1() + CONST $6 0 :i32 + JMP $0 B5() :void +B2() + RETURN $2 :i32 +B3() + CONST $9 10 :i32 + ADD $10 $2 $9 :i32 + ASSIGN $2 $10 :i32 + CONST $11 1 :i32 + ADD $12 $6 $11 :i32 + ASSIGN $6 $12 :i32 + JMP $0 B5() :void +B4() + CONST $15 1 :i32 + ADD $16 $3 $15 :i32 + ASSIGN $3 $16 :i32 + JMP $0 B6() :void +B5() ControlFlowMerge + LT $7 $6 $1 :bool + CMP $8 $7 B3() B4() :void +B6() ControlFlowMerge + LT $4 $3 $1 :bool + CMP $5 $4 B1() B2() :void diff --git a/nautilus/test/data/tracing/orCondition.trace b/nautilus/test/data/tracing/orCondition.trace new file mode 100644 index 00000000..120b5ea7 --- /dev/null +++ b/nautilus/test/data/tracing/orCondition.trace @@ -0,0 +1,15 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 8 :i32 + EQ $4 $1 $3 :bool + CONST $5 1 :i32 + EQ $6 $1 $5 :bool + OR $7 $4 $6 :bool + CMP $8 $7 B1() B2() :void +B1() + CONST $9 14 :i32 + ADD $10 $2 $9 :i32 + ASSIGN $2 $10 :i32 + RETURN $2 :i32 +B2() + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/passCustomStruct.trace b/nautilus/test/data/tracing/passCustomStruct.trace new file mode 100644 index 00000000..0976f26e --- /dev/null +++ b/nautilus/test/data/tracing/passCustomStruct.trace @@ -0,0 +1,3 @@ +B0($1:ptr) + CALL $2 ($1) :i32 + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/reverseNumber.trace b/nautilus/test/data/tracing/reverseNumber.trace new file mode 100644 index 00000000..25bdaf04 --- /dev/null +++ b/nautilus/test/data/tracing/reverseNumber.trace @@ -0,0 +1,22 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 10 :i32 + JMP $0 B3() :void +B1() + CONST $13 10 :i32 + ASSIGN $3 $13 :i32 + JMP $0 B3() :void +B2() + RETURN $2 :i32 +B3() ControlFlowMerge + MUL $4 $2 $3 :i32 + CONST $5 10 :i32 + MOD $6 $1 $5 :i32 + ADD $7 $4 $6 :i32 + ASSIGN $2 $7 :i32 + CONST $8 10 :i32 + DIV $9 $1 $8 :i32 + ASSIGN $1 $9 :i32 + CONST $10 0 :i32 + GT $11 $1 $10 :bool + CMP $12 $11 B1() B2() :void diff --git a/nautilus/test/data/tracing/shortCircuitEvaluation.trace b/nautilus/test/data/tracing/shortCircuitEvaluation.trace new file mode 100644 index 00000000..a7e1c600 --- /dev/null +++ b/nautilus/test/data/tracing/shortCircuitEvaluation.trace @@ -0,0 +1,16 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 0 :i32 + NEQ $4 $1 $3 :bool + CONST $5 10 :i32 + DIV $6 $5 $1 :i32 + CONST $7 1 :i32 + GT $8 $6 $7 :bool + AND $9 $4 $8 :bool + CMP $10 $9 B1() B2() :void +B1() + CONST $11 1 :i32 + ASSIGN $2 $11 :i32 + RETURN $2 :i32 +B2() + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/simpleDirectCall.trace b/nautilus/test/data/tracing/simpleDirectCall.trace new file mode 100644 index 00000000..fa485e14 --- /dev/null +++ b/nautilus/test/data/tracing/simpleDirectCall.trace @@ -0,0 +1,7 @@ +B0($1:i32,$2:i32) + ASSIGN $3 $1 :i32 + ASSIGN $4 $2 :i32 + ASSIGN $5 $3 :i32 + ASSIGN $6 $4 :i32 + CALL $7 ($5,$6) :i32 + RETURN $7 :i32 diff --git a/nautilus/test/data/tracing/specializeType.trace b/nautilus/test/data/tracing/specializeType.trace new file mode 100644 index 00000000..0976f26e --- /dev/null +++ b/nautilus/test/data/tracing/specializeType.trace @@ -0,0 +1,3 @@ +B0($1:ptr) + CALL $2 ($1) :i32 + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/staticLoop.trace b/nautilus/test/data/tracing/staticLoop.trace new file mode 100644 index 00000000..60c02701 --- /dev/null +++ b/nautilus/test/data/tracing/staticLoop.trace @@ -0,0 +1,33 @@ +B0() + CONST $1 1 :i32 + CONST $2 10 :i32 + ADD $3 $1 $2 :i32 + ASSIGN $1 $3 :i32 + CONST $4 10 :i32 + ADD $5 $1 $4 :i32 + ASSIGN $1 $5 :i32 + CONST $6 10 :i32 + ADD $7 $1 $6 :i32 + ASSIGN $1 $7 :i32 + CONST $8 10 :i32 + ADD $9 $1 $8 :i32 + ASSIGN $1 $9 :i32 + CONST $10 10 :i32 + ADD $11 $1 $10 :i32 + ASSIGN $1 $11 :i32 + CONST $12 10 :i32 + ADD $13 $1 $12 :i32 + ASSIGN $1 $13 :i32 + CONST $14 10 :i32 + ADD $15 $1 $14 :i32 + ASSIGN $1 $15 :i32 + CONST $16 10 :i32 + ADD $17 $1 $16 :i32 + ASSIGN $1 $17 :i32 + CONST $18 10 :i32 + ADD $19 $1 $18 :i32 + ASSIGN $1 $19 :i32 + CONST $20 10 :i32 + ADD $21 $1 $20 :i32 + ASSIGN $1 $21 :i32 + RETURN $1 :i32 diff --git a/nautilus/test/data/tracing/staticLoopIncrement.trace b/nautilus/test/data/tracing/staticLoopIncrement.trace new file mode 100644 index 00000000..60c02701 --- /dev/null +++ b/nautilus/test/data/tracing/staticLoopIncrement.trace @@ -0,0 +1,33 @@ +B0() + CONST $1 1 :i32 + CONST $2 10 :i32 + ADD $3 $1 $2 :i32 + ASSIGN $1 $3 :i32 + CONST $4 10 :i32 + ADD $5 $1 $4 :i32 + ASSIGN $1 $5 :i32 + CONST $6 10 :i32 + ADD $7 $1 $6 :i32 + ASSIGN $1 $7 :i32 + CONST $8 10 :i32 + ADD $9 $1 $8 :i32 + ASSIGN $1 $9 :i32 + CONST $10 10 :i32 + ADD $11 $1 $10 :i32 + ASSIGN $1 $11 :i32 + CONST $12 10 :i32 + ADD $13 $1 $12 :i32 + ASSIGN $1 $13 :i32 + CONST $14 10 :i32 + ADD $15 $1 $14 :i32 + ASSIGN $1 $15 :i32 + CONST $16 10 :i32 + ADD $17 $1 $16 :i32 + ASSIGN $1 $17 :i32 + CONST $18 10 :i32 + ADD $19 $1 $18 :i32 + ASSIGN $1 $19 :i32 + CONST $20 10 :i32 + ADD $21 $1 $20 :i32 + ASSIGN $1 $21 :i32 + RETURN $1 :i32 diff --git a/nautilus/test/data/tracing/staticLoopWithDynamicLoop.trace b/nautilus/test/data/tracing/staticLoopWithDynamicLoop.trace new file mode 100644 index 00000000..7e62760a --- /dev/null +++ b/nautilus/test/data/tracing/staticLoopWithDynamicLoop.trace @@ -0,0 +1,62 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 0 :i32 + JMP $0 B9() :void +B1() + CONST $6 5 :i32 + GT $7 $3 $6 :bool + CMP $8 $7 B3() B4() :void +B2() + RETURN $2 :i32 +B3() + CONST $9 1 :i32 + ADD $10 $2 $9 :i32 + ASSIGN $2 $10 :i32 + CONST $11 10 :i32 + JMP $0 B10() :void +B4() + CONST $31 10 :i32 + ASSIGN $11 $31 :i32 + JMP $0 B10() :void +B5() + CONST $16 1 :i32 + ADD $17 $2 $16 :i32 + ASSIGN $2 $17 :i32 + CONST $18 10 :i32 + JMP $0 B11() :void +B6() + CONST $33 10 :i32 + ASSIGN $18 $33 :i32 + JMP $0 B11() :void +B7() + CONST $23 1 :i32 + ADD $24 $2 $23 :i32 + ASSIGN $2 $24 :i32 + CONST $25 10 :i32 + JMP $0 B12() :void +B8() + CONST $35 10 :i32 + ASSIGN $25 $35 :i32 + JMP $0 B12() :void +B9() ControlFlowMerge + LT $4 $3 $1 :bool + CMP $5 $4 B1() B2() :void +B10() ControlFlowMerge + ADD $12 $2 $11 :i32 + ASSIGN $2 $12 :i32 + CONST $13 5 :i32 + GT $14 $3 $13 :bool + CMP $15 $14 B5() B6() :void +B11() ControlFlowMerge + ADD $19 $2 $18 :i32 + ASSIGN $2 $19 :i32 + CONST $20 5 :i32 + GT $21 $3 $20 :bool + CMP $22 $21 B7() B8() :void +B12() ControlFlowMerge + ADD $26 $2 $25 :i32 + ASSIGN $2 $26 :i32 + CONST $27 1 :i32 + ADD $28 $3 $27 :i32 + ASSIGN $3 $28 :i32 + JMP $0 B9() :void diff --git a/nautilus/test/data/tracing/staticWhileLoopDecrement.trace b/nautilus/test/data/tracing/staticWhileLoopDecrement.trace new file mode 100644 index 00000000..68c7ecbb --- /dev/null +++ b/nautilus/test/data/tracing/staticWhileLoopDecrement.trace @@ -0,0 +1,36 @@ +B0() + CONST $1 1 :i32 + CONST $2 10 :i32 + ADD $3 $1 $2 :i32 + ASSIGN $1 $3 :i32 + CONST $4 9 :i32 + ADD $5 $1 $4 :i32 + ASSIGN $1 $5 :i32 + CONST $6 8 :i32 + ADD $7 $1 $6 :i32 + ASSIGN $1 $7 :i32 + CONST $8 7 :i32 + ADD $9 $1 $8 :i32 + ASSIGN $1 $9 :i32 + CONST $10 6 :i32 + ADD $11 $1 $10 :i32 + ASSIGN $1 $11 :i32 + CONST $12 5 :i32 + ADD $13 $1 $12 :i32 + ASSIGN $1 $13 :i32 + CONST $14 4 :i32 + ADD $15 $1 $14 :i32 + ASSIGN $1 $15 :i32 + CONST $16 3 :i32 + ADD $17 $1 $16 :i32 + ASSIGN $1 $17 :i32 + CONST $18 2 :i32 + ADD $19 $1 $18 :i32 + ASSIGN $1 $19 :i32 + CONST $20 1 :i32 + ADD $21 $1 $20 :i32 + ASSIGN $1 $21 :i32 + CONST $22 0 :i32 + ADD $23 $1 $22 :i32 + ASSIGN $1 $23 :i32 + RETURN $1 :i32 diff --git a/nautilus/test/data/tracing/sumArray.trace b/nautilus/test/data/tracing/sumArray.trace new file mode 100644 index 00000000..7253425c --- /dev/null +++ b/nautilus/test/data/tracing/sumArray.trace @@ -0,0 +1,23 @@ +B0($1:ptr,$2:i32) + CONST $3 0 :i32 + CONST $4 0 :i32 + JMP $0 B3() :void +B1() + ASSIGN $7 $4 :i32 + ASSIGN $8 $7 :i32 + ASSIGN $9 $8 :i32 + CONST $10 4 :i32 + MUL $11 $9 $10 :i32 + ADD $12 $1 $11 :ptr + LOAD $13 $12 :i32 + ADD $14 $3 $13 :i32 + ASSIGN $3 $14 :i32 + CONST $15 1 :i32 + ADD $16 $4 $15 :i32 + ASSIGN $4 $16 :i32 + JMP $0 B3() :void +B2() + RETURN $3 :i32 +B3() ControlFlowMerge + LT $5 $4 $2 :bool + CMP $6 $5 B1() B2() :void diff --git a/nautilus/test/data/tracing/sumLoop.trace b/nautilus/test/data/tracing/sumLoop.trace new file mode 100644 index 00000000..2e7d25c5 --- /dev/null +++ b/nautilus/test/data/tracing/sumLoop.trace @@ -0,0 +1,17 @@ +B0($1:i32) + CONST $2 1 :i32 + CONST $3 0 :i32 + JMP $0 B3() :void +B1() + CONST $6 10 :i32 + ADD $7 $2 $6 :i32 + ASSIGN $2 $7 :i32 + CONST $8 1 :i32 + ADD $9 $3 $8 :i32 + ASSIGN $3 $9 :i32 + JMP $0 B3() :void +B2() + RETURN $2 :i32 +B3() ControlFlowMerge + LT $4 $3 $1 :bool + CMP $5 $4 B1() B2() :void diff --git a/nautilus/test/data/tracing/sumOfNumbers.trace b/nautilus/test/data/tracing/sumOfNumbers.trace new file mode 100644 index 00000000..c980caa0 --- /dev/null +++ b/nautilus/test/data/tracing/sumOfNumbers.trace @@ -0,0 +1,17 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 1 :i32 + JMP $0 B3() :void +B1() + ASSIGN $6 $3 :i32 + ADD $7 $2 $6 :i32 + ASSIGN $2 $7 :i32 + CONST $8 1 :i32 + ADD $9 $3 $8 :i32 + ASSIGN $3 $9 :i32 + JMP $0 B3() :void +B2() + RETURN $2 :i32 +B3() ControlFlowMerge + LTE $4 $3 $1 :bool + CMP $5 $4 B1() B2() :void diff --git a/nautilus/test/data/tracing/sumOfSquares.trace b/nautilus/test/data/tracing/sumOfSquares.trace new file mode 100644 index 00000000..5b66fe3e --- /dev/null +++ b/nautilus/test/data/tracing/sumOfSquares.trace @@ -0,0 +1,17 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 1 :i32 + JMP $0 B3() :void +B1() + MUL $6 $3 $3 :i32 + ADD $7 $2 $6 :i32 + ASSIGN $2 $7 :i32 + CONST $8 1 :i32 + ADD $9 $3 $8 :i32 + ASSIGN $3 $9 :i32 + JMP $0 B3() :void +B2() + RETURN $2 :i32 +B3() ControlFlowMerge + LTE $4 $3 $1 :bool + CMP $5 $4 B1() B2() :void diff --git a/nautilus/test/data/tracing/useWrapper.trace b/nautilus/test/data/tracing/useWrapper.trace new file mode 100644 index 00000000..79d3913a --- /dev/null +++ b/nautilus/test/data/tracing/useWrapper.trace @@ -0,0 +1,5 @@ +B0($1:ptr,$2:ptr) + CALL $3 ($1) :i32 + CALL $4 ($2) :i32 + ADD $5 $3 $4 :i32 + RETURN $5 :i32 diff --git a/nautilus/test/data/tracing/varyingComplexity.trace b/nautilus/test/data/tracing/varyingComplexity.trace new file mode 100644 index 00000000..0351c0e1 --- /dev/null +++ b/nautilus/test/data/tracing/varyingComplexity.trace @@ -0,0 +1,33 @@ +B0($1:i32) + CONST $2 0 :i32 + CONST $3 5 :i32 + LT $4 $1 $3 :bool + CMP $5 $4 B1() B2() :void +B1() + CONST $6 1 :i32 + ASSIGN $2 $6 :i32 + RETURN $2 :i32 +B2() + CONST $8 5 :i32 + GTE $9 $1 $8 :bool + CONST $10 10 :i32 + LTE $11 $1 $10 :bool + AND $12 $9 $11 :bool + CMP $13 $12 B3() B4() :void +B3() + CONST $14 2 :i32 + ASSIGN $2 $14 :i32 + CONST $15 7 :i32 + EQ $16 $1 $15 :bool + CMP $17 $16 B5() B6() :void +B4() + CONST $21 3 :i32 + ASSIGN $2 $21 :i32 + RETURN $2 :i32 +B5() + CONST $18 1 :i32 + ADD $19 $2 $18 :i32 + ASSIGN $2 $19 :i32 + RETURN $2 :i32 +B6() + RETURN $2 :i32 diff --git a/nautilus/test/data/tracing/voidFuncCall.trace b/nautilus/test/data/tracing/voidFuncCall.trace new file mode 100644 index 00000000..a7bc05b2 --- /dev/null +++ b/nautilus/test/data/tracing/voidFuncCall.trace @@ -0,0 +1,7 @@ +B0($1:i32,$2:i32) + ASSIGN $3 $1 :i32 + ASSIGN $4 $2 :i32 + ASSIGN $5 $3 :i32 + ASSIGN $6 $4 :i32 + CALL $7 ($5,$6) :void + RETURN $1 :i32