[RISCV] Support 'f' Inline Assembly Constraint
authorSam Elliott <selliott@lowrisc.org>
Wed, 31 Jul 2019 09:45:55 +0000 (09:45 +0000)
committerSam Elliott <selliott@lowrisc.org>
Wed, 31 Jul 2019 09:45:55 +0000 (09:45 +0000)
commit9e6b2e1605825f852d59034e053a22b712f8fcb9
tree0bd2d3e2193272fd1f04540a7a0696d6de560831
parent5ea07f7c072c10c517cae51e67d84f711f0007ed
[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
clang/lib/Basic/Targets/RISCV.cpp
clang/test/CodeGen/riscv-inline-asm.c
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
llvm/lib/Target/RISCV/RISCVISelLowering.h
llvm/test/CodeGen/RISCV/inline-asm-d-constraint-f.ll [new file with mode: 0644]
llvm/test/CodeGen/RISCV/inline-asm-f-constraint-f.ll [new file with mode: 0644]
llvm/test/CodeGen/RISCV/inline-asm-invalid.ll