‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ On Monday, December 9, 2019 3:39 AM, Richard Biener richard.guent...@gmail.com wrote:
> > I'm modifying the code trying to get complex double accepted as a valid > > type by the vectorizer. > > This is the first time I'm dealing with GCC source so I ask for some > > patience. > > Function mode_for_vector in gcc/stor-layout.c requires a new else-if for > > complex double. I cannot > > seem to find a header file where MIN_MODE_VECTOR_FLOAT and similar macros > > are defined. I expect > > a new MIN_MODE_COMPLEX_VECTOR_FLOAT to be defined in the same file as the > > existing similar macros. > > How do I go about making this change? > > You don't want to do it this way but map _Complex double to a vector > of 2 * n doubles instead. > Look into get_related_vectype_for_scalar_type where it alreday has > code to "change" the > scalar type into something that fits what we allow for vectors. > Function get_related_vectype_for_scalar_type doesn't exist. There is one named get_vectype_for_scalar_type, which in turn calls get_vectype_for_scalar_type_and_size. In that last function I already have 2 changes to prevent NULL_TREE being returned for _Complex double. 1. In the first if statement of the function, added new condition !is_complex_float_mode (...), with arguments identical to those of the existing !is_int_mode and !is_float_mode conditions. 2. In the 2nd if statement, the else-if has a new condition !COMPLEX_FLOAT_TYPE_P (scalar_type) After those changes, NULL_TREE is returned by a clause of the if statement whose first condition is if (known_eq (size, 0U)). The 2nd part of the else-if returns true for !mode_for_vector (...). Unless the correct path should involve a call similar to build_nonstandard_integer_type in the 2nd if statement, I still end up requiring the change to mode_for_vector as in my last post. Bert.