; Auto-generated Makefile Snip
; Generated by    : ./gcc/config/arc/genoptions.awk
; Generated from  : ./gcc/config/arc/arc-cpu.def
;
; Copyright (C) 2016-2023 Free Software Foundation, Inc.
;
; 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/>.

Enum
Name(processor_type) Type(enum processor_type)
Known ARC CPUs (for use with the -mcpu= option):

EnumValue
Enum(processor_type) String(em) Value(PROCESSOR_em)

EnumValue
Enum(processor_type) String(em_mini) Value(PROCESSOR_em_mini)

EnumValue
Enum(processor_type) String(arcem) Value(PROCESSOR_arcem)

EnumValue
Enum(processor_type) String(em4) Value(PROCESSOR_em4)

EnumValue
Enum(processor_type) String(em4_dmips) Value(PROCESSOR_em4_dmips)

EnumValue
Enum(processor_type) String(em4_fpus) Value(PROCESSOR_em4_fpus)

EnumValue
Enum(processor_type) String(em4_fpuda) Value(PROCESSOR_em4_fpuda)

EnumValue
Enum(processor_type) String(quarkse_em) Value(PROCESSOR_quarkse_em)

EnumValue
Enum(processor_type) String(hs) Value(PROCESSOR_hs)

EnumValue
Enum(processor_type) String(archs) Value(PROCESSOR_archs)

EnumValue
Enum(processor_type) String(hs34) Value(PROCESSOR_hs34)

EnumValue
Enum(processor_type) String(hs38) Value(PROCESSOR_hs38)

EnumValue
Enum(processor_type) String(hs38_linux) Value(PROCESSOR_hs38_linux)

EnumValue
Enum(processor_type) String(hs4x) Value(PROCESSOR_hs4x)

EnumValue
Enum(processor_type) String(hs4xd) Value(PROCESSOR_hs4xd)

EnumValue
Enum(processor_type) String(hs4x_rel31) Value(PROCESSOR_hs4x_rel31)

EnumValue
Enum(processor_type) String(arc600) Value(PROCESSOR_arc600)

EnumValue
Enum(processor_type) String(arc600_norm) Value(PROCESSOR_arc600_norm)

EnumValue
Enum(processor_type) String(arc600_mul64) Value(PROCESSOR_arc600_mul64)

EnumValue
Enum(processor_type) String(arc600_mul32x16) Value(PROCESSOR_arc600_mul32x16)

EnumValue
Enum(processor_type) String(arc601) Value(PROCESSOR_arc601)

EnumValue
Enum(processor_type) String(arc601_norm) Value(PROCESSOR_arc601_norm)

EnumValue
Enum(processor_type) String(arc601_mul64) Value(PROCESSOR_arc601_mul64)

EnumValue
Enum(processor_type) String(arc601_mul32x16) Value(PROCESSOR_arc601_mul32x16)

EnumValue
Enum(processor_type) String(arc700) Value(PROCESSOR_arc700)

EnumValue
Enum(processor_type) String(nps400) Value(PROCESSOR_nps400)


