[Bug target/70293] [ICE, AVX-512] Wrong reg constraints in vec_dup

kyukhin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Mar 18 13:55:00 GMT 2016


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

--- Comment #1 from Kirill Yukhin <kyukhin at gcc dot gnu.org> ---
We've got duplication of patterns (make mddump):
;; /export/users/kyukhin/gcc/git/gcc2/gcc/config/i386/sse.md: 17107
(define_insn ("avx2_pbroadcastv8hi")
     [
        (set (match_operand:V8HI 0 ("register_operand") ("=x"))
            (vec_duplicate:V8HI (vec_select:HI (match_operand:V8HI 1
("nonimmediate_operand") ("xm"))
                    (parallel [
                            (const_int 0 [0])
                        ]))))
    ] ("TARGET_AVX2") ("vpbroadcastw\t{%1, %0|%0, %w1}")
     [
        (set_attr ("type") ("ssemov"))
        (set_attr ("prefix_extra") ("1"))
        (set_attr ("prefix") ("vex"))
        (set_attr ("mode") ("TI"))
    ])
...
(define_insn ("avx512vl_vec_dupv8hi")
     [
        (set (match_operand:V8HI 0 ("register_operand") ("=v"))
            (vec_duplicate:V8HI (vec_select:HI (match_operand:V8HI 1
("nonimmediate_operand") ("vm"))
                    (parallel [
                            (const_int 0 [0])
                        ]))))
    ] ("(TARGET_AVX512BW) && (TARGET_AVX512VL)") ("vpbroadcastw\t{%1, %0|%0,
%1}")
     [
        (set_attr ("type") ("ssemov"))
        (set_attr ("prefix") ("evex"))
        (set_attr ("mode") ("TI"))
    ])

That's why we've got unsatisfied constraints on xmmN, N>15.


More information about the Gcc-bugs mailing list