[PATCH] AArch64 fast-isel generates incorrect results on big-endian vector call returns

Pete Cooper peter_cooper at apple.com
Thu Apr 16 14:25:29 PDT 2015


Thanks James - r235133.

I took a look for isLIttleEndian() in fast-isel and there’s some checks on call arguments, but nothing for the return (until now).  Not sure if we’re missing any other places or not, but nothing scary jumped out from the quick look.

Cheers,
Pete
> On Apr 16, 2015, at 1:51 PM, James Molloy <james at jamesmolloy.co.uk> wrote:
> 
> Hi Pete,
> 
> This looks fine to me. It's interesting though because I thought we did handle vector returns in fast-isel - emitting the bitcast conversion code. But it's a long time ago and my brain has become dusty.
> 
> Cheers,
> 
> James
> 
> On Thu, 16 Apr 2015 at 21:19 Pete Cooper <peter_cooper at apple.com <mailto:peter_cooper at apple.com>> wrote:
> Hi James
> 
> This patch makes AArch64 fast-isel bail out if it sees a call which returns a vector result.
> 
> The existing test case for this was covering up the failures because some store instructions missed fast-isel and so the calls were never actually selected in fast-isel.  I’ve inserted a branch in the BBs of all the tests to make the call be at the end of a BB and so always selected in fast-isel.  If you run the test without my C++ code too you’ll get the failures I was seeing.
> 
> I’ve left a ‘TODO’ in there because someone should probably get fast-isel to support this, but i thought it best to get correct code before aiming for more coverage.
> 
> Cheers
> Pete
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150416/f09d3e7e/attachment.html>


More information about the llvm-commits mailing list