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

--- Comment #2 from otcmaf <xuemaosheng at huawei dot com> ---
(In reply to Andrew Pinski from comment #1)
> I think this is a back-end issue.
> Can you provide the definition of movtv8hf16 ?
> I don't think you can do:
> (set (match_operand 0 predicate constraint)
>         (unspec:V8HF16 [
>                 (match_operand 1 predicate constraint)
>                 (match_operand 2 predicate constraint)
>                 (match_dup 0)
>             ] UNSPEC_MOVTVFM)))
> 
> Rather you need to do:
> (set (match_operand 0 predicate constraint)
>         (unspec:V8HF16 [
>                 (match_operand 1 predicate constraint)
>                 (match_operand 2 predicate constraint)
>                 (match_operand 3 predicate "0")
>             ] UNSPEC_MOVTVFM)))

we use this definition of movtv8hf16:
(define_insn "movtv8hf16"                                                       
  [(set (match_operand:V8HF16 0 "register_operand_s" "+Zrv")                    
        (unspec:V8HF16 [(match_operand:V8HF16 1 "register_operand_s" "Zrv")     
                        (match_operand:BF8 2 "register_operand_s" "Zrb")        
                        (match_dup 0)]UNSPEC_MOVTVFM))]

why we can't use (match_dup 0) ?

Reply via email to