[PATCH] Fix big-endian NEON intrinsics

James Molloy james.molloy at arm.com
Wed Jun 25 06:49:32 PDT 2014


Hi Tim,

> These are fairly horrific. They're basically being used as global
> variables, not as actual state of an Intrinsic.

Agreed. I've attached a new patch that threads NamePrefix as an argument. For CallPrefix I didn't want to thread it through all possible call paths, so I created an inner helper class to contain it. This class is stateful, but it is at least immutable state.

What do you think?

James

> -----Original Message-----
> From: Tim Northover [mailto:t.p.northover at gmail.com]
> Sent: 24 June 2014 12:18
> To: James Molloy
> Cc: Clang Commits; llvm-commits
> Subject: Re: [PATCH] Fix big-endian NEON intrinsics
> 
> Hi James,
> 
> On 20 June 2014 15:49, James Molloy <james.molloy at arm.com> wrote:
> > Slightly updated patch after having thrown a lot more testing at it:
> >
> >   * Needed to check for void types and one-element-vectors when doing
> > argument/return reversal.
> >   * vreinterpret and vcreate shouldn’t be reversed.
> 
> Sorry this took so long. Basically, I think the fundamentals are
> unreviewable without a sensibly specified ACLE (and *definitely* not
> obviously the right thing to do). I'm happy to believe you that it
> implements the semantics ARM wants for big-endian SIMD until that
> document is released, though; I have no vested interest in that
> platform.
> 
> So all I can really comment on is the implementation. There was only
> really one thing which I didn't like there:
> 
> +  /// A prefix to apply to the mangled name when emitting this function.
> +  std::string NamePrefix;
> +  /// A prefix to apply to the mangled name when emitting a call to
> another
> +  /// function.
> +  std::string CallPrefix;
> 
> These are fairly horrific. They're basically being used as global
> variables, not as actual state of an Intrinsic.
> 
> Cheers.
> 
> Tim.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ARM-BE-Generate-correct-NEON-intrinsics-for-big-endi.patch
Type: application/octet-stream
Size: 25130 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140625/35e3c3c3/attachment.obj>


More information about the cfe-commits mailing list