summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Mips/MipsSEISelLowering.h
diff options
context:
space:
mode:
authorSimon Dardis <simon.dardis@imgtec.com>2016-11-18 16:17:44 +0000
committerSimon Dardis <simon.dardis@imgtec.com>2016-11-18 16:17:44 +0000
commit0e2ee3b4b98327bf9a5c2fa4707f8a1983c9950a (patch)
tree9e53468e83d881d68e237eb7445ab9dd8ebbfb8c /llvm/lib/Target/Mips/MipsSEISelLowering.h
parent7bde5df5f0b9daa2eaa23e467d689d05c5530df7 (diff)
downloadbcm5719-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.h14
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;
};
}
OpenPOWER on IntegriCloud