mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-13 22:58:50 +00:00
fe4e45a5b0
Clang sets the float-abi target option manually, but no longer annotates each function with its ABI. This can lead to confusing mistmatch between "clang -emit-llvm | llc" and normal clang invocations. Besides which, gnueabihf actually *is* hard-float. Defaulting to soft was just perverse. llvm-svn: 197554
23 lines
985 B
LLVM
23 lines
985 B
LLVM
; RUN: llc -mtriple=armv7-linux-gnueabihf %s -o - | FileCheck %s --check-prefix=CHECK-HARD
|
|
; RUN: llc -mtriple=armv7-linux-eabihf %s -o - | FileCheck %s --check-prefix=CHECK-HARD
|
|
; RUN: llc -mtriple=armv7-linux-gnueabihf -float-abi=soft %s -o - | FileCheck %s --check-prefix=CHECK-SOFT
|
|
; RUN: llc -mtriple=armv7-linux-gnueabi %s -o - | FileCheck %s --check-prefix=CHECK-SOFT
|
|
; RUN: llc -mtriple=armv7-linux-eabi -float-abi=hard %s -o - | FileCheck %s --check-prefix=CHECK-HARD
|
|
; RUN: llc -mtriple=thumbv7-apple-ios6.0 %s -o - | FileCheck %s --check-prefix=CHECK-SOFT
|
|
|
|
define float @test_abi(float %lhs, float %rhs) {
|
|
%sum = fadd float %lhs, %rhs
|
|
ret float %sum
|
|
|
|
; CHECK-HARD-LABEL: test_abi:
|
|
; CHECK-HARD-NOT: vmov
|
|
; CHECK-HARD: vadd.f32 s0, s0, s1
|
|
; CHECK-HARD-NOT: vmov
|
|
|
|
; CHECK-SOFT-LABEL: test_abi:
|
|
; CHECK-SOFT-DAG: vmov [[LHS:s[0-9]+]], r0
|
|
; CHECK-SOFT-DAG: vmov [[RHS:s[0-9]+]], r1
|
|
; CHECK-SOFT: vadd.f32 [[DEST:s[0-9]+]], [[LHS]], [[RHS]]
|
|
; CHECK-SOFT: vmov r0, [[DEST]]
|
|
}
|