diff options
| author | Justin Bogner <mail@justinbogner.com> | 2017-01-19 07:51:17 +0000 |
|---|---|---|
| committer | Justin Bogner <mail@justinbogner.com> | 2017-01-19 07:51:17 +0000 |
| commit | ddb80aee7e59de3e7547989d41c86728bd68acf3 (patch) | |
| tree | a5b6d1534707912b7b0bc882f738aa014bb3c32e /llvm/lib/CodeGen | |
| parent | b8e92f775d72def567c7e377317fd690f48fcb6c (diff) | |
| download | bcm5719-llvm-ddb80aee7e59de3e7547989d41c86728bd68acf3.tar.gz bcm5719-llvm-ddb80aee7e59de3e7547989d41c86728bd68acf3.zip | |
GlobalISel: Implement widening for shifts
llvm-svn: 292476
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp index 443c6e1ee40..0f23c2f0358 100644 --- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp +++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp @@ -222,7 +222,8 @@ LegalizerHelper::widenScalar(MachineInstr &MI, unsigned TypeIdx, LLT WideTy) { case TargetOpcode::G_MUL: case TargetOpcode::G_OR: case TargetOpcode::G_XOR: - case TargetOpcode::G_SUB: { + case TargetOpcode::G_SUB: + case TargetOpcode::G_SHL: { // Perform operation at larger width (any extension is fine here, high bits // don't affect the result) and then truncate the result back to the // original type. @@ -242,10 +243,13 @@ LegalizerHelper::widenScalar(MachineInstr &MI, unsigned TypeIdx, LLT WideTy) { return Legalized; } case TargetOpcode::G_SDIV: - case TargetOpcode::G_UDIV: { - unsigned ExtOp = MI.getOpcode() == TargetOpcode::G_SDIV - ? TargetOpcode::G_SEXT - : TargetOpcode::G_ZEXT; + case TargetOpcode::G_UDIV: + case TargetOpcode::G_ASHR: + case TargetOpcode::G_LSHR: { + unsigned ExtOp = MI.getOpcode() == TargetOpcode::G_SDIV || + MI.getOpcode() == TargetOpcode::G_ASHR + ? TargetOpcode::G_SEXT + : TargetOpcode::G_ZEXT; unsigned LHSExt = MRI.createGenericVirtualRegister(WideTy); MIRBuilder.buildInstr(ExtOp).addDef(LHSExt).addUse( |

