diff gcc/config/arc/driver-arc.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/config/arc/driver-arc.c	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,81 @@
+/* Subroutines for the gcc driver.
+   Copyright (C) 2016-2017 Free Software Foundation, Inc.
+   Contributed by Claudiu Zissulescu <claziss@synopsys.com>
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
+
+/* Returns command line parameters to pass to as.  */
+
+const char*
+arc_cpu_to_as (int argc, const char **argv)
+{
+  const char *name = NULL;
+  const arc_cpu_t *arc_selected_cpu;
+
+  /* No argument, check what is the default cpu.  */
+  if (argc == 0)
+    {
+      arc_selected_cpu = &arc_cpu_types[(int) TARGET_CPU_DEFAULT];
+    }
+  else
+    {
+      name = argv[0];
+      for (arc_selected_cpu = arc_cpu_types; arc_selected_cpu->name;
+	   arc_selected_cpu++)
+	{
+	  if (strcmp (arc_selected_cpu->name, name) == 0)
+	    break;
+	}
+    }
+
+  switch (arc_selected_cpu->arch_info->arch_id)
+    {
+    case BASE_ARCH_em:
+      if (arc_selected_cpu->flags & FL_CD)
+	name = "-mcode-density";
+      else
+	name = "";
+      if (arc_selected_cpu->flags & FL_FPUDA)
+	name = concat ("-mfpuda ", name, NULL);
+      if (arc_selected_cpu->flags & FL_SPFP)
+	name = concat ("-mspfp ", name, NULL);
+      if (arc_selected_cpu->flags & FL_DPFP)
+	name = concat ("-mdpfp ", name, NULL);
+      return concat ("-mcpu=arcem ", name, NULL);
+    case BASE_ARCH_hs:
+      return "-mcpu=archs";
+    case BASE_ARCH_700:
+      if (arc_selected_cpu->processor == PROCESSOR_nps400)
+	return "-mcpu=nps400 -mEA";
+      else
+	return "-mcpu=arc700 -mEA";
+    case BASE_ARCH_6xx:
+      if (arc_selected_cpu->flags & FL_MUL64)
+	return "-mcpu=arc600 -mmul64 -mnorm";
+      if (arc_selected_cpu->flags & FL_MUL32x16)
+	return "-mcpu=arc600 -mdsp-packa -mnorm";
+      return "-mcpu=arc600 -mnorm";
+    default:
+      gcc_unreachable ();
+    }
+  return NULL;
+}