tmatheson added a comment.

In D146242#4427707 <https://reviews.llvm.org/D146242#4427707>, @chill wrote:

> I was just thinking to LGTM it :)
>
> IMHO, the alignment adjustment  happens because of C.4 (B.3 indeed leave the 
> HFA/HVA unmodified).
>
>> C.4  If the argument is an HFA, an HVA, a Quad-precision Floating-point or 
>> short vector type then the NSAA is rounded up to the next multiple of 8 if 
>> its natural alignment is ≤ 8 or the next multiple of 16 if its natural 
>> alignment is ≥ 16.

I think that C2 would be hit first, suggesting it should be allocated a SIMD 
register and alignment should be irrelevant, assuming sufficient registers:

> C.2 If the argument is an HFA or an HVA and there are sufficient unallocated 
> SIMD and Floating-point registers (NSRN + number of members ≤ 8), then the 
> argument is allocated to SIMD and Floating-point registers (with one register 
> per member of the HFA or HVA). The NSRN is incremented by the number of 
> registers used. The argument has now been allocated.

If not enough registers, the size also needs rounded up:

> C.3 If the argument is an HFA or an HVA then the NSRN is set to 8 and the 
> size of the argument is rounded up to the nearest multiple of 8 bytes.

After that C4 would indeed be hit. However C4 differs from B6 
<https://reviews.llvm.org/B6>, in that C4 rounds up to the nearest multiple of 
8 or 16 (which is not what the patch currently does) whereas B6 
<https://reviews.llvm.org/B6> restricts it to either 6 or 16 (which this what 
this patch does, but shouldn't apply to HVAs).

The final rule that actually does the allocation is C6:

> C.6 If the argument is an HFA, an HVA, a Half-, Single-, Double- or Quad- 
> precision Floating-point or short vector type, then the argument is copied to 
> memory at the adjusted NSAA. The NSAA is incremented by the size of the 
> argument. The argument has now been allocated.

(This is all in reference to HVA types like `struct { uint8x16_t m; };`)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146242/new/

https://reviews.llvm.org/D146242

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to