diff options
author | Sam Elliott <selliott@lowrisc.org> | 2019-07-31 09:45:55 +0000 |
---|---|---|
committer | Sam Elliott <selliott@lowrisc.org> | 2019-07-31 09:45:55 +0000 |
commit | 9e6b2e1605825f852d59034e053a22b712f8fcb9 (patch) | |
tree | 0bd2d3e2193272fd1f04540a7a0696d6de560831 /clang/test/CodeGen/riscv-inline-asm.c | |
parent | 5ea07f7c072c10c517cae51e67d84f711f0007ed (diff) | |
download | bcm5719-llvm-9e6b2e1605825f852d59034e053a22b712f8fcb9.tar.gz bcm5719-llvm-9e6b2e1605825f852d59034e053a22b712f8fcb9.zip |
[RISCV] Support 'f' Inline Assembly Constraint
Summary:
This adds the 'f' inline assembly constraint, as supported by GCC. An
'f'-constrained operand is passed in a floating point register. Exactly
which kind of floating-point register (32-bit or 64-bit) is decided
based on the operand type and the available standard extensions (-f and
-d, respectively).
This patch adds support in both the clang frontend, and LLVM itself.
Reviewers: asb, lewis-revill
Reviewed By: asb
Subscribers: hiraditya, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, s.egerton, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D65500
llvm-svn: 367403
Diffstat (limited to 'clang/test/CodeGen/riscv-inline-asm.c')
-rw-r--r-- | clang/test/CodeGen/riscv-inline-asm.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/test/CodeGen/riscv-inline-asm.c b/clang/test/CodeGen/riscv-inline-asm.c index 2d23b7e35e2..f79527337bd 100644 --- a/clang/test/CodeGen/riscv-inline-asm.c +++ b/clang/test/CodeGen/riscv-inline-asm.c @@ -26,3 +26,15 @@ void test_K() { // CHECK: call void asm sideeffect "", "K"(i32 0) asm volatile ("" :: "K"(0)); } + +float f; +double d; +void test_f() { +// CHECK-LABEL: define void @test_f() +// CHECK: [[FLT_ARG:%[a-zA-Z_0-9]+]] = load float, float* @f +// CHECK: call void asm sideeffect "", "f"(float [[FLT_ARG]]) + asm volatile ("" :: "f"(f)); +// CHECK: [[FLT_ARG:%[a-zA-Z_0-9]+]] = load double, double* @d +// CHECK: call void asm sideeffect "", "f"(double [[FLT_ARG]]) + asm volatile ("" :: "f"(d)); +} |