mirror of
https://github.com/RPCS3/llvm.git
synced 2025-05-16 10:26:23 +00:00

This patch adds proper handling of -target-abi, as accepted by llvm-mc and llc. Lowering (codegen) for the hard-float ABIs will follow in a subsequent patch. However, this patch does add MC layer support for the hard float and RVE ABIs (emission of the appropriate ELF flags https://github.com/riscv/riscv-elf-psabi-doc/blob/master/riscv-elf.md#-file-header). ABI parsing must be shared between codegen and the MC layer, so we add computeTargetABI to RISCVUtils. A warning will be printed if an invalid or unrecognized ABI is given. Differential Revision: https://reviews.llvm.org/D59023 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355771 91177308-0d34-0410-b5e6-96231b3b80d8
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
|
|
|
|
define void @nothing() nounwind {
|
|
; CHECK-IMP-LABEL: nothing:
|
|
; CHECK-IMP: # %bb.0:
|
|
; CHECK-IMP-NEXT: ret
|
|
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
|