diff options
author | Michael Forney <mforney@mforney.org> | 2022-02-12 02:27:50 -0800 |
---|---|---|
committer | Quentin Carbonneaux <quentin@c9x.me> | 2022-02-17 22:43:12 +0100 |
commit | 4e93eeaa3b63b6ae50954a29662cc3ea6be48b23 (patch) | |
tree | 42f9dd888d3581ca9758afad53116f95ef790083 /doc | |
parent | 8e040d58615e49a63fb50dda5dc695e96a54a7bc (diff) | |
download | roux-4e93eeaa3b63b6ae50954a29662cc3ea6be48b23.tar.gz |
add rv64 backend
It is mostly complete, but still has a few ABI bugs when passing floats in structs, or when structs are passed partly in register, and partly on stack.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/il.txt | 1 | ||||
-rw-r--r-- | doc/rv64.txt | 20 |
2 files changed, 21 insertions, 0 deletions
diff --git a/doc/il.txt b/doc/il.txt index 994729e..0e05283 100644 --- a/doc/il.txt +++ b/doc/il.txt @@ -856,6 +856,7 @@ alignment required by all the targets. type :valist = align 8 { 24 } # For amd64_sysv type :valist = align 8 { 32 } # For arm64 + type :valist = align 8 { 8 } # For rv64 The following example defines a variadic function adding its first three arguments. diff --git a/doc/rv64.txt b/doc/rv64.txt new file mode 100644 index 0000000..e696d77 --- /dev/null +++ b/doc/rv64.txt @@ -0,0 +1,20 @@ +========= +RISC-V 64 +========= + +- Known issues +-------------- + +ABI with structs containing floats is not yet supported. + +- Possible improvements +----------------------- + +rv64_isel() could turn compare used only with jnz into b{lt,ge}[u]. + +- Helpful links +--------------- + +RISC-V spec: https://github.com/riscv/riscv-isa-manual/releases/latest/download/riscv-spec.pdf +ASM manual: https://github.com/riscv-non-isa/riscv-asm-manual/blob/master/riscv-asm.md +psABI: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc |