diff options
| author | Simon Dardis <simon.dardis@imgtec.com> | 2016-11-18 16:17:44 +0000 |
|---|---|---|
| committer | Simon Dardis <simon.dardis@imgtec.com> | 2016-11-18 16:17:44 +0000 |
| commit | 0e2ee3b4b98327bf9a5c2fa4707f8a1983c9950a (patch) | |
| tree | 9e53468e83d881d68e237eb7445ab9dd8ebbfb8c /llvm/lib/Target/Mips/MipsSEISelLowering.h | |
| parent | 7bde5df5f0b9daa2eaa23e467d689d05c5530df7 (diff) | |
| download | bcm5719-llvm-0e2ee3b4b98327bf9a5c2fa4707f8a1983c9950a.tar.gz bcm5719-llvm-0e2ee3b4b98327bf9a5c2fa4707f8a1983c9950a.zip | |
[mips][msa] Implement f16 support
The MIPS MSA ASE provides instructions to convert to and from half precision
floating point. This patch teaches the MIPS backend to treat f16 as a legal
type and how to promote such values to f32 for the usual set of operations.
As a result of this, the fexup[lr].w intrinsics no longer crash LLVM during
type legalization.
Reviewers: zoran.jovanvoic, vkalintiris
Differential Revision: https://reviews.llvm.org/D26398
llvm-svn: 287349
Diffstat (limited to 'llvm/lib/Target/Mips/MipsSEISelLowering.h')
| -rw-r--r-- | llvm/lib/Target/Mips/MipsSEISelLowering.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MipsSEISelLowering.h b/llvm/lib/Target/Mips/MipsSEISelLowering.h index 54154662f26..0abb9b318bd 100644 --- a/llvm/lib/Target/Mips/MipsSEISelLowering.h +++ b/llvm/lib/Target/Mips/MipsSEISelLowering.h @@ -111,6 +111,20 @@ namespace llvm { /// \brief Emit the FEXP2_D_1 pseudo instructions. MachineBasicBlock *emitFEXP2_D_1(MachineInstr &MI, MachineBasicBlock *BB) const; + /// \brief Emit the FILL_FW pseudo instruction + MachineBasicBlock *emitLD_F16_PSEUDO(MachineInstr &MI, + MachineBasicBlock *BB) const; + /// \brief Emit the FILL_FD pseudo instruction + MachineBasicBlock *emitST_F16_PSEUDO(MachineInstr &MI, + MachineBasicBlock *BB) const; + /// \brief Emit the FEXP2_W_1 pseudo instructions. + MachineBasicBlock *emitFPEXTEND_PSEUDO(MachineInstr &MI, + MachineBasicBlock *BB, + bool IsFGR64) const; + /// \brief Emit the FEXP2_D_1 pseudo instructions. + MachineBasicBlock *emitFPROUND_PSEUDO(MachineInstr &MI, + MachineBasicBlock *BBi, + bool IsFGR64) const; }; } |

