lhmouse wrote:

I think I should delete the vector and matrix part in this change. Clang 
doesn't use compatible layout for vectors of `long double`s. This isn't a new 
issue; it's already very different for x86_64 on Linux. Thus there's likely no 
code which uses vectors of `long double`s.

GCC layout for `typedef V long double __attribute__((__vector_size__(32)))`:
```
 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 
26 27 28 29 30 31
 v  v  v  v  v  v  v  v  v  v  .  .  .  .  .  .  v  v  v  v  v  v  v  v  v  v  
.  .  .  .  .  .
\__________ elem[0] _________/\____ padding ___/\__________ elem[1] 
_________/\____ padding ___/
```

Clang layout:
```
 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 
26 27 28 29 30 31
 v  v  v  v  v  v  v  v  v  v  v  v  v  v  v  v  v  v  v  v  .  .  .  .  .  .  
.  .  .  .  .  .
\__________ elem[0] _________/\__________ elem[1] _________/\_____________ 
padding ____________/
```


https://github.com/llvm/llvm-project/pull/237057
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to