[PATCHSET][ARM64] Implement big endian NEON

James Molloy james at jamesmolloy.co.uk
Wed May 7 05:19:20 PDT 2014


Hi Tim,

You were quite right - moving the bitcast logic into the .td file allowed a
trivial patch to take the place of all the ISelLowering changes. Attached
are the last three patches for LLVM for big endian that I have - they're
now fairly trivial (but the first one looks large because of testcases).

Cheers,

James


On 7 May 2014 12:37, James Molloy <james at jamesmolloy.co.uk> wrote:

> Hi Tim,
>
> 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.
>
> Cheers,
> James
>
>
> 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.
>>
>> Cheers.
>>
>> Tim.
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140507/7aca3f62/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ARM64-BE-Implement-the-lane-twiddling-logic-at-AAPCS.patch
Type: text/x-patch
Size: 60477 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140507/7aca3f62/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-ARM64-BE-Fix-variable-argument-saving.patch
Type: text/x-patch
Size: 3549 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140507/7aca3f62/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0003-ARM64-BE-Fix-fast-isel-and-add-appropriate-RUN-lines.patch
Type: text/x-patch
Size: 2812 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140507/7aca3f62/attachment-0002.bin>


More information about the llvm-commits mailing list