The SIMD-register variant is miscategorized as "alu_reg" despite not using any ALU registers, and should be "neon_add" for e.g. scheduling.

Tested with check-gcc and check-g++ on aarch64-none-elf and aarch64_be-none-elf.

gcc/ChangeLog:

        * config/aarch64/aarch64.md (adddi3_aarch64): set type to neon_add.
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 3eb783c3681b16e1a5f780ec656bd261b9cb4954..f8eb305140e7b0aed006b33f1724a90939e48316 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -1198,7 +1198,7 @@
   add\\t%x0, %x1, %x2
   sub\\t%x0, %x1, #%n2
   add\\t%d0, %d1, %d2"
-  [(set_attr "type" "alu_imm,alu_reg,alu_imm,alu_reg")
+  [(set_attr "type" "alu_imm,alu_reg,alu_imm,neon_add")
    (set_attr "simd" "*,*,*,yes")]
 )
 

Reply via email to