[PATCH] RISC-V: The 'multilib-generator' enhancement.

2021-09-27 Thread Geng Qi via Gcc-patches
From: gengqi gcc/ChangeLog: * config/riscv/arch-canonicalize (longext_sort): New function for sorting 'multi-letter'. * config/riscv/multilib-generator: Skip to next loop when current 'alt' is 'arch'. The 'arch' may not be the first of 'alts'. (_expand_comb

[PATCH] RISC-V: Pattern name fix mulm3_highpart -> smulm3_highpart.

2021-09-27 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/riscv/riscv.md (muldi3_highpart): Rename to muldi3_highpart. (mulditi3): Emit muldi3_highpart. (mulsi3_highpart): Rename to mulsi3_highpart. (mulsidi3): Emit mulsi3_highpart. --- gcc/config/riscv/riscv.md | 8 1 file changed

[PATCH 2/4] C-SKY: Delete LO_REGS and HI_REGS, use HILO_REGS instead.

2021-05-24 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/constraints.md ("l", "h"): Delete. * config/csky/csky.h (reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Delete LO_REGS and HI_REGS. * config/csky/csky.c (regno_reg_classm, csky_secondary_reload, csky_register_move_cost):

[PATCH 3/4] C-SKY: Bug fix for bad setting of TARGET_DSP and TARGET_DIV.

2021-05-24 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/csky.c (csky_option_override): Init csky_arch_isa_features[] advanced, so TARGET_DSP and TARGET_DIV can be set well. --- gcc/config/csky/csky.c | 24 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/gcc/

[PATCH 4/4] C-SKY: Separate FRAME_POINTER_REGNUM into FRAME_POINTER_REGNUM and HARD_FRAME_POINTER_REGNUM.

2021-05-24 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/csky.h (FRAME_POINTER_REGNUM): Use HARD_FRAME_POINTER_REGNUM and FRAME_POINTER_REGNUM instead of the signle definition. The signle definition may not work well at simplify_subreg_regno(). (ELIMINABLE_REGS): Add for HARD_FRAME_POI

[PATCH 1/4] C-SKY: Add fpuv3 instructions and CK860 arch.

2021-05-24 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/constraints.md ("W"): New constriant for mem operand with base reg, index register. ("Q"): Renamed and modified "csky_valid_fpuv2_mem_operand" to "csky_valid_mem_constraint_operand" to deal with both "Q" and "W" constraint.

[PATCH] C-SKY: Add insn "ldbs".

2021-05-25 Thread Geng Qi via Gcc-patches
gcc/ * config/csky/csky.md (cskyv2_sextend_ldbs): New insn. gcc/testsuite/ * gcc/testsuite/gcc.target/csky/ldbs.c: New. --- gcc/config/csky/csky.md | 10 ++ gcc/testsuite/gcc.target/csky/ldbs.c | 11 +++ 2 files changed, 21 insertions(+) create mode 1

[PATCH] C-SKY: Support fpuv2:fldrd/fstrd and fpuv3:fldr.64/fstr.64.

2021-05-25 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/csky.c (ck810_legitimate_index_p): Modified for support "base + index" with DF mode. * config/csky/constraints.md ("Y"): New constraint for memory operands without index register. * config/csky/csky_insn_fpuv2.md (fpuv3_m

[PATCH] RISC-V: For '-march' and '-mabi' options, add 'Negative' property mentions itself.

2021-04-28 Thread Geng Qi via Gcc-patches
When use multi-lib riscv-tool-chain. A bug is triggered when there are two '-march' at command line. riscv64-unknown-elf-gcc -march=rv32gcp -mabi=ilp32f -march=rv32gcpzp64 HelloWorld.c /lhome/gengq/riscv64-linux-ptest/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../riscv64-unknown-elf/bin/ld: /lh

[PATCH] doc/options.texi: Fix the discription of 'Negative'.

2021-04-28 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * doc/options.texi (Negative): Fix the discription so that it matches the code implementation of prune_options(). --- gcc/doc/options.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi index 205762

[PATCH] C-SKY: Add fpuv3 instructions and CK860 arch.

2021-04-30 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/constraints.md ("W"): New constriant for mem operand with base reg, index register. ("Q"): Renamed and modified "csky_valid_fpuv2_mem_operand" to "csky_valid_mem_constraint_operand" to deal with both "Q" and "W" constraint.

[PATCH] C-SKY: Delete LO_REGS and HI_REGS, use HILO_REGS instead.

2021-04-30 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/constraints.md ("l", "h"): Delete. * config/csky/csky.h (reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Delete LO_REGS and HI_REGS. * config/csky/csky.c (regno_reg_classm, csky_secondary_reload, csky_register_move_cost):

[PATCH] C-SKY: Bug fix for bad setting of TARGET_DSP and TARGET_DIV.

2021-04-30 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/csky.c (csky_option_override): Init csky_arch_isa_features[] advanced, so TARGET_DSP and TARGET_DIV can be set well. --- gcc/config/csky/csky.c | 24 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/gcc/

[PATCH] C-SKY: Separate FRAME_POINTER_REGNUM into FRAME_POINTER_REGNUM and HARD_FRAME_POINTER_REGNUM.

2021-04-30 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/csky.h (FRAME_POINTER_REGNUM): Use HARD_FRAME_POINTER_REGNUM and FRAME_POINTER_REGNUM instead of the signle definition. The signle definition may not work well at simplify_subreg_regno(). (ELIMINABLE_REGS): Add for HARD_FRAME_POI

[PATCH] C-SKY: Add insn "ldbs".

2021-04-30 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: config/csky/csky.md (cskyv2_sextend_ldbs): New insn. --- gcc/config/csky/csky.md | 10 ++ 1 file changed, 10 insertions(+) diff --git a/gcc/config/csky/csky.md b/gcc/config/csky/csky.md index c27d627..b980d4c 100644 --- a/gcc/config/csky/csky.md +++ b/gcc/config/cs

[PATCH] C-SKY: Cases for csky fpuv3 instructions.

2021-04-30 Thread Geng Qi via Gcc-patches
gcc/testsuite/ChangeLog: * gcc/testsuite/gcc.target/csky/fpuv3/fpuv3.exp: New. * gcc/testsuite/gcc.target/csky/fpuv3/fpv3_div.c: New. * gcc/testsuite/gcc.target/csky/fpuv3/fpv3_fadd.c: New. * gcc/testsuite/gcc.target/csky/fpuv3/fpv3_fdtos.c: New. * gcc/tests

[PATCH] C-SKY: Use default for TARGET_CAN_CHANGE_MODE_CLASS.

2021-04-30 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/csky.c (csky_can_change_mode_class): Delete. For csky, HF/SF mode use the low bits of VREGS. --- gcc/config/csky/csky.c | 16 1 file changed, 16 deletions(-) diff --git a/gcc/config/csky/csky.c b/gcc/config/csky/csky.c index 7f2af82..

[PATCH] C-SKY: Fix for gcc.dg/torture/stackalign/builtin-return-2.c.

2021-04-30 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/csky.md (untyped_call): Emit clobber for return registers to mark them used. --- gcc/config/csky/csky.md | 4 1 file changed, 4 insertions(+) diff --git a/gcc/config/csky/csky.md b/gcc/config/csky/csky.md index b980d4c..f91d851 100644 --- a/gcc/c

[PATCH] C-SKY: Use default for TARGET_PROMOTE_PROTOTYPES.

2021-04-30 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/csky.c (TARGET_PROMOTE_PROTOTYPES): Use default. --- gcc/config/csky/csky.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/gcc/config/csky/csky.c b/gcc/config/csky/csky.c index 67cdf9c..e4c92fe 100644 --- a/gcc/config/csky/csky.c +++ b/gcc/config/csky/c

[PATCH] C-SKY: Support for fpuv2:fldrd/fstrd and fpuv3:fldr.64/fstr.64.

2021-04-30 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * config/csky/csky.c (ck810_legitimate_index_p): Modified for support "base + index" with DF mode. * config/csky/constraints.md ("Y"): New constraint for memory operands without index register. * config/csky/csky_insn_fpuv2.md (fpuv3_m

[PATCH] RISC-V: Properly parse the letter 'p' in '-march'.

2021-05-17 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * common/config/riscv/riscv-common.c (riscv_subset_list::parsing_subset_version): Properly parse the letter 'p' in '-march'. gcc/testsuite/ChangeLog: * gcc.target/riscv/arch-12.c: New. * gcc.target/riscv/attribute-19.c: New. --- gcc/common/co

[PATCH] RISC-V: Properly parse the letter 'p' in '-march'.

2021-05-17 Thread Geng Qi via Gcc-patches
gcc/ChangeLog: * common/config/riscv/riscv-common.c (riscv_subset_list::parsing_subset_version): Properly parse the letter 'p' in '-march'. (riscv_subset_list::parse_std_ext, riscv_subset_list::parse_multiletter_ext): To handle errors generated in ri

[PATCH] RISC-V: The 'multilib-generator' enhancement.

2021-01-17 Thread Geng Qi via Gcc-patches
From: gengqi gcc/ChangeLog: * config/riscv/arch-canonicalize (longext_sort): New function for sorting 'multi-letter'. * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'. The 'arch' may not be the first of 'alts'. (_expand_combination):

[PATCH] RISC-V: The 'multilib-generator' enhancement.

2021-01-17 Thread Geng Qi via Gcc-patches
From: gengqi Think about this case: ./multilib-generator rv32imc-ilp32-rv32imac,rv32imacxthead-f Here are 2 problems: 1. A unexpected 'xtheadf' extension was made. 2. The arch 'rv32imac' was not be created. This modification fix these two, and also sorts 'multi-letter'. gcc/ChangeLog: