Steve Ellcey <sell...@cavium.com> writes:
> I have a question about the poly_uint64 type and the TYPE_VECTOR_SUBPARTS
> macro.  I am trying to copy some code from i386.c into my aarch64 build
> that is basically:
>
> int n;
> n = TYPE_VECTOR_SUBPARTS (type_out);
>
> And it is not compiling for me, I get:
>
> /home/sellcey/gcc-vectmath/src/gcc/gcc/config/aarch64/aarch64-builtins.c:1504:37:
> error: cannot convert ‘poly_uint64’ {aka ‘poly_int<2, long unsigned
> int>’} to ‘int’ in assignment
>    n = TYPE_VECTOR_SUBPARTS (type_out);
>
> My first thought was that I was missing a header file but I put
> all the header includes that are in i386.c into aarch64-builtins.c
> and it still does not compile.  It works on the i386 side.  It looks
> like poly-int.h and poly-int-types.h are included by coretypes.h
> and I include that header file so I don't understand why this isn't
> compiling and what I am missing.  Any help?

Code in config/aarch64 needs to work with SVE, where TYPE_VECTOR_SUBPARTS
isn't necessarily a compile-time constant.

If the code you're adding is inherently specific to Advanced SIMD
(not sure, but guessing yes based on this being aarch64-builtins.c)
then like Kugan says, using to_constant is OK.

Which code are you copying over?

Thanks,
Richard

Reply via email to