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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |pinskia at gcc dot 
gnu.org
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2021-11-10
     Ever confirmed|0                           |1

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(insn 312 277 365 (set (reg:V4SF 32 v0 [179])
        (vec_duplicate:V4SF (reg:SF 4 x4 [185]))) 1129 {aarch64_simd_dupv4sf}
     (nil))


#7  0x0000000000a583e4 in output_asm_insn (templ=0x1f1f7f0 "dup\t%0.4s, %s1",
operands=0x24f6760 <recog_data>) at
/home/ubuntu/src/upstream-gcc-aarch64/gcc/gcc/final.c:3570


(define_insn "aarch64_simd_dup<mode>"
  [(set (match_operand:VDQF_F16 0 "register_operand" "=w,w")
        (vec_duplicate:VDQF_F16
          (match_operand:<VEL> 1 "register_operand" "w,r")))]
  "TARGET_SIMD"
  "@
   dup\\t%0.<Vtype>, %1.<Vetype>[0]
   dup\\t%0.<Vtype>, %<vw>1"
  [(set_attr "type" "neon_dup<q>, neon_from_gp<q>")]

;; Define corresponding core/FP element mode for each vector mode.
(define_mode_attr vw [(V8QI "w") (V16QI "w")
                      (V4HI "w") (V8HI "w")
                      (V2SI "w") (V4SI "w")
                      (DI   "x") (V2DI "x")
                      (V2SF "s") (V4SF "s")
                      (V2DF "d")])

Confirmed. This is definitely a target issue. The asm template is wrong, it
should be vwcore instead.

;; Corresponding core element mode for each vector mode.  This is a
;; variation on <vw> mapping FP modes to GP regs.
(define_mode_attr vwcore [(V8QI "w") (V16QI "w")
                          (V4HI "w") (V8HI "w")
                          (V2SI "w") (V4SI "w")
                          (DI   "x") (V2DI "x")
                          (V4HF "w") (V8HF "w")
                          (V4BF "w") (V8BF "w")
                          (V2SF "w") (V4SF "w")
                          (V2DF "x")
                          (VNx16QI "w") (VNx8QI "w") (VNx4QI "w") (VNx2QI "w")
                          (VNx8HI "w") (VNx4HI "w") (VNx2HI "w")
                          (VNx8HF "w") (VNx4HF "w") (VNx2HF "w")
                          (VNx8BF "w") (VNx4BF "w") (VNx2BF "w")
                          (VNx4SI "w") (VNx2SI "w")
                          (VNx4SF "w") (VNx2SF "w")
                          (VNx2DI "x")
                          (VNx2DF "x")])

I will see if changing will fix it.

Reply via email to