>> +/* Integer constants representing which else value is supported for masked >> load >> + functions. */ >> +#define MASK_LOAD_ELSE_ZERO -1 >> +#define MASK_LOAD_ELSE_M1 -2 >> +#define MASK_LOAD_ELSE_UNDEFINED -3 >> + >> +#define MASK_LOAD_GATHER_ELSE_IDX 6 > > Why this define?
I initially wanted to use internal_fn_else_index to query the optab's else operand. IFN and optab else indices match for maskload and mask_load_lanes but not for mask_gather_load because the latter implicitly has the sign/zero extension operand. I documented this and replaced MASK_LOAD_GATHER_ELSE_IDX with internal_fn_else_index (...) + 1 now. In addition, I figured we don't need to query the else operand in pattern recog but can use ZERO there as well. It should be sufficient to "overwrite" it in vectorizable_load. That way vect_get_else_val_from_tree becomes unnecessary. Most of the other reviewer comments are incorporated now. Just still fighting with an SLP ICE on aarch64 where a swapped oprnd_info->ops[j] seems to be NULL. -- Regards Robin