Commit 09d69286 by Claudiu Zissulescu Committed by Claudiu Zissulescu

[PATCH] [ARC][QuarkSE] Update

QuarkSE has lp_count width set to 16 bits. Update the compiler to
consider it.

gcc/
2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc-arch.h (arc_extras): New enum.
	(arc_cpu_t):Add field extra.
	(arc_cpu_types): Consider the extras.
	* config/arc/arc-cpus.def: Add extras info.
	* config/arc/arc-opts.h (processor_type): Consider extra field.
	* config/arc/arc.c (arc_override_options): Handle extra field.

From-SVN: r261496
parent d65485c5
2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc-arch.h (arc_extras): New enum.
(arc_cpu_t):Add field extra.
(arc_cpu_types): Consider the extras.
* config/arc/arc-cpus.def: Add extras info.
* config/arc/arc-opts.h (processor_type): Consider extra field.
* config/arc/arc.c (arc_override_options): Handle extra field.
2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc-arch.h: Update ARC_OPTX macro.
* config/arc/arc-options.def (ARC_OPTX): Introduce a new doc
field.
......
......@@ -76,6 +76,17 @@ enum arc_tune_attr
ARC_TUNE_CORE_3
};
/* Extra options for a processor template to hold any CPU specific
information which is not cover in arc-arches.def. Such example is
the width of LP_COUNT register, or the number of register
banks. */
enum arc_extras
{
HAS_NONE,
HAS_LPCOUNT_16
};
/* CPU specific properties. */
typedef struct
......@@ -92,6 +103,9 @@ typedef struct
/* Specific flags. */
const unsigned long long flags;
/* Extra value. */
enum arc_extras extra;
/* Tune value. */
enum arc_tune_attr tune;
......@@ -109,12 +123,12 @@ const arc_arch_t arc_arch_types[] =
const arc_cpu_t arc_cpu_types[] =
{
{"none", NULL, PROCESSOR_NONE, 0, ARC_TUNE_NONE},
#define ARC_CPU(NAME, ARCH, FLAGS, TUNE) \
{#NAME, &arc_arch_types [BASE_ARCH_##ARCH], PROCESSOR_##NAME, FLAGS, ARC_TUNE_##TUNE },
{"none", NULL, PROCESSOR_NONE, 0, HAS_NONE, ARC_TUNE_NONE},
#define ARC_CPU(NAME, ARCH, FLAGS, EXTRA, TUNE) \
{#NAME, &arc_arch_types [BASE_ARCH_##ARCH], PROCESSOR_##NAME, FLAGS, HAS_##EXTRA, ARC_TUNE_##TUNE },
#include "arc-cpus.def"
#undef ARC_CPU
{NULL, NULL, PROCESSOR_NONE, 0, ARC_TUNE_NONE}
{NULL, NULL, PROCESSOR_NONE, 0, HAS_NONE, ARC_TUNE_NONE}
};
/* Currently selected cpu type. */
......
......@@ -43,34 +43,37 @@
as defined in arc-options.def file, and allowed by arc-arches.def
file. The specific hardware flags are enumerated without using
spaces between the '|' character and consequtive flags.
EXTRA Extra hardware flags, different than the ones in
arc-arches.def. Here we can specify the width of lp_count,
for example.
TUNE Tune value for the given configuration, otherwise NONE. */
ARC_CPU (em, em, 0, NONE)
ARC_CPU (em_mini, em, FL_RF16, NONE)
ARC_CPU (arcem, em, FL_MPYOPT_2|FL_CD|FL_BS, NONE)
ARC_CPU (em4, em, FL_CD, NONE)
ARC_CPU (em4_dmips, em, FL_MPYOPT_2|FL_CD|FL_DIVREM|FL_NORM|FL_SWAP|FL_BS, NONE)
ARC_CPU (em4_fpus, em, FL_MPYOPT_2|FL_CD|FL_DIVREM|FL_NORM|FL_SWAP|FL_BS|FL_FPU_FPUS, NONE)
ARC_CPU (em4_fpuda, em, FL_MPYOPT_2|FL_CD|FL_DIVREM|FL_NORM|FL_SWAP|FL_BS|FL_FPU_FPUDA, NONE)
ARC_CPU (quarkse_em, em, FL_MPYOPT_3|FL_CD|FL_DIVREM|FL_NORM|FL_SWAP|FL_BS|FL_FPX_QUARK|FL_SPFP|FL_DPFP, NONE)
ARC_CPU (hs, hs, 0, NONE)
ARC_CPU (archs, hs, FL_MPYOPT_2|FL_DIVREM|FL_LL64, NONE)
ARC_CPU (hs34, hs, FL_MPYOPT_2, NONE)
ARC_CPU (hs38, hs, FL_MPYOPT_9|FL_DIVREM|FL_LL64, NONE)
ARC_CPU (hs38_linux, hs, FL_MPYOPT_9|FL_DIVREM|FL_LL64|FL_FPU_FPUD_ALL, NONE)
ARC_CPU (arc600, 6xx, FL_BS, ARC600)
ARC_CPU (arc600_norm, 6xx, FL_BS|FL_NORM, ARC600)
ARC_CPU (arc600_mul64, 6xx, FL_BS|FL_NORM|FL_MUL64, ARC600)
ARC_CPU (arc600_mul32x16, 6xx, FL_BS|FL_NORM|FL_MUL32x16, ARC600)
ARC_CPU (arc601, 6xx, 0, ARC600)
ARC_CPU (arc601_norm, 6xx, FL_NORM, ARC600)
ARC_CPU (arc601_mul64, 6xx, FL_NORM|FL_MUL64, ARC600)
ARC_CPU (arc601_mul32x16, 6xx, FL_NORM|FL_MUL32x16, ARC600)
ARC_CPU (arc700, 700, 0, ARC700_4_2_STD)
ARC_CPU (nps400, 700, 0, ARC700_4_2_STD)
ARC_CPU (em, em, 0, NONE, NONE)
ARC_CPU (em_mini, em, FL_RF16, NONE, NONE)
ARC_CPU (arcem, em, FL_MPYOPT_2|FL_CD|FL_BS, NONE, NONE)
ARC_CPU (em4, em, FL_CD, NONE, NONE)
ARC_CPU (em4_dmips, em, FL_MPYOPT_2|FL_CD|FL_DIVREM|FL_NORM|FL_SWAP|FL_BS, NONE, NONE)
ARC_CPU (em4_fpus, em, FL_MPYOPT_2|FL_CD|FL_DIVREM|FL_NORM|FL_SWAP|FL_BS|FL_FPU_FPUS, NONE, NONE)
ARC_CPU (em4_fpuda, em, FL_MPYOPT_2|FL_CD|FL_DIVREM|FL_NORM|FL_SWAP|FL_BS|FL_FPU_FPUDA, NONE, NONE)
ARC_CPU (quarkse_em, em, FL_MPYOPT_3|FL_CD|FL_DIVREM|FL_NORM|FL_SWAP|FL_BS|FL_FPX_QUARK|FL_SPFP|FL_DPFP, LPCOUNT_16, NONE)
ARC_CPU (hs, hs, 0, NONE, NONE)
ARC_CPU (archs, hs, FL_MPYOPT_2|FL_DIVREM|FL_LL64, NONE, NONE)
ARC_CPU (hs34, hs, FL_MPYOPT_2, NONE, NONE)
ARC_CPU (hs38, hs, FL_MPYOPT_9|FL_DIVREM|FL_LL64, NONE, NONE)
ARC_CPU (hs38_linux, hs, FL_MPYOPT_9|FL_DIVREM|FL_LL64|FL_FPU_FPUD_ALL, NONE, NONE)
ARC_CPU (arc600, 6xx, FL_BS, NONE, ARC600)
ARC_CPU (arc600_norm, 6xx, FL_BS|FL_NORM, NONE, ARC600)
ARC_CPU (arc600_mul64, 6xx, FL_BS|FL_NORM|FL_MUL64, NONE, ARC600)
ARC_CPU (arc600_mul32x16, 6xx, FL_BS|FL_NORM|FL_MUL32x16, NONE, ARC600)
ARC_CPU (arc601, 6xx, 0, NONE, ARC600)
ARC_CPU (arc601_norm, 6xx, FL_NORM, NONE, ARC600)
ARC_CPU (arc601_mul64, 6xx, FL_NORM|FL_MUL64, NONE, ARC600)
ARC_CPU (arc601_mul32x16, 6xx, FL_NORM|FL_MUL32x16, NONE, ARC600)
ARC_CPU (arc700, 700, 0, NONE, ARC700_4_2_STD)
ARC_CPU (nps400, 700, 0, NONE, ARC700_4_2_STD)
/* Local Variables: */
/* mode: c */
......
......@@ -24,7 +24,7 @@
enum processor_type
{
PROCESSOR_NONE = 0,
#define ARC_CPU(NAME, ARCH, FLAGS, TUNE) PROCESSOR_##NAME,
#define ARC_CPU(NAME, ARCH, FLAGS, EXTRA, TUNE) PROCESSOR_##NAME,
#include "arc-cpus.def"
#undef ARC_CPU
PROCESSOR_generic
......
......@@ -1254,6 +1254,16 @@ arc_override_options (void)
#undef ARC_OPTX
#undef ARC_OPT
/* Set extras. */
switch (arc_selected_cpu->extra)
{
case HAS_LPCOUNT_16:
arc_lpcwidth = 16;
break;
default:
break;
}
/* Set Tune option. */
if (arc_tune == ARC_TUNE_NONE)
arc_tune = (enum arc_tune_attr) arc_selected_cpu->tune;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment