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) ?