[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