diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-12-24 14:49:31 -0500 |
---|---|---|
committer | Matt Arsenault <arsenm2@gmail.com> | 2020-01-06 18:26:42 -0500 |
commit | f3de8ab5ccedefb3165dae2511650d6a60e905cf (patch) | |
tree | e9348cdeab2dc3f9eba35a84f88e84bd9aa78a0b /llvm/include | |
parent | 450073c639d7f182e48ec8b1b588212194089a52 (diff) | |
download | bcm5719-llvm-f3de8ab5ccedefb3165dae2511650d6a60e905cf.tar.gz bcm5719-llvm-f3de8ab5ccedefb3165dae2511650d6a60e905cf.zip |
GlobalISel: Implement lower for G_INTRINSIC_ROUND
Mostly copied from AMDGPU lowering implementation, except used
G_SITOFP instead of directly creating a select on -1.0, 0.0.
Diffstat (limited to 'llvm/include')
-rw-r--r-- | llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h | 1 | ||||
-rw-r--r-- | llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h b/llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h index a09edff41bb..cc89a3bea63 100644 --- a/llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h +++ b/llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h @@ -231,6 +231,7 @@ public: LegalizeResult lowerFCopySign(MachineInstr &MI, unsigned TypeIdx, LLT Ty); LegalizeResult lowerFMinNumMaxNum(MachineInstr &MI); LegalizeResult lowerFMad(MachineInstr &MI); + LegalizeResult lowerIntrinsicRound(MachineInstr &MI); LegalizeResult lowerUnmergeValues(MachineInstr &MI); LegalizeResult lowerShuffleVector(MachineInstr &MI); LegalizeResult lowerDynStackAlloc(MachineInstr &MI); diff --git a/llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h b/llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h index d3c17aee4a2..072a1411de8 100644 --- a/llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h +++ b/llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h @@ -1413,6 +1413,12 @@ public: return buildInstr(TargetOpcode::G_FCANONICALIZE, {Dst}, {Src0}, Flags); } + /// Build and insert \p Dst = G_INTRINSIC_TRUNC \p Src0 + MachineInstrBuilder buildIntrinsicTrunc(const DstOp &Dst, const SrcOp &Src0, + Optional<unsigned> Flags = None) { + return buildInstr(TargetOpcode::G_INTRINSIC_TRUNC, {Dst}, {Src0}, Flags); + } + /// Build and insert \p Res = G_FCOPYSIGN \p Op0, \p Op1 MachineInstrBuilder buildFCopysign(const DstOp &Dst, const SrcOp &Src0, const SrcOp &Src1) { |