[llvm] r190309 - [ARMv8] Prevent generation of deprecated IT blocks on ARMv8 in Thumb mode.
Hal Finkel
hfinkel at anl.gov
Thu Nov 21 10:23:45 PST 2013
----- Original Message -----
> From: "Artyom Skrobov" <Artyom.Skrobov at arm.com>
> To: "Hal Finkel" <hfinkel at anl.gov>
> Cc: "Joey Gouly" <Joey.Gouly at arm.com>, llvm-commits at cs.uiuc.edu
> Sent: Thursday, November 21, 2013 11:21:42 AM
> Subject: RE: [llvm] r190309 - [ARMv8] Prevent generation of deprecated IT blocks on ARMv8 in Thumb mode.
>
> Hello Hal,
>
> The meaningful part of the change to IfConversion is as follows:
>
> --- a/lib/CodeGen/IfConversion.cpp
> +++ b/lib/CodeGen/IfConversion.cpp
> @@ -682,16 +682,15 @@ void IfConverter::ScanInstructions(BBInfo &BBI)
> {
> BBI.IsUnpredicable = true;
> return;
> }
> + } else {
> + // A conditional branch is not predicable, but it may be
> eliminated.
> + continue;
> }
>
> +
> if (BBI.ClobbersPred && !isPredicated) {
> // Predicate modification instruction should end the block
> (except
> for
> // already predicated instructions and end of block branches).
> - if (isCondBr) {
> - // A conditional branch is not predicable, but it may be
> eliminated.
> - continue;
> - }
> -
> // Predicate may have been modified, the subsequent
> (currently)
> // unpredicated instructions cannot be correctly predicated.
> BBI.IsUnpredicable = true;
>
> That is, skipping over the conditional branch instruction
> (terminating the
> BB) whether or not this instruction is predicated.
>
> This is because in ARMv8 Thumb, the conditional branches are
> non-predicable
> -- despite being conditional.
>
> Could this cause problems with the PPC backend?
In itself, yes, but not right now. PPC does have conditional returns that I would like to predicate -- but this will require some additional infrastructure work because PPC really has different predicate classes (in some sense -- one for regular conditionals and one for predicates related to the loop counter), and I can only have one of each on any given return instruction.
Regarding the problem at hand, I'll need to experiment with this, but I think that the problem may be that we still need to check for AlreadyPredicated (and check/update BBI.ClobbersPred) on the conditional returns, and with your change, we're no longer doing that. Will that cause a problem for you?
Thanks again,
Hal
>
>
> ________________________________________
> From: Hal Finkel [hfinkel at anl.gov]
> Sent: 21 November 2013 15:23
> To: Joey Gouly
> Cc: llvm-commits at cs.uiuc.edu
> Subject: Re: [llvm] r190309 - [ARMv8] Prevent generation of
> deprecated IT
> blocks on ARMv8 in Thumb mode.
>
> Joey,
>
> This commit seems to have broken self hosting on PPC (only with an
> NDEBUG
> build, which is why we did not catch it earlier). I can only suppose
> it is
> the changes to lib/CodeGen/IfConversion.cpp that either caused the
> problem,
> or triggered an existing PPC backend bug. Can you please explain the
> rationale behind the IfConversion changes?
>
> Thanks in advance,
> Hal
>
> ----- Original Message -----
> > From: "Joey Gouly" <joey.gouly at arm.com>
> > To: "Joey Gouly" <Joey.Gouly at arm.com>, llvm-commits at cs.uiuc.edu
> > Sent: Monday, September 9, 2013 9:48:02 AM
> > Subject: RE: [llvm] r190309 - [ARMv8] Prevent generation of
> > deprecated IT
> blocks on ARMv8 in Thumb mode.
> >
> > > Author: joey
> > > Date: Mon Sep 9 09:21:49 2013
> > > New Revision: 190309
> > >
> > > URL: http://llvm.org/viewvc/llvm-project?rev=190309&view=rev
> > > Log:
> > > [ARMv8] Prevent generation of deprecated IT blocks on ARMv8 in
> > > Thumb mode.
> > > IT blocks can only be one instruction lonf, and can only contain
> > > a
> > > subset
> > of
> > > the 16 instructions.
> >
> > Sorry, the commit message here should have read "the 16-bit
> > instructions".
> >
> >
> >
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> >
>
> --
> Hal Finkel
> Assistant Computational Scientist
> Leadership Computing Facility
> Argonne National Laboratory
>
>
>
>
>
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-commits
mailing list