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