joechrisellis added inline comments.

================
Comment at: clang/test/Sema/attr-arm-sve-vector-bits.c:278-283
-// Test implicit conversion between SVE and GNU vector is invalid when
-// __ARM_FEATURE_SVE_BITS != N
-#if defined(__ARM_FEATURE_SVE_BITS) && __ARM_FEATURE_SVE_BITS == 512
-typedef int32_t int4 __attribute__((vector_size(16)));
-svint32_t badcast(int4 x) { return x; } // expected-error {{returning 'int4' 
(vector of 4 'int32_t' values) from a function with incompatible result type 
'svint32_t' (aka '__SVInt32_t')}}
-#endif
----------------
c-rhodes wrote:
> I don't think this can be removed. The ACLE states "Whenever 
> __ARM_FEATURE_SVE_BITS==N, GNUT implicitly converts to VLAT and VLAT 
> implicitly converts to GNUT.".
> 
> AFAIK lax vector conversions only apply to vectors of the same width, with 
> GNU vectors for example the following is invalid regardless of lax vector 
> conversions:
> 
> ```typedef int8_t int8x16_t __attribute__((vector_size(16)));
> typedef int8_t int8x64_t __attribute__((vector_size(64)));
> 
> int8x16_t foo(int8x64_t x) { return x; }```
Great spot, didn't see that in the spec. I've re-added the test and added an 
extra condition to check if `__ARM_FEATURE_SVE_BITS == N` before allowing the 
lax conversion for GNU vectors. Not sure if this is the best way to do it, 
though. :) 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D91696

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

Reply via email to