diff options
| author | Alex Bradbury <asb@lowrisc.org> | 2019-03-30 17:59:30 +0000 |
|---|---|---|
| committer | Alex Bradbury <asb@lowrisc.org> | 2019-03-30 17:59:30 +0000 |
| commit | 0b2803ee6578b50a536bfbacfba288cefa0172c6 (patch) | |
| tree | 7520c7c2fdc6912d4f426ae47b8cbf8801653205 /llvm/test/CodeGen/RISCV/target-abi-valid.ll | |
| parent | 10c9032c02394c6dd6102f4387cd315f19738616 (diff) | |
| download | bcm5719-llvm-0b2803ee6578b50a536bfbacfba288cefa0172c6.tar.gz bcm5719-llvm-0b2803ee6578b50a536bfbacfba288cefa0172c6.zip | |
[RISCV] Add codegen support for ilp32f, ilp32d, lp64f, and lp64d ("hard float") ABIs
This patch adds support for the RISC-V hard float ABIs, building on top of
rL355771, which added basic target-abi parsing and MC layer support. It also
builds on some re-organisations and expansion of the upstream ABI and calling
convention tests which were recently committed directly upstream.
A number of aspects of the RISC-V float hard float ABIs require frontend
support (e.g. flattening of structs and passing int+fp for fp+fp structs in a
pair of registers), and will be addressed in a Clang patch.
As can be seen from the tests, it would be worthwhile extending
RISCVMergeBaseOffsets to handle constant pool as well as global accesses.
Differential Revision: https://reviews.llvm.org/D59357
llvm-svn: 357352
Diffstat (limited to 'llvm/test/CodeGen/RISCV/target-abi-valid.ll')
| -rw-r--r-- | llvm/test/CodeGen/RISCV/target-abi-valid.ll | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/llvm/test/CodeGen/RISCV/target-abi-valid.ll b/llvm/test/CodeGen/RISCV/target-abi-valid.ll index 2223345249d..2bd7dde3cd8 100644 --- a/llvm/test/CodeGen/RISCV/target-abi-valid.ll +++ b/llvm/test/CodeGen/RISCV/target-abi-valid.ll @@ -14,6 +14,18 @@ ; RUN: | FileCheck -check-prefix=CHECK-IMP %s ; RUN: llc -mtriple=riscv64 -mattr=+d -target-abi lp64 < %s \ ; RUN: | FileCheck -check-prefix=CHECK-IMP %s +; RUN: llc -mtriple=riscv32 -mattr=+f -target-abi ilp32f < %s 2>&1 \ +; RUN: | FileCheck -check-prefix=CHECK-IMP %s +; RUN: llc -mtriple=riscv32 -mattr=+d -target-abi ilp32f < %s 2>&1 \ +; RUN: | FileCheck -check-prefix=CHECK-IMP %s +; RUN: llc -mtriple=riscv32 -mattr=+d -target-abi ilp32d < %s 2>&1 \ +; RUN: | FileCheck -check-prefix=CHECK-IMP %s +; RUN: llc -mtriple=riscv64 -mattr=+f -target-abi lp64f < %s 2>&1 \ +; RUN: | FileCheck -check-prefix=CHECK-IMP %s +; RUN: llc -mtriple=riscv64 -mattr=+d -target-abi lp64f < %s 2>&1 \ +; RUN: | FileCheck -check-prefix=CHECK-IMP %s +; RUN: llc -mtriple=riscv64 -mattr=+d -target-abi lp64d < %s 2>&1 \ +; RUN: | FileCheck -check-prefix=CHECK-IMP %s define void @nothing() nounwind { ; CHECK-IMP-LABEL: nothing: @@ -22,19 +34,7 @@ define void @nothing() nounwind { ret void } -; RUN: not llc -mtriple=riscv32 -mattr=+f -target-abi ilp32f < %s 2>&1 \ -; RUN: | FileCheck -check-prefix=CHECK-UNIMP %s -; RUN: not llc -mtriple=riscv32 -mattr=+d -target-abi ilp32f < %s 2>&1 \ -; RUN: | FileCheck -check-prefix=CHECK-UNIMP %s -; RUN: not llc -mtriple=riscv32 -mattr=+d -target-abi ilp32d < %s 2>&1 \ -; RUN: | FileCheck -check-prefix=CHECK-UNIMP %s ; RUN: not llc -mtriple=riscv32 -target-abi ilp32e < %s 2>&1 \ ; RUN: | FileCheck -check-prefix=CHECK-UNIMP %s -; RUN: not llc -mtriple=riscv64 -mattr=+f -target-abi lp64f < %s 2>&1 \ -; RUN: | FileCheck -check-prefix=CHECK-UNIMP %s -; RUN: not llc -mtriple=riscv64 -mattr=+d -target-abi lp64f < %s 2>&1 \ -; RUN: | FileCheck -check-prefix=CHECK-UNIMP %s -; RUN: not llc -mtriple=riscv64 -mattr=+d -target-abi lp64d < %s 2>&1 \ -; RUN: | FileCheck -check-prefix=CHECK-UNIMP %s ; CHECK-UNIMP: LLVM ERROR: Don't know how to lower this ABI |

