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
41 lines
1.8 KiB
LLVM
41 lines
1.8 KiB
LLVM
; RUN: llc -mtriple=riscv32 < %s \
|
|
; RUN: | FileCheck -check-prefix=CHECK-IMP %s
|
|
; RUN: llc -mtriple=riscv32 -target-abi ilp32 < %s \
|
|
; RUN: | FileCheck -check-prefix=CHECK-IMP %s
|
|
; RUN: llc -mtriple=riscv32 -mattr=+f -target-abi ilp32 < %s \
|
|
; RUN: | FileCheck -check-prefix=CHECK-IMP %s
|
|
; RUN: llc -mtriple=riscv32 -mattr=+d -target-abi ilp32 < %s \
|
|
; RUN: | FileCheck -check-prefix=CHECK-IMP %s
|
|
; RUN: llc -mtriple=riscv64 < %s \
|
|
; RUN: | FileCheck -check-prefix=CHECK-IMP %s
|
|
; RUN: llc -mtriple=riscv64 -target-abi lp64 < %s \
|
|
; RUN: | FileCheck -check-prefix=CHECK-IMP %s
|
|
; RUN: llc -mtriple=riscv64 -mattr=+f -target-abi lp64 < %s \
|
|
; 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:
|
|
; CHECK-IMP: # %bb.0:
|
|
; CHECK-IMP-NEXT: ret
|
|
ret void
|
|
}
|
|
|
|
; RUN: not llc -mtriple=riscv32 -target-abi ilp32e < %s 2>&1 \
|
|
; RUN: | FileCheck -check-prefix=CHECK-UNIMP %s
|
|
|
|
; CHECK-UNIMP: LLVM ERROR: Don't know how to lower this ABI
|