| ; The emitted Tag_CSKY_FPU_ABI build attribute (17) reflects the floating-point |
| ; ABI: hard-float ABI (from the "float-abi" module flag) emits FPU_ABI_HARD (3), |
| ; while the soft-float ABI with hard-float instructions available emits |
| ; FPU_ABI_SOFTFP (2), and no float unit emits FPU_ABI_SOFT (1). |
| |
| ; RUN: split-file %s %t |
| |
| ; Hard float ABI module flag with an FPU: FPU_ABI_HARD (3). |
| ; RUN: llc -mtriple=csky -mattr=+2e3,+fpuv2_sf,+fpuv2_df,+hard-float < %t/hard.ll | FileCheck %s --check-prefix=HARD |
| |
| ; Soft float ABI (target default) with an FPU: FPU_ABI_SOFTFP (2). |
| ; RUN: llc -mtriple=csky -mattr=+2e3,+fpuv2_sf,+fpuv2_df,+hard-float < %t/none.ll | FileCheck %s --check-prefix=SOFTFP |
| |
| ; Explicit soft float ABI module flag with an FPU: FPU_ABI_SOFTFP (2). |
| ; RUN: llc -mtriple=csky -mattr=+2e3,+fpuv2_sf,+fpuv2_df,+hard-float < %t/soft.ll | FileCheck %s --check-prefix=SOFTFP |
| |
| ; No float unit: FPU_ABI_SOFT (1), regardless of the module flag. |
| ; RUN: llc -mtriple=csky -mattr=+2e3 < %t/hard.ll | FileCheck %s --check-prefix=SOFT |
| |
| ; HARD: .csky_attribute 17, 3 |
| ; SOFTFP: .csky_attribute 17, 2 |
| ; SOFT: .csky_attribute 17, 1 |
| |
| ;--- none.ll |
| define void @f() { |
| ret void |
| } |
| |
| ;--- hard.ll |
| define void @f() { |
| ret void |
| } |
| !llvm.module.flags = !{!0} |
| !0 = !{i32 1, !"float-abi", !"hard"} |
| |
| ;--- soft.ll |
| define void @f() { |
| ret void |
| } |
| !llvm.module.flags = !{!0} |
| !0 = !{i32 1, !"float-abi", !"soft"} |