aboutsummaryrefslogtreecommitdiff
path: root/deps/lightning/check/rpn.tst
diff options
context:
space:
mode:
Diffstat (limited to 'deps/lightning/check/rpn.tst')
-rw-r--r--deps/lightning/check/rpn.tst183
1 files changed, 183 insertions, 0 deletions
diff --git a/deps/lightning/check/rpn.tst b/deps/lightning/check/rpn.tst
new file mode 100644
index 0000000..62ef8d6
--- /dev/null
+++ b/deps/lightning/check/rpn.tst
@@ -0,0 +1,183 @@
+.data 256
+.$($int = 4)
+C:
+.c "\nC:"
+F:
+.c "\nF:"
+format:
+.c "%3d "
+newline:
+.c "\n"
+
+.code
+ jmpi main
+
+ name c2f
+c2f:
+ prolog
+ arg $in
+
+ allocai $(32 * $int) $index
+
+ getarg %r2 $in
+
+ // 32x9*5/+
+ movi %r0 32
+
+ // x9*5/+
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movr %r0 %r2
+
+ // 9*5/+
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movi %r0 9
+
+ // *5/+
+. $($index = $index - $int)
+ ldxi_i %r1 %fp $index
+ mulr %r0 %r1 %r0
+
+ // 5/+
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movi %r0 5
+
+ // /+
+. $($index = $index - $int)
+ ldxi_i %r1 %fp $index
+ divr %r0 %r1 %r0
+
+ // +
+. $($index = $index - $int)
+ ldxi_i %r1 %fp $index
+ addr %r0 %r1 %r0
+
+ retr %r0
+ epilog
+
+ name f2c
+f2c:
+ prolog
+ arg $in
+
+ allocai $(32 * $int) $index
+
+ getarg %r2 $in
+
+ // x32-5*9/
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movr %r0 %r2
+
+ // 32-5*9/
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movi %r0 32
+
+ // -5*9/
+. $($index = $index - $int)
+ ldxi_i %r1 %fp $index
+ subr %r0 %r1 %r0
+
+ // 5*9/
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movi %r0 5
+
+ // *9/
+. $($index = $index - $int)
+ ldxi_i %r1 %fp $index
+ mulr %r0 %r1 %r0
+
+ // 9/
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movi %r0 9
+
+ // /
+. $($index = $index - $int)
+ ldxi_i %r1 %fp $index
+ divr %r0 %r1 %r0
+
+ retr %r0
+ epilog
+
+//-----------------------------------------------------------------------
+ name main
+main:
+ prolog
+
+ prepare
+ pushargi C
+ ellipsis
+ finishi @printf
+ movi %v0 0
+loopC:
+ prepare
+ pushargi format
+ ellipsis
+ pushargr %v0
+ finishi @printf
+ addi %v0 %v0 10
+ blei loopC %v0 100
+ prepare
+ pushargi F
+ ellipsis
+ finishi @printf
+ movi %v0 0
+loopC2F:
+ prepare
+ pushargr %v0
+ finishi c2f
+ retval %r0
+ prepare
+ pushargi format
+ ellipsis
+ pushargr %r0
+ finishi @printf
+ addi %v0 %v0 10
+ blei loopC2F %v0 100
+ prepare
+ pushargi newline
+ ellipsis
+ finishi @printf
+
+ prepare
+ pushargi F
+ ellipsis
+ finishi @printf
+ movi %v0 32
+loopF:
+ prepare
+ pushargi format
+ ellipsis
+ pushargr %v0
+ finishi @printf
+ addi %v0 %v0 18
+ blei loopF %v0 212
+ prepare
+ pushargi C
+ ellipsis
+ finishi @printf
+ movi %v0 32
+loopF2C:
+ prepare
+ pushargr %v0
+ finishi f2c
+ retval %r0
+ prepare
+ pushargi format
+ ellipsis
+ pushargr %r0
+ finishi @printf
+ addi %v0 %v0 18
+ blei loopF2C %v0 212
+ prepare
+ pushargi newline
+ ellipsis
+ finishi @printf
+
+ ret
+ epilog