aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorChung-Ju Wu <jasonwucj@gmail.com>2017-11-16 09:15:21 +0000
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>2017-11-16 09:15:21 +0000
commitaa4b851ca260e8fbd7ac9d4c1427845f5c0e039f (patch)
tree2f5b90a21a865e13608bcbd96733e778f6c61d7d /gcc/config
parentbde4b3ddd631c24de2c24785ee0e62404eed58a4 (diff)
downloadgcc-aa4b851ca260e8fbd7ac9d4c1427845f5c0e039f.zip
gcc-aa4b851ca260e8fbd7ac9d4c1427845f5c0e039f.tar.gz
gcc-aa4b851ca260e8fbd7ac9d4c1427845f5c0e039f.tar.bz2
Add new options: -mext-perf, -mext-perf2, -mext-string.
gcc/ * config/nds32/nds32.opt: Add mext-perf, mext-perf2, mext-string. * config/nds32/nds32.opt: Refine the layout. * config/nds32/nds32.c (TARGET_EXT_PERF, TARGET_EXT_PERF2, TARGET_EXT_STRING): Support new options. * config/nds32/nds32.h: Likewise. * config/nds32/nds32.md: Likewise. * config/nds32/nds32-predicates.c: Likewise. * config/nds32/constraints.md: Likewise. * common/config/nds32/nds32-common.c: Likewise. Co-Authored-By: Kito Cheng <kito.cheng@gmail.com> From-SVN: r254798
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/nds32/constraints.md4
-rw-r--r--gcc/config/nds32/nds32-predicates.c6
-rw-r--r--gcc/config/nds32/nds32.c16
-rw-r--r--gcc/config/nds32/nds32.h8
-rw-r--r--gcc/config/nds32/nds32.md8
-rw-r--r--gcc/config/nds32/nds32.opt36
6 files changed, 58 insertions, 20 deletions
diff --git a/gcc/config/nds32/constraints.md b/gcc/config/nds32/constraints.md
index a92269f..891063f 100644
--- a/gcc/config/nds32/constraints.md
+++ b/gcc/config/nds32/constraints.md
@@ -213,12 +213,12 @@
(define_constraint "Ixls"
"The immediate value 0x01"
(and (match_code "const_int")
- (match_test "TARGET_PERF_EXT && (ival == 0x1)")))
+ (match_test "TARGET_EXT_PERF && (ival == 0x1)")))
(define_constraint "Ix11"
"The immediate value 0x7ff"
(and (match_code "const_int")
- (match_test "TARGET_PERF_EXT && (ival == 0x7ff)")))
+ (match_test "TARGET_EXT_PERF && (ival == 0x7ff)")))
(define_constraint "Ibms"
"The immediate value with power of 2"
diff --git a/gcc/config/nds32/nds32-predicates.c b/gcc/config/nds32/nds32-predicates.c
index cc8ae55..b6cff20 100644
--- a/gcc/config/nds32/nds32-predicates.c
+++ b/gcc/config/nds32/nds32-predicates.c
@@ -335,7 +335,7 @@ nds32_can_use_bclr_p (int ival)
one_bit_count = popcount_hwi ((unsigned HOST_WIDE_INT) (~ival));
/* 'bclr' is a performance extension instruction. */
- return (TARGET_PERF_EXT && (one_bit_count == 1));
+ return (TARGET_EXT_PERF && (one_bit_count == 1));
}
/* Function to check if 'bset' instruction can be used with IVAL. */
@@ -350,7 +350,7 @@ nds32_can_use_bset_p (int ival)
one_bit_count = popcount_hwi ((unsigned HOST_WIDE_INT) (ival));
/* 'bset' is a performance extension instruction. */
- return (TARGET_PERF_EXT && (one_bit_count == 1));
+ return (TARGET_EXT_PERF && (one_bit_count == 1));
}
/* Function to check if 'btgl' instruction can be used with IVAL. */
@@ -365,7 +365,7 @@ nds32_can_use_btgl_p (int ival)
one_bit_count = popcount_hwi ((unsigned HOST_WIDE_INT) (ival));
/* 'btgl' is a performance extension instruction. */
- return (TARGET_PERF_EXT && (one_bit_count == 1));
+ return (TARGET_EXT_PERF && (one_bit_count == 1));
}
/* Function to check if 'bitci' instruction can be used with IVAL. */
diff --git a/gcc/config/nds32/nds32.c b/gcc/config/nds32/nds32.c
index b0d5e48..5f2e667 100644
--- a/gcc/config/nds32/nds32.c
+++ b/gcc/config/nds32/nds32.c
@@ -2188,8 +2188,14 @@ nds32_asm_file_start (void)
((TARGET_CMOV) ? "Yes"
: "No"));
fprintf (asm_out_file, "\t! Use performance extension\t: %s\n",
- ((TARGET_PERF_EXT) ? "Yes"
+ ((TARGET_EXT_PERF) ? "Yes"
: "No"));
+ fprintf (asm_out_file, "\t! Use performance extension 2\t: %s\n",
+ ((TARGET_EXT_PERF2) ? "Yes"
+ : "No"));
+ fprintf (asm_out_file, "\t! Use string extension\t\t: %s\n",
+ ((TARGET_EXT_STRING) ? "Yes"
+ : "No"));
fprintf (asm_out_file, "\t! ------------------------------------\n");
@@ -2676,8 +2682,12 @@ nds32_option_override (void)
{
/* Under V3M ISA, we need to strictly enable TARGET_REDUCED_REGS. */
target_flags |= MASK_REDUCED_REGS;
- /* Under V3M ISA, we need to strictly disable TARGET_PERF_EXT. */
- target_flags &= ~MASK_PERF_EXT;
+ /* Under V3M ISA, we need to strictly disable TARGET_EXT_PERF. */
+ target_flags &= ~MASK_EXT_PERF;
+ /* Under V3M ISA, we need to strictly disable TARGET_EXT_PERF2. */
+ target_flags &= ~MASK_EXT_PERF2;
+ /* Under V3M ISA, we need to strictly disable TARGET_EXT_STRING. */
+ target_flags &= ~MASK_EXT_STRING;
}
/* See if we are using reduced-set registers:
diff --git a/gcc/config/nds32/nds32.h b/gcc/config/nds32/nds32.h
index 81522b8..fb37c41 100644
--- a/gcc/config/nds32/nds32.h
+++ b/gcc/config/nds32/nds32.h
@@ -448,8 +448,12 @@ enum nds32_builtins
builtin_define ("__NDS32_REDUCED_REGS__"); \
if (TARGET_CMOV) \
builtin_define ("__NDS32_CMOV__"); \
- if (TARGET_PERF_EXT) \
- builtin_define ("__NDS32_PERF_EXT__"); \
+ if (TARGET_EXT_PERF) \
+ builtin_define ("__NDS32_EXT_PERF__"); \
+ if (TARGET_EXT_PERF2) \
+ builtin_define ("__NDS32_EXT_PERF2__"); \
+ if (TARGET_EXT_STRING) \
+ builtin_define ("__NDS32_EXT_STRING__"); \
if (TARGET_16_BIT) \
builtin_define ("__NDS32_16_BIT__"); \
if (TARGET_GP_DIRECT) \
diff --git a/gcc/config/nds32/nds32.md b/gcc/config/nds32/nds32.md
index 8d1f649..3c5ad51 100644
--- a/gcc/config/nds32/nds32.md
+++ b/gcc/config/nds32/nds32.md
@@ -2336,7 +2336,7 @@ create_template:
(define_insn "clzsi2"
[(set (match_operand:SI 0 "register_operand" "=r")
(clz:SI (match_operand:SI 1 "register_operand" " r")))]
- "TARGET_PERF_EXT"
+ "TARGET_EXT_PERF"
"clz\t%0, %1"
[(set_attr "type" "alu")
(set_attr "length" "4")])
@@ -2345,7 +2345,7 @@ create_template:
[(set (match_operand:SI 0 "register_operand" "=r")
(smax:SI (match_operand:SI 1 "register_operand" " r")
(match_operand:SI 2 "register_operand" " r")))]
- "TARGET_PERF_EXT"
+ "TARGET_EXT_PERF"
"max\t%0, %1, %2"
[(set_attr "type" "alu")
(set_attr "length" "4")])
@@ -2354,7 +2354,7 @@ create_template:
[(set (match_operand:SI 0 "register_operand" "=r")
(smin:SI (match_operand:SI 1 "register_operand" " r")
(match_operand:SI 2 "register_operand" " r")))]
- "TARGET_PERF_EXT"
+ "TARGET_EXT_PERF"
"min\t%0, %1, %2"
[(set_attr "type" "alu")
(set_attr "length" "4")])
@@ -2364,7 +2364,7 @@ create_template:
(zero_extract:SI (match_operand:SI 1 "register_operand" " r")
(const_int 1)
(match_operand:SI 2 "immediate_operand" " Iu05")))]
- "TARGET_PERF_EXT"
+ "TARGET_EXT_PERF"
"btst\t%0, %1, %2"
[(set_attr "type" "alu")
(set_attr "length" "4")])
diff --git a/gcc/config/nds32/nds32.opt b/gcc/config/nds32/nds32.opt
index bdff400..7c61b8a 100644
--- a/gcc/config/nds32/nds32.opt
+++ b/gcc/config/nds32/nds32.opt
@@ -21,14 +21,19 @@
HeaderInclude
config/nds32/nds32-opts.h
-mbig-endian
-Target Report RejectNegative Negative(mlittle-endian) Mask(BIG_ENDIAN)
+; ---------------------------------------------------------------
+; The following options are designed for aliasing and compatibility options.
+
+EB
+Target RejectNegative Alias(mbig-endian)
Generate code in big-endian mode.
-mlittle-endian
-Target Report RejectNegative Negative(mbig-endian) InverseMask(BIG_ENDIAN)
+EL
+Target RejectNegative Alias(mlittle-endian)
Generate code in little-endian mode.
+; ---------------------------------------------------------------
+
mreduced-regs
Target Report RejectNegative Negative(mfull-regs) Mask(REDUCED_REGS)
Use reduced-set registers for register allocation.
@@ -37,14 +42,33 @@ mfull-regs
Target Report RejectNegative Negative(mreduced-regs) InverseMask(REDUCED_REGS)
Use full-set registers for register allocation.
+; ---------------------------------------------------------------
+
+mbig-endian
+Target Undocumented RejectNegative Negative(mlittle-endian) Mask(BIG_ENDIAN)
+Generate code in big-endian mode.
+
+mlittle-endian
+Target Undocumented RejectNegative Negative(mbig-endian) InverseMask(BIG_ENDIAN)
+Generate code in little-endian mode.
+
+
mcmov
Target Report Mask(CMOV)
Generate conditional move instructions.
-mperf-ext
-Target Report Mask(PERF_EXT)
+mext-perf
+Target Report Mask(EXT_PERF)
Generate performance extension instructions.
+mext-perf2
+Target Report Mask(EXT_PERF2)
+Generate performance extension version 2 instructions.
+
+mext-string
+Target Report Mask(EXT_STRING)
+Generate string extension instructions.
+
mv3push
Target Report Mask(V3PUSH)
Generate v3 push25/pop25 instructions.