[llvm] r298439 - GlobalISel: widen booleans by zero-extending to a byte.
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 21 14:38:01 PDT 2017
> On Mar 21, 2017, at 14:12, Tim Northover via llvm-commits <llvm-commits at lists.llvm.org> wrote:
>
> Author: tnorthover
> Date: Tue Mar 21 16:12:04 2017
> New Revision: 298439
>
> URL: http://llvm.org/viewvc/llvm-project?rev=298439&view=rev
> Log:
> GlobalISel: widen booleans by zero-extending to a byte.
>
> A bool is represented by a single byte, which the ARM ABI requires to be either
> 0 or 1. So we cannot use G_ANYEXT when legalizing the type.
>
> Modified:
> llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
> llvm/trunk/test/CodeGen/AArch64/GlobalISel/legalize-load-store.mir
>
> Modified: llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp?rev=298439&r1=298438&r2=298439&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp (original)
> +++ llvm/trunk/lib/CodeGen/GlobalISel/LegalizerHelper.cpp Tue Mar 21 16:12:04 2017
> @@ -433,7 +433,7 @@ LegalizerHelper::widenScalar(MachineInst
> "illegal to increase number of bytes modified by a store");
>
> unsigned SrcExt = MRI.createGenericVirtualRegister(WideTy);
> - MIRBuilder.buildAnyExt(SrcExt, MI.getOperand(0).getReg());
> + MIRBuilder.buildZExt(SrcExt, MI.getOperand(0).getReg());
> MIRBuilder.buildStore(SrcExt, MI.getOperand(1).getReg(),
> **MI.memoperands_begin());
> MI.eraseFromParent();
>
Should this be using the appropriate extension for the TargetBooleanContents?
More information about the llvm-commits
mailing list