diff options
| author | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2017-01-23 21:10:14 +0000 |
|---|---|---|
| committer | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2017-01-23 21:10:14 +0000 |
| commit | b6137063ebda8a99f6b6f7c0c94b1cd3ad1c67d4 (patch) | |
| tree | ac733a55e82ed71c51dd7535b23e5fc72dfc6e3d /llvm/lib/CodeGen | |
| parent | cfb384d39d09e4bf4e79bb0436c25e77f5d4b063 (diff) | |
| download | bcm5719-llvm-b6137063ebda8a99f6b6f7c0c94b1cd3ad1c67d4.tar.gz bcm5719-llvm-b6137063ebda8a99f6b6f7c0c94b1cd3ad1c67d4.zip | |
[AArch64][GlobalISel] Legalize narrow scalar fp->int conversions.
Since we're now avoiding operations using narrow scalar integer types,
we have to legalize the integer side of the FP conversions.
This requires teaching the legalizer how to do that.
llvm-svn: 292828
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp index f77d807a69d..6da02646250 100644 --- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp +++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp @@ -273,6 +273,20 @@ LegalizerHelper::widenScalar(MachineInstr &MI, unsigned TypeIdx, LLT WideTy) { MI.eraseFromParent(); return Legalized; } + case TargetOpcode::G_FPTOSI: + case TargetOpcode::G_FPTOUI: { + if (TypeIdx != 0) + return UnableToLegalize; + + unsigned DstExt = MRI.createGenericVirtualRegister(WideTy); + MIRBuilder.buildInstr(MI.getOpcode()) + .addDef(DstExt) + .addUse(MI.getOperand(1).getReg()); + + MIRBuilder.buildTrunc(MI.getOperand(0).getReg(), DstExt); + MI.eraseFromParent(); + return Legalized; + } case TargetOpcode::G_SITOFP: case TargetOpcode::G_UITOFP: { if (TypeIdx != 1) |

