[PATCHSET][ARM64] Implement big endian NEON
james at jamesmolloy.co.uk
Wed May 7 04:37:54 PDT 2014
Thanks. I've made the changes you've asked and as you LGTM'd it on IRC,
have committed it with revisions r208192, r208193 and r208194.
On 2 May 2014 16:46, Tim Northover <t.p.northover at gmail.com> wrote:
> Hi James,
> From 0001:
> + uint32_t OpSize = Flags.isByVal() ? Flags.getByValSize()*8 :
> + VA.getLocVT().getSizeInBits();
> + OpSize = (OpSize + 7) / 8;
> + // FIXME: This works on big-endian for composite byvals, which
> are the common
> + // case. It should also work for fundamental types too.
> + uint32_t BEAlign = 0;
> + if (OpSize < 8 && !Subtarget->isLittleEndian() && !Flags.isByVal())
> Since OpSize is only ever used when !isByVal, this could probably be
> simplified, possibly to "if (!Subtarget->isLittleEndian() &&
> !Flags.isByVal() && VA.getLocVT().getSizeInBits() < 64" (well,
> strictly, <= 56, but I'm unconvinced that there's an actual difference
> or that 56 is more correct if there *is*).
> From 0003:
> +def : Pat<(v1i64 (bitconvert GPR64:$Xn)), (COPY_TO_REGCLASS
> GPR64:$Xn, FPR64)>; // b)
> Is that comment (etc) meaningful?
> +def : Pat<(f128 (bitconvert (v4i32 FPR128:$src))), (f128 (EXTv16i8
> (REV64v4i32 FPR128:$src), (REV64v4i32 FPR128:$src), (i32 8)))>;
> I think the long .td lines should probably be split now.
> I'd also suggest squashing 0003, 0004 & 0005 into a single commit.
> Other than that, it's looking good I think.
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-commits