https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122762

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rsandifo at gcc dot gnu.org

--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
So we consider

 <vector_type 0x7fefefd7c3f0
    type <boolean_type 0x7fefefd7c498 public QI
        size <integer_cst 0x7fefefe1e030 constant 8>
        unit-size <integer_cst 0x7fefefe1e048 constant 1>
        align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fefefd7c498 precision:4 min <integer_cst 0x7fefefd43930 -8> max <integer_cst
0x7fefefd43a20 7>>
    VNx4BI
    size <poly_int_cst 0x7fefefcffec0
        type <integer_type 0x7fefefe1c0a8 bitsizetype public unsigned TI
            size <integer_cst 0x7fefefe02f78 constant 128>
            unit-size <integer_cst 0x7fefefe02f90 constant 16>
            align:128 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fefefe1c0a8 precision:128 min <integer_cst 0x7fefefe02fa8 0> max
<integer_cst 0x7fefefe0c938 340282366920938463463374607431768211455>>
        constant
        elt0: <integer_cst 0x7fefefe1e0f0 constant 16> elt1: <integer_cst
0x7fefefe1e0f0 16>>

and 

 <vector_type 0x7fefefd7c348
    type <boolean_type 0x7fefefd7c498 public QI
        size <integer_cst 0x7fefefe1e030 constant 8>
        unit-size <integer_cst 0x7fefefe1e048 constant 1>
        align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fefefd7c498 precision:4 min <integer_cst 0x7fefefd43930 -8> max <integer_cst
0x7fefefd43a20 7>>
    VNx4BI
    size <poly_int_cst 0x7fefefcffec0
        type <integer_type 0x7fefefe1c0a8 bitsizetype public unsigned TI
            size <integer_cst 0x7fefefe02f78 constant 128>
            unit-size <integer_cst 0x7fefefe02f90 constant 16>
            align:128 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fefefe1c0a8 precision:128 min <integer_cst 0x7fefefe02fa8 0> max
<integer_cst 0x7fefefe0c938 340282366920938463463374607431768211455>>
        constant
        elt0: <integer_cst 0x7fefefe1e0f0 constant 16> elt1: <integer_cst
0x7fefefe1e0f0 16>>

not compatible, because aarch64_compatible_vector_types_p they are not.

Not sure why this does not reproduce reliably.

So the issue is then likely that the

  bestn->simdclone->args[i].vector_type

is (sometimes?) a SVE builtin type and when we register that with the loop
mask things go downhill?

I do wonder why the middle-end should care about SVE builtin type vs. not.
We need to insert conversions there then?  And why the SVE builtin type
(identified by a type attribute) isn't a variant type of the non-builtin
one.

Reply via email to