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

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Trying 2184 -> 2187:
 2184: r2724:V64DF=unspec[r787:V64DF,r2722:V64SI,r2418:DI] 2
      REG_DEAD r2722:V64SI
      REG_EQUAL unspec[r787:V64DF,r2722:V64SI,0xffffffffffffffff] 2
 2187: {r2727:SI=r2724:V64DF#0&0xff;clobber scratch;}


(insn 2184 2182 2186 5 (set (reg:V64DF 2724)
        (unspec:V64DF [
                (reg:V64DF 787 [ vect__8.17 ])
                (reg:V64SI 2722)
                (reg:DI 2418)
            ] UNSPEC_BPERMUTE)) "t.f90":4:46 discrim 73731 1237
{ds_bpermutev64df}
     (expr_list:REG_DEAD (reg:V64SI 2722)
        (expr_list:REG_EQUAL (unspec:V64DF [
                    (reg:V64DF 787 [ vect__8.17 ])
                    (reg:V64SI 2722)
                    (const_int -1 [0xffffffffffffffff])
                ] UNSPEC_BPERMUTE)
            (nil))))

(insn 2187 2186 2194 5 (parallel [
            (set (reg:SI 2727)
                (and:SI (subreg:SI (reg:V64DF 2724) 0)
                    (const_int 255 [0xff])))
            (clobber (scratch:BI))
        ]) "t.f90":4:46 discrim 73731 64 {andsi3}
     (nil))



> (subreg:SI (reg:V64DF 2724) 0)

Is that even valid beforehand?

Reply via email to