diff mbox

[2/2,ARM] Generate UAL assembly code for Thumb-1 target

Message ID 000401cfed20$db9eaf60$92dc0e20$@arm.com
State New
Headers show

Commit Message

Terry Guo Oct. 21, 2014, 11:19 a.m. UTC
Hi there,

Attached patch intends to enable GCC generate UAL format code for Thumb1
target. Tested with regression test and no regressions. Is it OK to trunk?

BR,
Terry

2014-10-21  Terry Guo  <terry.guo@arm.com>

           * config/arm/arm.c (arm_output_mi_thunk): Use UAL for Thumb1
target.
           * config/arm/thumb1.md: Likewise.

gcc/testsuite
2014-10-21  Terry Guo  <terry.guo@arm.com>

            * gcc.target/arm/anddi_notdi-1.c: Match with UAL format.
            * gcc.target/arm/pr40956.c: Likewise.
            * gcc.target/arm/thumb1-Os-mult.c: Likewise.
             * gcc.target/arm/thumb1-load-64bit-constant-3.c: Likewise.

Comments

Ramana Radhakrishnan Nov. 4, 2014, 8:22 a.m. UTC | #1
On Tue, Oct 21, 2014 at 12:19 PM, Terry Guo <terry.guo@arm.com> wrote:
> Hi there,
>
> Attached patch intends to enable GCC generate UAL format code for Thumb1
> target. Tested with regression test and no regressions. Is it OK to trunk?

This is OK -  Please don't commit it until we have sorted out patch
1/2 with the options. I'd encourage a follow-up patch to switch ARM
state also to UAL :) ...

Ramana

>
> BR,
> Terry
>
> 2014-10-21  Terry Guo  <terry.guo@arm.com>
>
>            * config/arm/arm.c (arm_output_mi_thunk): Use UAL for Thumb1
> target.
>            * config/arm/thumb1.md: Likewise.
>
> gcc/testsuite
> 2014-10-21  Terry Guo  <terry.guo@arm.com>
>
>             * gcc.target/arm/anddi_notdi-1.c: Match with UAL format.
>             * gcc.target/arm/pr40956.c: Likewise.
>             * gcc.target/arm/thumb1-Os-mult.c: Likewise.
>              * gcc.target/arm/thumb1-load-64bit-constant-3.c: Likewise.
Christian Bruel Nov. 7, 2014, 9:27 a.m. UTC | #2
hi,

the ARM bootstrap seems to fail for libgcc2.c on the thumb multilib for 
libgcc2: muldi3 -mthumb -O2  -g

/tmp/ccYrycUw.s: Assembler messages:
/tmp/ccYrycUw.s:69: Error: MOV Rd, Rs with two low registers is not 
permitted on this architecture -- `mov r6,r7'

preprocessed attached.

Thanks

Christian
typedef int ptrdiff_t;
typedef unsigned int size_t;
typedef unsigned int wchar_t;
typedef struct {
  long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
  long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
} max_align_t;
extern void *malloc (size_t);
extern void free (void *);
extern int atexit (void (*)(void));
extern void abort (void) __attribute__ ((__noreturn__));
extern size_t strlen (const char *);
extern void *memcpy (void *, const void *, size_t);
extern void *memset (void *, int, size_t);
typedef unsigned int hashval_t;
typedef hashval_t (*htab_hash) (const void *);
typedef int (*htab_eq) (const void *, const void *);
typedef void (*htab_del) (void *);
typedef int (*htab_trav) (void **, void *);
typedef void *(*htab_alloc) (size_t, size_t);
typedef void (*htab_free) (void *);
typedef void *(*htab_alloc_with_arg) (void *, size_t, size_t);
typedef void (*htab_free_with_arg) (void *, void *);
struct htab {
  htab_hash hash_f;
  htab_eq eq_f;
  htab_del del_f;
  void ** entries;
  size_t size;
  size_t n_elements;
  size_t n_deleted;
  unsigned int searches;
  unsigned int collisions;
  htab_alloc alloc_f;
  htab_free free_f;
  void * alloc_arg;
  htab_alloc_with_arg alloc_with_arg_f;
  htab_free_with_arg free_with_arg_f;
  unsigned int size_prime_index;
};
typedef struct htab *htab_t;
enum insert_option {NO_INSERT, INSERT};
extern htab_t htab_create_alloc (size_t, htab_hash,
                                    htab_eq, htab_del,
                                    htab_alloc, htab_free);
extern htab_t htab_create_alloc_ex (size_t, htab_hash,
                                      htab_eq, htab_del,
                                      void *, htab_alloc_with_arg,
                                      htab_free_with_arg);
extern htab_t htab_create_typed_alloc (size_t, htab_hash, htab_eq, htab_del,
     htab_alloc, htab_alloc, htab_free);
extern htab_t htab_create (size_t, htab_hash, htab_eq, htab_del);
extern htab_t htab_try_create (size_t, htab_hash, htab_eq, htab_del);
extern void htab_set_functions_ex (htab_t, htab_hash,
                                       htab_eq, htab_del,
                                       void *, htab_alloc_with_arg,
                                       htab_free_with_arg);
extern void htab_delete (htab_t);
extern void htab_empty (htab_t);
extern void * htab_find (htab_t, const void *);
extern void ** htab_find_slot (htab_t, const void *, enum insert_option);
extern void * htab_find_with_hash (htab_t, const void *, hashval_t);
extern void ** htab_find_slot_with_hash (htab_t, const void *,
       hashval_t, enum insert_option);
extern void htab_clear_slot (htab_t, void **);
extern void htab_remove_elt (htab_t, void *);
extern void htab_remove_elt_with_hash (htab_t, void *, hashval_t);
extern void htab_traverse (htab_t, htab_trav, void *);
extern void htab_traverse_noresize (htab_t, htab_trav, void *);
extern size_t htab_size (htab_t);
extern size_t htab_elements (htab_t);
extern double htab_collisions (htab_t);
extern htab_hash htab_hash_pointer;
extern htab_eq htab_eq_pointer;
extern hashval_t htab_hash_string (const void *);
extern hashval_t iterative_hash (const void *, size_t, hashval_t);
extern int filename_cmp (const char *s1, const char *s2);
extern int filename_ncmp (const char *s1, const char *s2,
     size_t n);
extern hashval_t filename_hash (const void *s);
extern int filename_eq (const void *s1, const void *s2);
struct _dont_use_rtx_here_;
struct _dont_use_rtvec_here_;
struct _dont_use_rtx_insn_here_;
union _dont_use_tree_here_;
enum function_class {
  function_c94,
  function_c99_misc,
  function_c99_math_complex,
  function_sincos,
  function_c11_misc
};
enum memmodel
{
  MEMMODEL_RELAXED = 0,
  MEMMODEL_CONSUME = 1,
  MEMMODEL_ACQUIRE = 2,
  MEMMODEL_RELEASE = 3,
  MEMMODEL_ACQ_REL = 4,
  MEMMODEL_SEQ_CST = 5,
  MEMMODEL_LAST = 6
};
typedef void (*gt_pointer_operator) (void *, void *);
typedef unsigned char uchar;
enum debug_info_type
{
  NO_DEBUG,
  DBX_DEBUG,
  SDB_DEBUG,
  DWARF2_DEBUG,
  XCOFF_DEBUG,
  VMS_DEBUG,
  VMS_AND_DWARF2_DEBUG
};
enum debug_info_levels
{
  DINFO_LEVEL_NONE,
  DINFO_LEVEL_TERSE,
  DINFO_LEVEL_NORMAL,
  DINFO_LEVEL_VERBOSE
};
enum debug_info_usage
{
  DINFO_USAGE_DFN,
  DINFO_USAGE_DIR_USE,
  DINFO_USAGE_IND_USE,
  DINFO_USAGE_NUM_ENUMS
};
enum debug_struct_file
{
  DINFO_STRUCT_FILE_NONE,
  DINFO_STRUCT_FILE_BASE,
  DINFO_STRUCT_FILE_SYS,
  DINFO_STRUCT_FILE_ANY
};
enum symbol_visibility
{
  VISIBILITY_DEFAULT,
  VISIBILITY_PROTECTED,
  VISIBILITY_HIDDEN,
  VISIBILITY_INTERNAL
};
enum ivar_visibility
{
  IVAR_VISIBILITY_PRIVATE,
  IVAR_VISIBILITY_PROTECTED,
  IVAR_VISIBILITY_PUBLIC,
  IVAR_VISIBILITY_PACKAGE
};
enum stack_reuse_level
{
  SR_NONE,
  SR_NAMED_VARS,
  SR_ALL
};
enum ira_algorithm
{
  IRA_ALGORITHM_CB,
  IRA_ALGORITHM_PRIORITY
};
enum ira_region
{
  IRA_REGION_ONE,
  IRA_REGION_ALL,
  IRA_REGION_MIXED,
  IRA_REGION_AUTODETECT
};
enum excess_precision
{
  EXCESS_PRECISION_DEFAULT,
  EXCESS_PRECISION_FAST,
  EXCESS_PRECISION_STANDARD
};
enum stack_check_type
{
  NO_STACK_CHECK = 0,
  GENERIC_STACK_CHECK,
  STATIC_BUILTIN_STACK_CHECK,
  FULL_BUILTIN_STACK_CHECK
};
enum warn_strict_overflow_code
{
  WARN_STRICT_OVERFLOW_ALL = 1,
  WARN_STRICT_OVERFLOW_CONDITIONAL = 2,
  WARN_STRICT_OVERFLOW_COMPARISON = 3,
  WARN_STRICT_OVERFLOW_MISC = 4,
  WARN_STRICT_OVERFLOW_MAGNITUDE = 5
};
enum fp_contract_mode {
  FP_CONTRACT_OFF = 0,
  FP_CONTRACT_ON = 1,
  FP_CONTRACT_FAST = 2
};
enum vect_cost_model {
  VECT_COST_MODEL_UNLIMITED = 0,
  VECT_COST_MODEL_CHEAP = 1,
  VECT_COST_MODEL_DYNAMIC = 2,
  VECT_COST_MODEL_DEFAULT = 3
};
enum sanitize_code {
  SANITIZE_ADDRESS = 1 << 0,
  SANITIZE_USER_ADDRESS = 1 << 1,
  SANITIZE_KERNEL_ADDRESS = 1 << 2,
  SANITIZE_THREAD = 1 << 3,
  SANITIZE_LEAK = 1 << 4,
  SANITIZE_SHIFT = 1 << 5,
  SANITIZE_DIVIDE = 1 << 6,
  SANITIZE_UNREACHABLE = 1 << 7,
  SANITIZE_VLA = 1 << 8,
  SANITIZE_NULL = 1 << 9,
  SANITIZE_RETURN = 1 << 10,
  SANITIZE_SI_OVERFLOW = 1 << 11,
  SANITIZE_BOOL = 1 << 12,
  SANITIZE_ENUM = 1 << 13,
  SANITIZE_FLOAT_DIVIDE = 1 << 14,
  SANITIZE_FLOAT_CAST = 1 << 15,
  SANITIZE_BOUNDS = 1UL << 16,
  SANITIZE_ALIGNMENT = 1UL << 17,
  SANITIZE_NONNULL_ATTRIBUTE = 1UL << 18,
  SANITIZE_RETURNS_NONNULL_ATTRIBUTE = 1UL << 19,
  SANITIZE_OBJECT_SIZE = 1UL << 20,
  SANITIZE_UNDEFINED = SANITIZE_SHIFT | SANITIZE_DIVIDE | SANITIZE_UNREACHABLE
         | SANITIZE_VLA | SANITIZE_NULL | SANITIZE_RETURN
         | SANITIZE_SI_OVERFLOW | SANITIZE_BOOL | SANITIZE_ENUM
         | SANITIZE_BOUNDS | SANITIZE_ALIGNMENT
         | SANITIZE_NONNULL_ATTRIBUTE
         | SANITIZE_RETURNS_NONNULL_ATTRIBUTE
         | SANITIZE_OBJECT_SIZE,
  SANITIZE_NONDEFAULT = SANITIZE_FLOAT_DIVIDE | SANITIZE_FLOAT_CAST
};
enum vtv_priority {
  VTV_NO_PRIORITY = 0,
  VTV_STANDARD_PRIORITY = 1,
  VTV_PREINIT_PRIORITY = 2
};
enum lto_partition_model {
  LTO_PARTITION_NONE = 0,
  LTO_PARTITION_ONE = 1,
  LTO_PARTITION_BALANCED = 2,
  LTO_PARTITION_1TO1 = 3,
  LTO_PARTITION_MAX = 4
};
enum fgraphite_generator {
  FGRAPHITE_CODE_GEN_ISL = 0,
  FGRAPHITE_CODE_GEN_CLOOG = 1
};
enum processor_type
{
arm2,
arm250,
arm3,
arm6,
arm60,
arm600,
arm610,
arm620,
arm7,
arm7d,
arm7di,
arm70,
arm700,
arm700i,
arm710,
arm720,
arm710c,
arm7100,
arm7500,
arm7500fe,
arm7m,
arm7dm,
arm7dmi,
arm8,
arm810,
strongarm,
strongarm110,
strongarm1100,
strongarm1110,
fa526,
fa626,
arm7tdmi,
arm7tdmis,
arm710t,
arm720t,
arm740t,
arm9,
arm9tdmi,
arm920,
arm920t,
arm922t,
arm940t,
ep9312,
arm10tdmi,
arm1020t,
arm9e,
arm946es,
arm966es,
arm968es,
arm10e,
arm1020e,
arm1022e,
xscale,
iwmmxt,
iwmmxt2,
fa606te,
fa626te,
fmp626,
fa726te,
arm926ejs,
arm1026ejs,
arm1136js,
arm1136jfs,
arm1176jzs,
arm1176jzfs,
mpcorenovfp,
mpcore,
arm1156t2s,
arm1156t2fs,
cortexm1,
cortexm0,
cortexm0plus,
cortexm1smallmultiply,
cortexm0smallmultiply,
cortexm0plussmallmultiply,
genericv7a,
cortexa5,
cortexa7,
cortexa8,
cortexa9,
cortexa12,
cortexa15,
cortexr4,
cortexr4f,
cortexr5,
cortexr7,
cortexm7,
cortexm4,
cortexm3,
marvell_pj4,
cortexa15cortexa7,
cortexa53,
cortexa57,
cortexa57cortexa53,
  arm_none
};
enum arm_fp16_format_type
{
  ARM_FP16_FORMAT_NONE = 0,
  ARM_FP16_FORMAT_IEEE = 1,
  ARM_FP16_FORMAT_ALTERNATIVE = 2
};
enum arm_abi_type
{
  ARM_ABI_APCS,
  ARM_ABI_ATPCS,
  ARM_ABI_AAPCS,
  ARM_ABI_IWMMXT,
  ARM_ABI_AAPCS_LINUX
};
enum float_abi_type
{
  ARM_FLOAT_ABI_SOFT,
  ARM_FLOAT_ABI_SOFTFP,
  ARM_FLOAT_ABI_HARD
};
enum arm_tp_type {
  TP_AUTO,
  TP_SOFT,
  TP_CP15
};
enum arm_tls_type {
  TLS_GNU,
  TLS_GNU2
};
enum opt_code
{
  OPT____ = 0,
  OPT__help = 32,
  OPT__help_ = 33,
  OPT__no_sysroot_suffix = 60,
  OPT__output_pch_ = 66,
  OPT__param = 68,
  OPT__sysroot_ = 101,
  OPT__target_help = 102,
  OPT__version = 112,
  OPT_A = 115,
  OPT_B = 116,
  OPT_C = 117,
  OPT_CC = 118,
  OPT_D = 120,
  OPT_E = 121,
  OPT_F = 122,
  OPT_H = 123,
  OPT_I = 124,
  OPT_J = 125,
  OPT_L = 126,
  OPT_M = 127,
  OPT_MD = 128,
  OPT_MD_ = 129,
  OPT_MF = 130,
  OPT_MG = 131,
  OPT_MM = 132,
  OPT_MMD = 133,
  OPT_MMD_ = 134,
  OPT_MP = 135,
  OPT_MQ = 136,
  OPT_MT = 137,
  OPT_N = 138,
  OPT_O = 139,
  OPT_Ofast = 140,
  OPT_Og = 141,
  OPT_Os = 142,
  OPT_P = 143,
  OPT_Q = 144,
  OPT_Qn = 145,
  OPT_Qy = 146,
  OPT_R = 147,
  OPT_S = 148,
  OPT_T = 149,
  OPT_Tbss = 150,
  OPT_Tbss_ = 151,
  OPT_Tdata = 152,
  OPT_Tdata_ = 153,
  OPT_Ttext = 154,
  OPT_Ttext_ = 155,
  OPT_U = 156,
  OPT_Wa_ = 158,
  OPT_Wabi = 159,
  OPT_Wabi_tag = 160,
  OPT_Wabi_ = 161,
  OPT_Waddress = 162,
  OPT_Waggregate_return = 163,
  OPT_Waggressive_loop_optimizations = 164,
  OPT_Waliasing = 165,
  OPT_Walign_commons = 166,
  OPT_Wall = 167,
  OPT_Wall_deprecation = 168,
  OPT_Wall_javadoc = 169,
  OPT_Wampersand = 170,
  OPT_Warray_bounds = 171,
  OPT_Warray_temporaries = 172,
  OPT_Wassert_identifier = 173,
  OPT_Wassign_intercept = 174,
  OPT_Wattributes = 175,
  OPT_Wbad_function_cast = 176,
  OPT_Wbool_compare = 177,
  OPT_Wboxing = 178,
  OPT_Wbuiltin_macro_redefined = 179,
  OPT_Wc___compat = 180,
  OPT_Wc__0x_compat = 181,
  OPT_Wc_binding_type = 183,
  OPT_Wc90_c99_compat = 184,
  OPT_Wc99_c11_compat = 185,
  OPT_Wcast_align = 186,
  OPT_Wcast_qual = 187,
  OPT_Wchar_concat = 188,
  OPT_Wchar_subscripts = 189,
  OPT_Wcharacter_truncation = 190,
  OPT_Wchkp = 191,
  OPT_Wclobbered = 192,
  OPT_Wcomment = 193,
  OPT_Wcompare_reals = 195,
  OPT_Wcondition_assign = 196,
  OPT_Wconditionally_supported = 197,
  OPT_Wconstructor_name = 198,
  OPT_Wconversion = 199,
  OPT_Wconversion_extra = 200,
  OPT_Wconversion_null = 201,
  OPT_Wcoverage_mismatch = 202,
  OPT_Wcpp = 203,
  OPT_Wctor_dtor_privacy = 204,
  OPT_Wdate_time = 205,
  OPT_Wdeclaration_after_statement = 206,
  OPT_Wdelete_incomplete = 207,
  OPT_Wdelete_non_virtual_dtor = 208,
  OPT_Wdep_ann = 209,
  OPT_Wdeprecated = 210,
  OPT_Wdeprecated_declarations = 211,
  OPT_Wdesignated_init = 212,
  OPT_Wdisabled_optimization = 213,
  OPT_Wdiscarded_qualifiers = 214,
  OPT_Wdiscouraged = 215,
  OPT_Wdiv_by_zero = 216,
  OPT_Wdouble_promotion = 217,
  OPT_Weffc__ = 218,
  OPT_Wempty_block = 219,
  OPT_Wempty_body = 220,
  OPT_Wendif_labels = 221,
  OPT_Wenum_compare = 222,
  OPT_Wenum_identifier = 223,
  OPT_Wenum_switch = 224,
  OPT_Werror = 225,
  OPT_Werror_ = 227,
  OPT_Wextra = 228,
  OPT_Wextraneous_semicolon = 229,
  OPT_Wfallthrough = 230,
  OPT_Wfatal_errors = 231,
  OPT_Wfield_hiding = 232,
  OPT_Wfinal_bound = 233,
  OPT_Wfinally = 234,
  OPT_Wfloat_conversion = 235,
  OPT_Wfloat_equal = 236,
  OPT_Wforbidden = 237,
  OPT_Wformat_contains_nul = 239,
  OPT_Wformat_extra_args = 240,
  OPT_Wformat_nonliteral = 241,
  OPT_Wformat_security = 242,
  OPT_Wformat_signedness = 243,
  OPT_Wformat_y2k = 244,
  OPT_Wformat_zero_length = 245,
  OPT_Wformat_ = 246,
  OPT_Wframe_larger_than_ = 247,
  OPT_Wfree_nonheap_object = 248,
  OPT_Wfunction_elimination = 249,
  OPT_Whiding = 250,
  OPT_Wignored_qualifiers = 251,
  OPT_Wimplicit = 252,
  OPT_Wimplicit_function_declaration = 253,
  OPT_Wimplicit_int = 254,
  OPT_Wimplicit_interface = 255,
  OPT_Wimplicit_procedure = 256,
  OPT_Wincompatible_pointer_types = 258,
  OPT_Windirect_static = 259,
  OPT_Winherited_variadic_ctor = 260,
  OPT_Winit_self = 261,
  OPT_Winline = 262,
  OPT_Wint_conversion = 263,
  OPT_Wint_to_pointer_cast = 264,
  OPT_Wintf_annotation = 265,
  OPT_Wintf_non_inherited = 266,
  OPT_Wintrinsic_shadow = 267,
  OPT_Wintrinsics_std = 268,
  OPT_Winvalid_memory_model = 269,
  OPT_Winvalid_offsetof = 270,
  OPT_Winvalid_pch = 271,
  OPT_Wjavadoc = 272,
  OPT_Wjump_misses_init = 273,
  OPT_Wl_ = 274,
  OPT_Wlarger_than_ = 276,
  OPT_Wline_truncation = 277,
  OPT_Wliteral_suffix = 278,
  OPT_Wlocal_hiding = 279,
  OPT_Wlogical_not_parentheses = 280,
  OPT_Wlogical_op = 281,
  OPT_Wlong_long = 282,
  OPT_Wmain = 283,
  OPT_Wmasked_catch_block = 284,
  OPT_Wmaybe_uninitialized = 285,
  OPT_Wmemset_transposed_args = 286,
  OPT_Wmissing_braces = 287,
  OPT_Wmissing_declarations = 288,
  OPT_Wmissing_field_initializers = 289,
  OPT_Wmissing_include_dirs = 291,
  OPT_Wmissing_parameter_type = 293,
  OPT_Wmissing_prototypes = 294,
  OPT_Wmultichar = 296,
  OPT_Wnarrowing = 297,
  OPT_Wnested_externs = 298,
  OPT_Wnls = 299,
  OPT_Wno_effect_assign = 300,
  OPT_Wnoexcept = 301,
  OPT_Wnon_template_friend = 302,
  OPT_Wnon_virtual_dtor = 303,
  OPT_Wnonnull = 304,
  OPT_Wnormalized_ = 306,
  OPT_Wnull = 307,
  OPT_Wodr = 308,
  OPT_Wold_style_cast = 309,
  OPT_Wold_style_declaration = 310,
  OPT_Wold_style_definition = 311,
  OPT_Wopenmp_simd = 312,
  OPT_Wout_of_date = 313,
  OPT_Wover_ann = 314,
  OPT_Woverflow = 315,
  OPT_Woverlength_strings = 316,
  OPT_Woverloaded_virtual = 317,
  OPT_Woverride_init = 318,
  OPT_Wp_ = 319,
  OPT_Wpacked = 320,
  OPT_Wpacked_bitfield_compat = 321,
  OPT_Wpadded = 322,
  OPT_Wparam_assign = 323,
  OPT_Wparentheses = 324,
  OPT_Wpedantic = 325,
  OPT_Wpkg_default_method = 326,
  OPT_Wpmf_conversions = 327,
  OPT_Wpointer_arith = 328,
  OPT_Wpointer_sign = 329,
  OPT_Wpointer_to_int_cast = 330,
  OPT_Wpragmas = 331,
  OPT_Wproperty_assign_default = 332,
  OPT_Wprotocol = 333,
  OPT_Wpsabi = 334,
  OPT_Wraw = 335,
  OPT_Wreal_q_constant = 336,
  OPT_Wrealloc_lhs = 337,
  OPT_Wrealloc_lhs_all = 338,
  OPT_Wredundant_decls = 339,
  OPT_Wredundant_modifiers = 340,
  OPT_Wreorder = 341,
  OPT_Wreturn_local_addr = 342,
  OPT_Wreturn_type = 343,
  OPT_Wselector = 344,
  OPT_Wsequence_point = 345,
  OPT_Wserial = 346,
  OPT_Wshadow = 347,
  OPT_Wshadow_ivar = 348,
  OPT_Wsign_compare = 349,
  OPT_Wsign_conversion = 350,
  OPT_Wsign_promo = 351,
  OPT_Wsizeof_array_argument = 352,
  OPT_Wsizeof_pointer_memaccess = 353,
  OPT_Wspecial_param_hiding = 354,
  OPT_Wstack_protector = 355,
  OPT_Wstack_usage_ = 356,
  OPT_Wstatic_access = 357,
  OPT_Wstatic_receiver = 358,
  OPT_Wstrict_aliasing = 359,
  OPT_Wstrict_aliasing_ = 360,
  OPT_Wstrict_null_sentinel = 361,
  OPT_Wstrict_overflow = 362,
  OPT_Wstrict_overflow_ = 363,
  OPT_Wstrict_prototypes = 364,
  OPT_Wstrict_selector_match = 365,
  OPT_Wsuggest_attribute_const = 366,
  OPT_Wsuggest_attribute_format = 367,
  OPT_Wsuggest_attribute_noreturn = 368,
  OPT_Wsuggest_attribute_pure = 369,
  OPT_Wsuggest_final_methods = 370,
  OPT_Wsuggest_final_types = 371,
  OPT_Wsuppress = 372,
  OPT_Wsurprising = 373,
  OPT_Wswitch = 374,
  OPT_Wswitch_bool = 375,
  OPT_Wswitch_default = 376,
  OPT_Wswitch_enum = 377,
  OPT_Wsync_nand = 378,
  OPT_Wsynth = 379,
  OPT_Wsynthetic_access = 380,
  OPT_Wsystem_headers = 381,
  OPT_Wtabs = 382,
  OPT_Wtarget_lifetime = 383,
  OPT_Wtasks = 384,
  OPT_Wtraditional = 385,
  OPT_Wtraditional_conversion = 386,
  OPT_Wtrampolines = 387,
  OPT_Wtrigraphs = 388,
  OPT_Wtype_hiding = 389,
  OPT_Wtype_limits = 390,
  OPT_Wuncheck = 391,
  OPT_Wundeclared_selector = 392,
  OPT_Wundef = 393,
  OPT_Wunderflow = 394,
  OPT_Wuninitialized = 395,
  OPT_Wunknown_pragmas = 396,
  OPT_Wunnecessary_else = 397,
  OPT_Wunqualified_field = 398,
  OPT_Wunsafe_loop_optimizations = 400,
  OPT_Wunsuffixed_float_constants = 401,
  OPT_Wunused = 402,
  OPT_Wunused_argument = 403,
  OPT_Wunused_but_set_parameter = 404,
  OPT_Wunused_but_set_variable = 405,
  OPT_Wunused_dummy_argument = 406,
  OPT_Wunused_function = 407,
  OPT_Wunused_import = 408,
  OPT_Wunused_label = 409,
  OPT_Wunused_local = 410,
  OPT_Wunused_local_typedefs = 411,
  OPT_Wunused_macros = 412,
  OPT_Wunused_parameter = 413,
  OPT_Wunused_private = 414,
  OPT_Wunused_result = 415,
  OPT_Wunused_thrown = 416,
  OPT_Wunused_value = 417,
  OPT_Wunused_variable = 418,
  OPT_Wuse_without_only = 419,
  OPT_Wuseless_cast = 420,
  OPT_Wuseless_type_check = 421,
  OPT_Wvarargs = 422,
  OPT_Wvarargs_cast = 423,
  OPT_Wvariadic_macros = 424,
  OPT_Wvector_operation_performance = 425,
  OPT_Wvirtual_move_assign = 426,
  OPT_Wvla = 427,
  OPT_Wvolatile_register_var = 428,
  OPT_Wwarning_token = 429,
  OPT_Wwrite_strings = 430,
  OPT_Wzero_as_null_pointer_constant = 431,
  OPT_Wzerotrip = 432,
  OPT_Xassembler = 433,
  OPT_Xlinker = 434,
  OPT_Xpreprocessor = 435,
  OPT_Z = 436,
  OPT_ansi = 437,
  OPT_aux_info = 438,
  OPT_auxbase = 440,
  OPT_auxbase_strip = 441,
  OPT_c = 443,
  OPT_coverage = 445,
  OPT_cpp = 446,
  OPT_cpp_ = 447,
  OPT_d = 448,
  OPT_dumpbase = 449,
  OPT_dumpdir = 450,
  OPT_dumpmachine = 451,
  OPT_dumpspecs = 452,
  OPT_dumpversion = 453,
  OPT_e = 454,
  OPT_export_dynamic = 456,
  OPT_extdirs = 457,
  OPT_fPIC = 459,
  OPT_fPIE = 460,
  OPT_fRTS_ = 461,
  OPT_fabi_compat_version_ = 462,
  OPT_fabi_version_ = 463,
  OPT_faccess_control = 464,
  OPT_fada_spec_parent_ = 465,
  OPT_faggressive_function_elimination = 466,
  OPT_faggressive_loop_optimizations = 467,
  OPT_falign_commons = 468,
  OPT_falign_functions = 469,
  OPT_falign_functions_ = 470,
  OPT_falign_jumps = 471,
  OPT_falign_jumps_ = 472,
  OPT_falign_labels = 473,
  OPT_falign_labels_ = 474,
  OPT_falign_loops = 475,
  OPT_falign_loops_ = 476,
  OPT_fall_intrinsics = 477,
  OPT_fallow_leading_underscore = 479,
  OPT_fallow_parameterless_variadic_functions = 480,
  OPT_fasan_shadow_offset_ = 486,
  OPT_fasm = 487,
  OPT_fassert = 488,
  OPT_fassociative_math = 489,
  OPT_fassume_compiled = 490,
  OPT_fassume_compiled_ = 491,
  OPT_fasynchronous_unwind_tables = 492,
  OPT_fauto_inc_dec = 493,
  OPT_fauto_profile = 494,
  OPT_fauto_profile_ = 495,
  OPT_fautomatic = 496,
  OPT_faux_classpath = 497,
  OPT_fbackslash = 498,
  OPT_fbacktrace = 499,
  OPT_fblas_matmul_limit_ = 500,
  OPT_fbootclasspath_ = 501,
  OPT_fbootstrap_classes = 502,
  OPT_fbounds_check = 503,
  OPT_fbranch_count_reg = 504,
  OPT_fbranch_probabilities = 505,
  OPT_fbranch_target_load_optimize = 506,
  OPT_fbranch_target_load_optimize2 = 507,
  OPT_fbtr_bb_exclusive = 508,
  OPT_fbuilding_libgcc = 509,
  OPT_fbuiltin = 510,
  OPT_fbuiltin_ = 511,
  OPT_fcall_saved_ = 512,
  OPT_fcall_used_ = 513,
  OPT_fcaller_saves = 514,
  OPT_fcanonical_system_headers = 515,
  OPT_fcheck_array_temporaries = 516,
  OPT_fcheck_data_deps = 517,
  OPT_fcheck_new = 518,
  OPT_fcheck_pointer_bounds = 519,
  OPT_fcheck_references = 520,
  OPT_fcheck_ = 521,
  OPT_fchkp_check_incomplete_type = 522,
  OPT_fchkp_check_read = 523,
  OPT_fchkp_check_write = 524,
  OPT_fchkp_first_field_has_own_bounds = 525,
  OPT_fchkp_instrument_calls = 526,
  OPT_fchkp_instrument_marked_only = 527,
  OPT_fchkp_narrow_bounds = 528,
  OPT_fchkp_narrow_to_innermost_array = 529,
  OPT_fchkp_optimize = 530,
  OPT_fchkp_store_bounds = 531,
  OPT_fchkp_treat_zero_dynamic_size_as_infinite = 532,
  OPT_fchkp_use_fast_string_functions = 533,
  OPT_fchkp_use_nochk_string_functions = 534,
  OPT_fchkp_use_static_bounds = 535,
  OPT_fchkp_use_static_const_bounds = 536,
  OPT_fchkp_zero_input_bounds_for_main = 537,
  OPT_fcilkplus = 538,
  OPT_fclasspath_ = 539,
  OPT_fcoarray_ = 540,
  OPT_fcombine_stack_adjustments = 541,
  OPT_fcommon = 542,
  OPT_fcompare_debug = 543,
  OPT_fcompare_debug_second = 544,
  OPT_fcompare_debug_ = 545,
  OPT_fcompare_elim = 546,
  OPT_fcompile_resource_ = 547,
  OPT_fcond_mismatch = 548,
  OPT_fconserve_space = 549,
  OPT_fconserve_stack = 550,
  OPT_fconstant_string_class_ = 551,
  OPT_fconstexpr_depth_ = 552,
  OPT_fconvert_big_endian = 553,
  OPT_fconvert_little_endian = 554,
  OPT_fconvert_native = 555,
  OPT_fconvert_swap = 556,
  OPT_fcprop_registers = 557,
  OPT_fcray_pointer = 558,
  OPT_fcrossjumping = 559,
  OPT_fcse_follow_jumps = 560,
  OPT_fcx_fortran_rules = 562,
  OPT_fcx_limited_range = 563,
  OPT_fd_lines_as_code = 564,
  OPT_fd_lines_as_comments = 565,
  OPT_fdata_sections = 566,
  OPT_fdbg_cnt_list = 567,
  OPT_fdbg_cnt_ = 568,
  OPT_fdce = 569,
  OPT_fdebug_cpp = 570,
  OPT_fdebug_prefix_map_ = 571,
  OPT_fdebug_types_section = 572,
  OPT_fdeclone_ctor_dtor = 573,
  OPT_fdeduce_init_list = 574,
  OPT_fdefault_double_8 = 575,
  OPT_fdefault_integer_8 = 577,
  OPT_fdefault_real_8 = 578,
  OPT_fdefer_pop = 579,
  OPT_fdelayed_branch = 580,
  OPT_fdelete_dead_exceptions = 581,
  OPT_fdelete_null_pointer_checks = 582,
  OPT_fdevirtualize = 583,
  OPT_fdevirtualize_speculatively = 584,
  OPT_fdiagnostics_color_ = 586,
  OPT_fdiagnostics_show_caret = 587,
  OPT_fdiagnostics_show_location_ = 588,
  OPT_fdiagnostics_show_option = 589,
  OPT_fdirectives_only = 590,
  OPT_fdisable_ = 591,
  OPT_fdisable_assertions = 592,
  OPT_fdisable_assertions_ = 593,
  OPT_fdollar_ok = 594,
  OPT_fdollars_in_identifiers = 595,
  OPT_fdse = 596,
  OPT_fdump_ = 597,
  OPT_fdump_ada_spec = 598,
  OPT_fdump_ada_spec_slim = 599,
  OPT_fdump_final_insns = 601,
  OPT_fdump_final_insns_ = 602,
  OPT_fdump_fortran_optimized = 603,
  OPT_fdump_fortran_original = 604,
  OPT_fdump_go_spec_ = 605,
  OPT_fdump_noaddr = 606,
  OPT_fdump_parse_tree = 607,
  OPT_fdump_passes = 608,
  OPT_fdump_unnumbered = 609,
  OPT_fdump_unnumbered_links = 610,
  OPT_fdwarf2_cfi_asm = 611,
  OPT_fearly_inlining = 612,
  OPT_felide_constructors = 613,
  OPT_feliminate_dwarf2_dups = 614,
  OPT_feliminate_unused_debug_symbols = 615,
  OPT_feliminate_unused_debug_types = 616,
  OPT_femit_class_debug_always = 617,
  OPT_femit_class_file = 618,
  OPT_femit_class_files = 619,
  OPT_femit_struct_debug_baseonly = 620,
  OPT_femit_struct_debug_detailed_ = 621,
  OPT_femit_struct_debug_reduced = 622,
  OPT_fenable_ = 623,
  OPT_fenable_assertions = 624,
  OPT_fenable_assertions_ = 625,
  OPT_fencoding_ = 626,
  OPT_fenforce_eh_specs = 627,
  OPT_fexceptions = 629,
  OPT_fexcess_precision_ = 630,
  OPT_fexec_charset_ = 631,
  OPT_fexpensive_optimizations = 632,
  OPT_fext_numeric_literals = 633,
  OPT_fextdirs_ = 634,
  OPT_fextended_identifiers = 635,
  OPT_fextern_tls_init = 636,
  OPT_fexternal_blas = 637,
  OPT_ff2c = 639,
  OPT_ffast_math = 640,
  OPT_ffat_lto_objects = 641,
  OPT_ffilelist_file = 642,
  OPT_ffinite_math_only = 643,
  OPT_ffixed_ = 644,
  OPT_ffixed_form = 645,
  OPT_ffixed_line_length_ = 646,
  OPT_ffixed_line_length_none = 647,
  OPT_ffloat_store = 648,
  OPT_ffor_scope = 649,
  OPT_fforce_classes_archive_check = 651,
  OPT_fforward_propagate = 652,
  OPT_ffp_contract_ = 653,
  OPT_ffpe_summary_ = 654,
  OPT_ffpe_trap_ = 655,
  OPT_ffree_form = 656,
  OPT_ffree_line_length_ = 657,
  OPT_ffree_line_length_none = 658,
  OPT_ffreestanding = 659,
  OPT_ffriend_injection = 660,
  OPT_ffrontend_optimize = 661,
  OPT_ffunction_cse = 662,
  OPT_ffunction_sections = 663,
  OPT_fgcse = 664,
  OPT_fgcse_after_reload = 665,
  OPT_fgcse_las = 666,
  OPT_fgcse_lm = 667,
  OPT_fgcse_sm = 668,
  OPT_fgnu_keywords = 669,
  OPT_fgnu_runtime = 670,
  OPT_fgnu_tm = 671,
  OPT_fgnu_unique = 672,
  OPT_fgnu89_inline = 673,
  OPT_fgo_check_divide_overflow = 674,
  OPT_fgo_check_divide_zero = 675,
  OPT_fgo_dump_ = 676,
  OPT_fgo_optimize_ = 677,
  OPT_fgo_pkgpath_ = 678,
  OPT_fgo_prefix_ = 679,
  OPT_fgo_relative_import_path_ = 680,
  OPT_fgraphite = 681,
  OPT_fgraphite_code_generator_ = 682,
  OPT_fgraphite_identity = 683,
  OPT_fguess_branch_probability = 684,
  OPT_fhash_synchronization = 687,
  OPT_fhoist_adjacent_loads = 690,
  OPT_fhosted = 692,
  OPT_fident = 694,
  OPT_fif_conversion = 695,
  OPT_fif_conversion2 = 696,
  OPT_fimplement_inlines = 697,
  OPT_fimplicit_inline_templates = 698,
  OPT_fimplicit_none = 699,
  OPT_fimplicit_templates = 700,
  OPT_findirect_classes = 701,
  OPT_findirect_dispatch = 702,
  OPT_findirect_inlining = 703,
  OPT_finhibit_size_directive = 704,
  OPT_finit_character_ = 705,
  OPT_finit_integer_ = 706,
  OPT_finit_local_zero = 707,
  OPT_finit_logical_ = 708,
  OPT_finit_real_ = 709,
  OPT_finline = 710,
  OPT_finline_atomics = 711,
  OPT_finline_functions = 712,
  OPT_finline_functions_called_once = 713,
  OPT_finline_limit_ = 715,
  OPT_finline_small_functions = 716,
  OPT_finput_charset_ = 717,
  OPT_finstrument_functions = 718,
  OPT_finstrument_functions_exclude_file_list_ = 719,
  OPT_finstrument_functions_exclude_function_list_ = 720,
  OPT_finteger_4_integer_8 = 721,
  OPT_fintrinsic_modules_path = 722,
  OPT_fintrinsic_modules_path_ = 723,
  OPT_fipa_cp = 724,
  OPT_fipa_cp_clone = 725,
  OPT_fipa_icf = 726,
  OPT_fipa_icf_functions = 727,
  OPT_fipa_icf_variables = 728,
  OPT_fipa_profile = 730,
  OPT_fipa_pta = 731,
  OPT_fipa_pure_const = 732,
  OPT_fipa_reference = 733,
  OPT_fipa_sra = 734,
  OPT_fira_algorithm_ = 736,
  OPT_fira_hoist_pressure = 737,
  OPT_fira_loop_pressure = 738,
  OPT_fira_region_ = 739,
  OPT_fira_share_save_slots = 740,
  OPT_fira_share_spill_slots = 741,
  OPT_fira_verbose_ = 742,
  OPT_fisolate_erroneous_paths_attribute = 743,
  OPT_fisolate_erroneous_paths_dereference = 744,
  OPT_fivar_visibility_ = 745,
  OPT_fivopts = 746,
  OPT_fjni = 747,
  OPT_fjump_tables = 748,
  OPT_fkeep_inline_dllexport = 749,
  OPT_fkeep_inline_functions = 750,
  OPT_fkeep_static_consts = 751,
  OPT_flax_vector_conversions = 753,
  OPT_fleading_underscore = 754,
  OPT_flive_range_shrinkage = 755,
  OPT_flocal_ivars = 756,
  OPT_floop_block = 757,
  OPT_floop_interchange = 759,
  OPT_floop_nest_optimize = 760,
  OPT_floop_parallelize_all = 762,
  OPT_floop_strip_mine = 763,
  OPT_flto = 764,
  OPT_flto_compression_level_ = 765,
  OPT_flto_odr_type_merging = 766,
  OPT_flto_partition_ = 767,
  OPT_flto_report = 768,
  OPT_flto_report_wpa = 769,
  OPT_flto_ = 770,
  OPT_fltrans = 771,
  OPT_fltrans_output_list_ = 772,
  OPT_fmain_ = 773,
  OPT_fmath_errno = 774,
  OPT_fmax_array_constructor_ = 775,
  OPT_fmax_errors_ = 776,
  OPT_fmax_identifier_length_ = 777,
  OPT_fmax_stack_var_size_ = 778,
  OPT_fmax_subrecord_length_ = 779,
  OPT_fmem_report = 780,
  OPT_fmem_report_wpa = 781,
  OPT_fmerge_all_constants = 782,
  OPT_fmerge_constants = 783,
  OPT_fmerge_debug_strings = 784,
  OPT_fmessage_length_ = 785,
  OPT_fmodule_private = 786,
  OPT_fmodulo_sched = 787,
  OPT_fmodulo_sched_allow_regmoves = 788,
  OPT_fmove_loop_invariants = 789,
  OPT_fms_extensions = 790,
  OPT_fnext_runtime = 796,
  OPT_fnil_receivers = 797,
  OPT_fnon_call_exceptions = 799,
  OPT_fnonansi_builtins = 800,
  OPT_fnothrow_opt = 802,
  OPT_fobjc_abi_version_ = 803,
  OPT_fobjc_call_cxx_cdtors = 804,
  OPT_fobjc_direct_dispatch = 805,
  OPT_fobjc_exceptions = 806,
  OPT_fobjc_gc = 807,
  OPT_fobjc_nilcheck = 808,
  OPT_fobjc_sjlj_exceptions = 809,
  OPT_fobjc_std_objc1 = 810,
  OPT_fomit_frame_pointer = 811,
  OPT_fopenmp = 812,
  OPT_fopenmp_simd = 813,
  OPT_foperator_names = 814,
  OPT_fopt_info = 815,
  OPT_fopt_info_ = 816,
  OPT_foptimize_sibling_calls = 818,
  OPT_foptimize_static_class_initialization = 819,
  OPT_foptimize_strlen = 820,
  OPT_foutput_class_dir_ = 822,
  OPT_fpack_derived = 823,
  OPT_fpack_struct = 824,
  OPT_fpack_struct_ = 825,
  OPT_fpartial_inlining = 826,
  OPT_fpcc_struct_return = 827,
  OPT_fpch_deps = 828,
  OPT_fpch_preprocess = 829,
  OPT_fpeel_loops = 830,
  OPT_fpeephole = 831,
  OPT_fpeephole2 = 832,
  OPT_fpermissive = 833,
  OPT_fpic = 834,
  OPT_fpie = 835,
  OPT_fplan9_extensions = 836,
  OPT_fplugin_arg_ = 837,
  OPT_fplugin_ = 838,
  OPT_fpost_ipa_mem_report = 839,
  OPT_fpre_ipa_mem_report = 840,
  OPT_fpredictive_commoning = 841,
  OPT_fprefetch_loop_arrays = 842,
  OPT_fpreprocessed = 843,
  OPT_fpretty_templates = 844,
  OPT_fprofile = 845,
  OPT_fprofile_arcs = 846,
  OPT_fprofile_correction = 847,
  OPT_fprofile_dir_ = 848,
  OPT_fprofile_generate = 849,
  OPT_fprofile_generate_ = 850,
  OPT_fprofile_reorder_functions = 851,
  OPT_fprofile_report = 852,
  OPT_fprofile_use = 853,
  OPT_fprofile_use_ = 854,
  OPT_fprofile_values = 855,
  OPT_fprotect_parens = 856,
  OPT_frandom_seed = 857,
  OPT_frandom_seed_ = 858,
  OPT_frange_check = 859,
  OPT_freal_4_real_10 = 860,
  OPT_freal_4_real_16 = 861,
  OPT_freal_4_real_8 = 862,
  OPT_freal_8_real_10 = 863,
  OPT_freal_8_real_16 = 864,
  OPT_freal_8_real_4 = 865,
  OPT_frealloc_lhs = 866,
  OPT_freciprocal_math = 867,
  OPT_frecord_gcc_switches = 868,
  OPT_frecord_marker_4 = 869,
  OPT_frecord_marker_8 = 870,
  OPT_frecursive = 871,
  OPT_freduced_reflection = 872,
  OPT_free = 873,
  OPT_freg_struct_return = 874,
  OPT_frename_registers = 876,
  OPT_freorder_blocks = 877,
  OPT_freorder_blocks_and_partition = 878,
  OPT_freorder_functions = 879,
  OPT_frepack_arrays = 880,
  OPT_freplace_objc_classes = 881,
  OPT_frepo = 882,
  OPT_freport_bug = 883,
  OPT_frequire_return_statement = 884,
  OPT_frerun_cse_after_loop = 885,
  OPT_freschedule_modulo_scheduled_loops = 887,
  OPT_fresolution_ = 888,
  OPT_frounding_math = 889,
  OPT_frtti = 890,
  OPT_fsanitize_recover = 891,
  OPT_fsanitize_recover_ = 892,
  OPT_fsanitize_undefined_trap_on_error = 893,
  OPT_fsanitize_ = 894,
  OPT_fsaw_java_file = 895,
  OPT_fsched_critical_path_heuristic = 896,
  OPT_fsched_dep_count_heuristic = 897,
  OPT_fsched_group_heuristic = 898,
  OPT_fsched_interblock = 899,
  OPT_fsched_last_insn_heuristic = 900,
  OPT_fsched_pressure = 901,
  OPT_fsched_rank_heuristic = 902,
  OPT_fsched_spec = 903,
  OPT_fsched_spec_insn_heuristic = 904,
  OPT_fsched_spec_load = 905,
  OPT_fsched_spec_load_dangerous = 906,
  OPT_fsched_stalled_insns = 907,
  OPT_fsched_stalled_insns_dep = 908,
  OPT_fsched_stalled_insns_dep_ = 909,
  OPT_fsched_stalled_insns_ = 910,
  OPT_fsched_verbose_ = 911,
  OPT_fsched2_use_superblocks = 912,
  OPT_fschedule_insns = 914,
  OPT_fschedule_insns2 = 915,
  OPT_fsecond_underscore = 916,
  OPT_fsection_anchors = 917,
  OPT_fsel_sched_pipelining = 919,
  OPT_fsel_sched_pipelining_outer_loops = 920,
  OPT_fsel_sched_reschedule_pipelined = 921,
  OPT_fselective_scheduling = 922,
  OPT_fselective_scheduling2 = 923,
  OPT_fsemantic_interposition = 924,
  OPT_fshort_double = 925,
  OPT_fshort_enums = 926,
  OPT_fshort_wchar = 927,
  OPT_fshow_column = 928,
  OPT_fshrink_wrap = 929,
  OPT_fsign_zero = 930,
  OPT_fsignaling_nans = 931,
  OPT_fsigned_bitfields = 932,
  OPT_fsigned_char = 933,
  OPT_fsigned_zeros = 934,
  OPT_fsimd_cost_model_ = 935,
  OPT_fsingle_precision_constant = 936,
  OPT_fsource_filename_ = 937,
  OPT_fsource_ = 938,
  OPT_fsplit_ivs_in_unroller = 939,
  OPT_fsplit_stack = 940,
  OPT_fsplit_wide_types = 941,
  OPT_fssa_phiopt = 943,
  OPT_fstack_arrays = 944,
  OPT_fstack_check_ = 946,
  OPT_fstack_limit = 947,
  OPT_fstack_limit_register_ = 948,
  OPT_fstack_limit_symbol_ = 949,
  OPT_fstack_protector = 950,
  OPT_fstack_protector_all = 951,
  OPT_fstack_protector_strong = 952,
  OPT_fstack_reuse_ = 953,
  OPT_fstack_usage = 954,
  OPT_fstats = 955,
  OPT_fstore_check = 956,
  OPT_fstrict_aliasing = 958,
  OPT_fstrict_enums = 959,
  OPT_fstrict_overflow = 960,
  OPT_fstrict_volatile_bitfields = 962,
  OPT_fsync_libcalls = 963,
  OPT_fsyntax_only = 964,
  OPT_ftabstop_ = 965,
  OPT_ftarget_ = 967,
  OPT_ftemplate_backtrace_limit_ = 968,
  OPT_ftemplate_depth_ = 970,
  OPT_ftest_coverage = 971,
  OPT_fthread_jumps = 973,
  OPT_fthreadsafe_statics = 974,
  OPT_ftime_report = 975,
  OPT_ftls_model_ = 976,
  OPT_ftoplevel_reorder = 977,
  OPT_ftracer = 978,
  OPT_ftrack_macro_expansion = 979,
  OPT_ftrack_macro_expansion_ = 980,
  OPT_ftrapping_math = 981,
  OPT_ftrapv = 982,
  OPT_ftree_bit_ccp = 983,
  OPT_ftree_builtin_call_dce = 984,
  OPT_ftree_ccp = 985,
  OPT_ftree_ch = 986,
  OPT_ftree_coalesce_inlined_vars = 987,
  OPT_ftree_coalesce_vars = 988,
  OPT_ftree_copy_prop = 989,
  OPT_ftree_copyrename = 990,
  OPT_ftree_cselim = 991,
  OPT_ftree_dce = 992,
  OPT_ftree_dominator_opts = 993,
  OPT_ftree_dse = 994,
  OPT_ftree_forwprop = 995,
  OPT_ftree_fre = 996,
  OPT_ftree_loop_distribute_patterns = 997,
  OPT_ftree_loop_distribution = 998,
  OPT_ftree_loop_if_convert = 999,
  OPT_ftree_loop_if_convert_stores = 1000,
  OPT_ftree_loop_im = 1001,
  OPT_ftree_loop_ivcanon = 1002,
  OPT_ftree_loop_optimize = 1004,
  OPT_ftree_loop_vectorize = 1005,
  OPT_ftree_lrs = 1006,
  OPT_ftree_parallelize_loops_ = 1007,
  OPT_ftree_partial_pre = 1008,
  OPT_ftree_phiprop = 1009,
  OPT_ftree_pre = 1010,
  OPT_ftree_pta = 1011,
  OPT_ftree_reassoc = 1012,
  OPT_ftree_scev_cprop = 1014,
  OPT_ftree_sink = 1015,
  OPT_ftree_slp_vectorize = 1016,
  OPT_ftree_slsr = 1017,
  OPT_ftree_sra = 1018,
  OPT_ftree_switch_conversion = 1021,
  OPT_ftree_tail_merge = 1022,
  OPT_ftree_ter = 1023,
  OPT_ftree_vectorize = 1025,
  OPT_ftree_vrp = 1027,
  OPT_funderscoring = 1028,
  OPT_funit_at_a_time = 1029,
  OPT_funroll_all_loops = 1030,
  OPT_funroll_loops = 1031,
  OPT_funsafe_loop_optimizations = 1032,
  OPT_funsafe_math_optimizations = 1033,
  OPT_funsigned_bitfields = 1034,
  OPT_funsigned_char = 1035,
  OPT_funswitch_loops = 1036,
  OPT_funwind_tables = 1037,
  OPT_fuse_atomic_builtins = 1038,
  OPT_fuse_boehm_gc = 1039,
  OPT_fuse_caller_save = 1040,
  OPT_fuse_cxa_atexit = 1041,
  OPT_fuse_cxa_get_exception_ptr = 1042,
  OPT_fuse_divide_subroutine = 1043,
  OPT_fuse_ld_bfd = 1044,
  OPT_fuse_ld_gold = 1045,
  OPT_fuse_linker_plugin = 1046,
  OPT_fvar_tracking = 1047,
  OPT_fvar_tracking_assignments = 1048,
  OPT_fvar_tracking_assignments_toggle = 1049,
  OPT_fvar_tracking_uninit = 1050,
  OPT_fvariable_expansion_in_unroller = 1051,
  OPT_fvect_cost_model_ = 1053,
  OPT_fverbose_asm = 1054,
  OPT_fvisibility_inlines_hidden = 1056,
  OPT_fvisibility_ms_compat = 1057,
  OPT_fvisibility_ = 1058,
  OPT_fvpt = 1059,
  OPT_fvtable_verify_ = 1062,
  OPT_fvtv_counts = 1063,
  OPT_fvtv_debug = 1064,
  OPT_fweak = 1065,
  OPT_fweb = 1066,
  OPT_fwhole_program = 1068,
  OPT_fwide_exec_charset_ = 1069,
  OPT_fworking_directory = 1070,
  OPT_fwpa = 1071,
  OPT_fwpa_ = 1072,
  OPT_fwrapv = 1073,
  OPT_fzero_initialized_in_bss = 1076,
  OPT_fzero_link = 1077,
  OPT_g = 1078,
  OPT_gant = 1079,
  OPT_gcoff = 1080,
  OPT_gdwarf = 1081,
  OPT_gdwarf_ = 1082,
  OPT_gen_decls = 1083,
  OPT_ggdb = 1084,
  OPT_ggnu_pubnames = 1085,
  OPT_gnat = 1086,
  OPT_gnatO = 1087,
  OPT_gno_pubnames = 1088,
  OPT_gno_record_gcc_switches = 1089,
  OPT_gno_split_dwarf = 1090,
  OPT_gno_strict_dwarf = 1091,
  OPT_gpubnames = 1092,
  OPT_grecord_gcc_switches = 1093,
  OPT_gsplit_dwarf = 1094,
  OPT_gstabs = 1095,
  OPT_gstabs_ = 1096,
  OPT_gstrict_dwarf = 1097,
  OPT_gtoggle = 1098,
  OPT_gvms = 1099,
  OPT_gxcoff = 1100,
  OPT_gxcoff_ = 1101,
  OPT_gz = 1102,
  OPT_gz_ = 1103,
  OPT_h = 1104,
  OPT_idirafter = 1105,
  OPT_imacros = 1106,
  OPT_imultiarch = 1107,
  OPT_imultilib = 1108,
  OPT_include = 1109,
  OPT_iplugindir_ = 1110,
  OPT_iprefix = 1111,
  OPT_iquote = 1112,
  OPT_isysroot = 1113,
  OPT_isystem = 1114,
  OPT_iwithprefix = 1115,
  OPT_iwithprefixbefore = 1116,
  OPT_k8 = 1117,
  OPT_l = 1118,
  OPT_lang_asm = 1119,
  OPT_mabi_ = 1120,
  OPT_mabort_on_noreturn = 1121,
  OPT_mapcs = 1122,
  OPT_mapcs_float = 1123,
  OPT_mapcs_frame = 1124,
  OPT_mapcs_reentrant = 1125,
  OPT_mapcs_stack_check = 1126,
  OPT_march_ = 1127,
  OPT_marm = 1128,
  OPT_masm_syntax_unified = 1129,
  OPT_mbig_endian = 1130,
  OPT_mcallee_super_interworking = 1131,
  OPT_mcaller_super_interworking = 1132,
  OPT_mcpu_ = 1133,
  OPT_mfix_cortex_m3_ldrd = 1134,
  OPT_mfloat_abi_ = 1135,
  OPT_mfp16_format_ = 1136,
  OPT_mfpu_ = 1137,
  OPT_mlittle_endian = 1139,
  OPT_mlong_calls = 1140,
  OPT_mlra = 1141,
  OPT_mneon_for_64bits = 1142,
  OPT_mnew_generic_costs = 1143,
  OPT_mold_rtx_costs = 1144,
  OPT_mpic_data_is_text_relative = 1145,
  OPT_mpic_register_ = 1146,
  OPT_mpoke_function_name = 1147,
  OPT_mrestrict_it = 1148,
  OPT_msched_prolog = 1149,
  OPT_msingle_pic_base = 1150,
  OPT_mslow_flash_data = 1151,
  OPT_mstructure_size_boundary_ = 1153,
  OPT_mthumb = 1154,
  OPT_mthumb_interwork = 1155,
  OPT_mtls_dialect_ = 1156,
  OPT_mtp_ = 1157,
  OPT_mtpcs_frame = 1158,
  OPT_mtpcs_leaf_frame = 1159,
  OPT_mtune_ = 1160,
  OPT_munaligned_access = 1161,
  OPT_mvectorize_with_neon_double = 1162,
  OPT_mvectorize_with_neon_quad = 1163,
  OPT_mword_relocations = 1164,
  OPT_n = 1165,
  OPT_no_canonical_prefixes = 1166,
  OPT_no_integrated_cpp = 1167,
  OPT_nocpp = 1168,
  OPT_nodefaultlibs = 1169,
  OPT_nostartfiles = 1170,
  OPT_nostdinc = 1171,
  OPT_nostdinc__ = 1172,
  OPT_nostdlib = 1173,
  OPT_o = 1174,
  OPT_p = 1175,
  OPT_pass_exit_codes = 1176,
  OPT_pedantic_errors = 1178,
  OPT_pg = 1179,
  OPT_pie = 1180,
  OPT_pipe = 1181,
  OPT_print_file_name_ = 1182,
  OPT_print_libgcc_file_name = 1183,
  OPT_print_multi_directory = 1184,
  OPT_print_multi_lib = 1185,
  OPT_print_multi_os_directory = 1186,
  OPT_print_multiarch = 1187,
  OPT_print_objc_runtime_info = 1188,
  OPT_print_prog_name_ = 1189,
  OPT_print_search_dirs = 1190,
  OPT_print_sysroot = 1191,
  OPT_print_sysroot_headers_suffix = 1192,
  OPT_quiet = 1193,
  OPT_r = 1194,
  OPT_remap = 1195,
  OPT_s = 1196,
  OPT_s_bc_abi = 1197,
  OPT_save_temps = 1198,
  OPT_save_temps_ = 1199,
  OPT_shared = 1200,
  OPT_shared_libgcc = 1201,
  OPT_specs_ = 1203,
  OPT_static = 1204,
  OPT_static_libasan = 1205,
  OPT_static_libgcc = 1206,
  OPT_static_libgcj = 1207,
  OPT_static_libgfortran = 1208,
  OPT_static_libgo = 1209,
  OPT_static_liblsan = 1210,
  OPT_static_libstdc__ = 1211,
  OPT_static_libtsan = 1212,
  OPT_static_libubsan = 1213,
  OPT_std_c__11 = 1216,
  OPT_std_c__14 = 1217,
  OPT_std_c__1z = 1220,
  OPT_std_c__98 = 1221,
  OPT_std_c11 = 1222,
  OPT_std_c90 = 1225,
  OPT_std_c99 = 1226,
  OPT_std_f2003 = 1228,
  OPT_std_f2008 = 1229,
  OPT_std_f2008ts = 1230,
  OPT_std_f95 = 1231,
  OPT_std_gnu = 1232,
  OPT_std_gnu__11 = 1235,
  OPT_std_gnu__14 = 1236,
  OPT_std_gnu__1z = 1239,
  OPT_std_gnu__98 = 1240,
  OPT_std_gnu11 = 1241,
  OPT_std_gnu90 = 1244,
  OPT_std_gnu99 = 1245,
  OPT_std_iso9899_199409 = 1248,
  OPT_std_legacy = 1252,
  OPT_symbolic = 1253,
  OPT_t = 1254,
  OPT_time = 1255,
  OPT_time_ = 1256,
  OPT_traditional = 1257,
  OPT_traditional_cpp = 1258,
  OPT_trigraphs = 1259,
  OPT_u = 1260,
  OPT_undef = 1261,
  OPT_v = 1262,
  OPT_version = 1263,
  OPT_w = 1264,
  OPT_wrapper = 1265,
  OPT_x = 1266,
  OPT_z = 1267,
  N_OPTS,
  OPT_SPECIAL_unknown,
  OPT_SPECIAL_ignore,
  OPT_SPECIAL_program_name,
  OPT_SPECIAL_input_file
};
enum unspec {
  UNSPEC_PUSH_MULT = 0,
  UNSPEC_PIC_SYM = 1,
  UNSPEC_PIC_BASE = 2,
  UNSPEC_PRLG_STK = 3,
  UNSPEC_REGISTER_USE = 4,
  UNSPEC_CHECK_ARCH = 5,
  UNSPEC_WSHUFH = 6,
  UNSPEC_WACC = 7,
  UNSPEC_TMOVMSK = 8,
  UNSPEC_WSAD = 9,
  UNSPEC_WSADZ = 10,
  UNSPEC_WMACS = 11,
  UNSPEC_WMACU = 12,
  UNSPEC_WMACSZ = 13,
  UNSPEC_WMACUZ = 14,
  UNSPEC_CLRDI = 15,
  UNSPEC_WALIGNI = 16,
  UNSPEC_TLS = 17,
  UNSPEC_PIC_LABEL = 18,
  UNSPEC_PIC_OFFSET = 19,
  UNSPEC_GOTSYM_OFF = 20,
  UNSPEC_THUMB1_CASESI = 21,
  UNSPEC_RBIT = 22,
  UNSPEC_SYMBOL_OFFSET = 23,
  UNSPEC_MEMORY_BARRIER = 24,
  UNSPEC_UNALIGNED_LOAD = 25,
  UNSPEC_UNALIGNED_STORE = 26,
  UNSPEC_PIC_UNIFIED = 27,
  UNSPEC_LL = 28,
  UNSPEC_VRINTZ = 29,
  UNSPEC_VRINTP = 30,
  UNSPEC_VRINTM = 31,
  UNSPEC_VRINTR = 32,
  UNSPEC_VRINTX = 33,
  UNSPEC_VRINTA = 34,
  UNSPEC_WADDC = 35,
  UNSPEC_WABS = 36,
  UNSPEC_WQMULWMR = 37,
  UNSPEC_WQMULMR = 38,
  UNSPEC_WQMULWM = 39,
  UNSPEC_WQMULM = 40,
  UNSPEC_WQMIAxyn = 41,
  UNSPEC_WQMIAxy = 42,
  UNSPEC_TANDC = 43,
  UNSPEC_TORC = 44,
  UNSPEC_TORVSC = 45,
  UNSPEC_TEXTRC = 46,
  UNSPEC_ASHIFT_SIGNED = 47,
  UNSPEC_ASHIFT_UNSIGNED = 48,
  UNSPEC_CRC32B = 49,
  UNSPEC_CRC32H = 50,
  UNSPEC_CRC32W = 51,
  UNSPEC_CRC32CB = 52,
  UNSPEC_CRC32CH = 53,
  UNSPEC_CRC32CW = 54,
  UNSPEC_AESD = 55,
  UNSPEC_AESE = 56,
  UNSPEC_AESIMC = 57,
  UNSPEC_AESMC = 58,
  UNSPEC_SHA1C = 59,
  UNSPEC_SHA1M = 60,
  UNSPEC_SHA1P = 61,
  UNSPEC_SHA1H = 62,
  UNSPEC_SHA1SU0 = 63,
  UNSPEC_SHA1SU1 = 64,
  UNSPEC_SHA256H = 65,
  UNSPEC_SHA256H2 = 66,
  UNSPEC_SHA256SU0 = 67,
  UNSPEC_SHA256SU1 = 68,
  UNSPEC_VMULLP64 = 69,
  UNSPEC_LOAD_COUNT = 70,
  UNSPEC_VABD = 71,
  UNSPEC_VABDL = 72,
  UNSPEC_VADD = 73,
  UNSPEC_VADDHN = 74,
  UNSPEC_VADDL = 75,
  UNSPEC_VADDW = 76,
  UNSPEC_VBSL = 77,
  UNSPEC_VCAGE = 78,
  UNSPEC_VCAGT = 79,
  UNSPEC_VCEQ = 80,
  UNSPEC_VCGE = 81,
  UNSPEC_VCGEU = 82,
  UNSPEC_VCGT = 83,
  UNSPEC_VCGTU = 84,
  UNSPEC_VCLS = 85,
  UNSPEC_VCONCAT = 86,
  UNSPEC_VCVT = 87,
  UNSPEC_VCVT_N = 88,
  UNSPEC_VEXT = 89,
  UNSPEC_VHADD = 90,
  UNSPEC_VHSUB = 91,
  UNSPEC_VLD1 = 92,
  UNSPEC_VLD1_LANE = 93,
  UNSPEC_VLD2 = 94,
  UNSPEC_VLD2_DUP = 95,
  UNSPEC_VLD2_LANE = 96,
  UNSPEC_VLD3 = 97,
  UNSPEC_VLD3A = 98,
  UNSPEC_VLD3B = 99,
  UNSPEC_VLD3_DUP = 100,
  UNSPEC_VLD3_LANE = 101,
  UNSPEC_VLD4 = 102,
  UNSPEC_VLD4A = 103,
  UNSPEC_VLD4B = 104,
  UNSPEC_VLD4_DUP = 105,
  UNSPEC_VLD4_LANE = 106,
  UNSPEC_VMAX = 107,
  UNSPEC_VMIN = 108,
  UNSPEC_VMLA = 109,
  UNSPEC_VMLAL = 110,
  UNSPEC_VMLA_LANE = 111,
  UNSPEC_VMLAL_LANE = 112,
  UNSPEC_VMLS = 113,
  UNSPEC_VMLSL = 114,
  UNSPEC_VMLS_LANE = 115,
  UNSPEC_VMLSL_LANE = 116,
  UNSPEC_VMOVL = 117,
  UNSPEC_VMOVN = 118,
  UNSPEC_VMUL = 119,
  UNSPEC_VMULL = 120,
  UNSPEC_VMUL_LANE = 121,
  UNSPEC_VMULL_LANE = 122,
  UNSPEC_VPADAL = 123,
  UNSPEC_VPADD = 124,
  UNSPEC_VPADDL = 125,
  UNSPEC_VPMAX = 126,
  UNSPEC_VPMIN = 127,
  UNSPEC_VPSMAX = 128,
  UNSPEC_VPSMIN = 129,
  UNSPEC_VPUMAX = 130,
  UNSPEC_VPUMIN = 131,
  UNSPEC_VQABS = 132,
  UNSPEC_VQADD = 133,
  UNSPEC_VQDMLAL = 134,
  UNSPEC_VQDMLAL_LANE = 135,
  UNSPEC_VQDMLSL = 136,
  UNSPEC_VQDMLSL_LANE = 137,
  UNSPEC_VQDMULH = 138,
  UNSPEC_VQDMULH_LANE = 139,
  UNSPEC_VQDMULL = 140,
  UNSPEC_VQDMULL_LANE = 141,
  UNSPEC_VQMOVN = 142,
  UNSPEC_VQMOVUN = 143,
  UNSPEC_VQNEG = 144,
  UNSPEC_VQSHL = 145,
  UNSPEC_VQSHL_N = 146,
  UNSPEC_VQSHLU_N = 147,
  UNSPEC_VQSHRN_N = 148,
  UNSPEC_VQSHRUN_N = 149,
  UNSPEC_VQSUB = 150,
  UNSPEC_VRECPE = 151,
  UNSPEC_VRECPS = 152,
  UNSPEC_VREV16 = 153,
  UNSPEC_VREV32 = 154,
  UNSPEC_VREV64 = 155,
  UNSPEC_VRSQRTE = 156,
  UNSPEC_VRSQRTS = 157,
  UNSPEC_VSHL = 158,
  UNSPEC_VSHLL_N = 159,
  UNSPEC_VSHL_N = 160,
  UNSPEC_VSHR_N = 161,
  UNSPEC_VSHRN_N = 162,
  UNSPEC_VSLI = 163,
  UNSPEC_VSRA_N = 164,
  UNSPEC_VSRI = 165,
  UNSPEC_VST1 = 166,
  UNSPEC_VST1_LANE = 167,
  UNSPEC_VST2 = 168,
  UNSPEC_VST2_LANE = 169,
  UNSPEC_VST3 = 170,
  UNSPEC_VST3A = 171,
  UNSPEC_VST3B = 172,
  UNSPEC_VST3_LANE = 173,
  UNSPEC_VST4 = 174,
  UNSPEC_VST4A = 175,
  UNSPEC_VST4B = 176,
  UNSPEC_VST4_LANE = 177,
  UNSPEC_VSTRUCTDUMMY = 178,
  UNSPEC_VSUB = 179,
  UNSPEC_VSUBHN = 180,
  UNSPEC_VSUBL = 181,
  UNSPEC_VSUBW = 182,
  UNSPEC_VTBL = 183,
  UNSPEC_VTBX = 184,
  UNSPEC_VTRN1 = 185,
  UNSPEC_VTRN2 = 186,
  UNSPEC_VTST = 187,
  UNSPEC_VUZP1 = 188,
  UNSPEC_VUZP2 = 189,
  UNSPEC_VZIP1 = 190,
  UNSPEC_VZIP2 = 191,
  UNSPEC_MISALIGNED_ACCESS = 192,
  UNSPEC_VCLE = 193,
  UNSPEC_VCLT = 194,
  UNSPEC_NVRINTZ = 195,
  UNSPEC_NVRINTP = 196,
  UNSPEC_NVRINTM = 197,
  UNSPEC_NVRINTX = 198,
  UNSPEC_NVRINTA = 199,
  UNSPEC_NVRINTN = 200
};
extern const char *const unspec_strings[];
enum unspecv {
  VUNSPEC_BLOCKAGE = 0,
  VUNSPEC_EPILOGUE = 1,
  VUNSPEC_THUMB1_INTERWORK = 2,
  VUNSPEC_ALIGN = 3,
  VUNSPEC_POOL_END = 4,
  VUNSPEC_POOL_1 = 5,
  VUNSPEC_POOL_2 = 6,
  VUNSPEC_POOL_4 = 7,
  VUNSPEC_POOL_8 = 8,
  VUNSPEC_POOL_16 = 9,
  VUNSPEC_TMRC = 10,
  VUNSPEC_TMCR = 11,
  VUNSPEC_ALIGN8 = 12,
  VUNSPEC_WCMP_EQ = 13,
  VUNSPEC_WCMP_GTU = 14,
  VUNSPEC_WCMP_GT = 15,
  VUNSPEC_EH_RETURN = 16,
  VUNSPEC_ATOMIC_CAS = 17,
  VUNSPEC_ATOMIC_XCHG = 18,
  VUNSPEC_ATOMIC_OP = 19,
  VUNSPEC_LL = 20,
  VUNSPEC_SC = 21,
  VUNSPEC_LAX = 22,
  VUNSPEC_SLX = 23,
  VUNSPEC_LDA = 24,
  VUNSPEC_STL = 25,
  VUNSPEC_GET_FPSCR = 26,
  VUNSPEC_SET_FPSCR = 27
};
extern const char *const unspecv_strings[];
enum machine_mode
{
  VOIDmode,
  BLKmode,
  CCmode,
  CC_NOOVmode,
  CC_Zmode,
  CC_CZmode,
  CC_NCVmode,
  CC_SWPmode,
  CCFPmode,
  CCFPEmode,
  CC_DNEmode,
  CC_DEQmode,
  CC_DLEmode,
  CC_DLTmode,
  CC_DGEmode,
  CC_DGTmode,
  CC_DLEUmode,
  CC_DLTUmode,
  CC_DGEUmode,
  CC_DGTUmode,
  CC_Cmode,
  CC_Nmode,
  BImode,
  QImode,
  HImode,
  SImode,
  DImode,
  TImode,
  EImode,
  OImode,
  CImode,
  XImode,
  QQmode,
  HQmode,
  SQmode,
  DQmode,
  TQmode,
  UQQmode,
  UHQmode,
  USQmode,
  UDQmode,
  UTQmode,
  HAmode,
  SAmode,
  DAmode,
  TAmode,
  UHAmode,
  USAmode,
  UDAmode,
  UTAmode,
  HFmode,
  SFmode,
  DFmode,
  SDmode,
  DDmode,
  TDmode,
  CQImode,
  CHImode,
  CSImode,
  CDImode,
  CTImode,
  CEImode,
  COImode,
  CCImode,
  CXImode,
  HCmode,
  SCmode,
  DCmode,
  V4QImode,
  V2HImode,
  V8QImode,
  V4HImode,
  V2SImode,
  V16QImode,
  V8HImode,
  V4SImode,
  V2DImode,
  V4QQmode,
  V2HQmode,
  V4UQQmode,
  V2UHQmode,
  V2HAmode,
  V2UHAmode,
  V4HFmode,
  V2SFmode,
  V8HFmode,
  V4SFmode,
  V2DFmode,
  MAX_MACHINE_MODE,
  MIN_MODE_RANDOM = VOIDmode,
  MAX_MODE_RANDOM = BLKmode,
  MIN_MODE_CC = CCmode,
  MAX_MODE_CC = CC_Nmode,
  MIN_MODE_INT = QImode,
  MAX_MODE_INT = XImode,
  MIN_MODE_PARTIAL_INT = VOIDmode,
  MAX_MODE_PARTIAL_INT = VOIDmode,
  MIN_MODE_POINTER_BOUNDS = VOIDmode,
  MAX_MODE_POINTER_BOUNDS = VOIDmode,
  MIN_MODE_FRACT = QQmode,
  MAX_MODE_FRACT = TQmode,
  MIN_MODE_UFRACT = UQQmode,
  MAX_MODE_UFRACT = UTQmode,
  MIN_MODE_ACCUM = HAmode,
  MAX_MODE_ACCUM = TAmode,
  MIN_MODE_UACCUM = UHAmode,
  MAX_MODE_UACCUM = UTAmode,
  MIN_MODE_FLOAT = HFmode,
  MAX_MODE_FLOAT = DFmode,
  MIN_MODE_DECIMAL_FLOAT = SDmode,
  MAX_MODE_DECIMAL_FLOAT = TDmode,
  MIN_MODE_COMPLEX_INT = CQImode,
  MAX_MODE_COMPLEX_INT = CXImode,
  MIN_MODE_COMPLEX_FLOAT = HCmode,
  MAX_MODE_COMPLEX_FLOAT = DCmode,
  MIN_MODE_VECTOR_INT = V4QImode,
  MAX_MODE_VECTOR_INT = V2DImode,
  MIN_MODE_VECTOR_FRACT = V4QQmode,
  MAX_MODE_VECTOR_FRACT = V2HQmode,
  MIN_MODE_VECTOR_UFRACT = V4UQQmode,
  MAX_MODE_VECTOR_UFRACT = V2UHQmode,
  MIN_MODE_VECTOR_ACCUM = V2HAmode,
  MAX_MODE_VECTOR_ACCUM = V2HAmode,
  MIN_MODE_VECTOR_UACCUM = V2UHAmode,
  MAX_MODE_VECTOR_UACCUM = V2UHAmode,
  MIN_MODE_VECTOR_FLOAT = V4HFmode,
  MAX_MODE_VECTOR_FLOAT = V2DFmode,
  NUM_MACHINE_MODES = MAX_MACHINE_MODE
};
extern char arm_arch_name[];
enum target_cpus
{
TARGET_CPU_arm2,
TARGET_CPU_arm250,
TARGET_CPU_arm3,
TARGET_CPU_arm6,
TARGET_CPU_arm60,
TARGET_CPU_arm600,
TARGET_CPU_arm610,
TARGET_CPU_arm620,
TARGET_CPU_arm7,
TARGET_CPU_arm7d,
TARGET_CPU_arm7di,
TARGET_CPU_arm70,
TARGET_CPU_arm700,
TARGET_CPU_arm700i,
TARGET_CPU_arm710,
TARGET_CPU_arm720,
TARGET_CPU_arm710c,
TARGET_CPU_arm7100,
TARGET_CPU_arm7500,
TARGET_CPU_arm7500fe,
TARGET_CPU_arm7m,
TARGET_CPU_arm7dm,
TARGET_CPU_arm7dmi,
TARGET_CPU_arm8,
TARGET_CPU_arm810,
TARGET_CPU_strongarm,
TARGET_CPU_strongarm110,
TARGET_CPU_strongarm1100,
TARGET_CPU_strongarm1110,
TARGET_CPU_fa526,
TARGET_CPU_fa626,
TARGET_CPU_arm7tdmi,
TARGET_CPU_arm7tdmis,
TARGET_CPU_arm710t,
TARGET_CPU_arm720t,
TARGET_CPU_arm740t,
TARGET_CPU_arm9,
TARGET_CPU_arm9tdmi,
TARGET_CPU_arm920,
TARGET_CPU_arm920t,
TARGET_CPU_arm922t,
TARGET_CPU_arm940t,
TARGET_CPU_ep9312,
TARGET_CPU_arm10tdmi,
TARGET_CPU_arm1020t,
TARGET_CPU_arm9e,
TARGET_CPU_arm946es,
TARGET_CPU_arm966es,
TARGET_CPU_arm968es,
TARGET_CPU_arm10e,
TARGET_CPU_arm1020e,
TARGET_CPU_arm1022e,
TARGET_CPU_xscale,
TARGET_CPU_iwmmxt,
TARGET_CPU_iwmmxt2,
TARGET_CPU_fa606te,
TARGET_CPU_fa626te,
TARGET_CPU_fmp626,
TARGET_CPU_fa726te,
TARGET_CPU_arm926ejs,
TARGET_CPU_arm1026ejs,
TARGET_CPU_arm1136js,
TARGET_CPU_arm1136jfs,
TARGET_CPU_arm1176jzs,
TARGET_CPU_arm1176jzfs,
TARGET_CPU_mpcorenovfp,
TARGET_CPU_mpcore,
TARGET_CPU_arm1156t2s,
TARGET_CPU_arm1156t2fs,
TARGET_CPU_cortexm1,
TARGET_CPU_cortexm0,
TARGET_CPU_cortexm0plus,
TARGET_CPU_cortexm1smallmultiply,
TARGET_CPU_cortexm0smallmultiply,
TARGET_CPU_cortexm0plussmallmultiply,
TARGET_CPU_genericv7a,
TARGET_CPU_cortexa5,
TARGET_CPU_cortexa7,
TARGET_CPU_cortexa8,
TARGET_CPU_cortexa9,
TARGET_CPU_cortexa12,
TARGET_CPU_cortexa15,
TARGET_CPU_cortexr4,
TARGET_CPU_cortexr4f,
TARGET_CPU_cortexr5,
TARGET_CPU_cortexr7,
TARGET_CPU_cortexm7,
TARGET_CPU_cortexm4,
TARGET_CPU_cortexm3,
TARGET_CPU_marvell_pj4,
TARGET_CPU_cortexa15cortexa7,
TARGET_CPU_cortexa53,
TARGET_CPU_cortexa57,
TARGET_CPU_cortexa57cortexa53,
  TARGET_CPU_generic
};
extern enum processor_type arm_tune;
typedef enum arm_cond_code
{
  ARM_EQ = 0, ARM_NE, ARM_CS, ARM_CC, ARM_MI, ARM_PL, ARM_VS, ARM_VC,
  ARM_HI, ARM_LS, ARM_GE, ARM_LT, ARM_GT, ARM_LE, ARM_AL, ARM_NV
}
arm_cc;
extern arm_cc arm_current_cc;
extern int arm_target_label;
extern int arm_ccfsm_state;
extern struct _dont_use_rtx_here_ * arm_target_insn;
extern struct _dont_use_rtx_here_ * pool_vector_label;
extern int return_used_this_function;
extern void (*arm_lang_output_object_attributes_hook)(void);
enum arm_fp_model
{
  ARM_FP_MODEL_UNKNOWN,
  ARM_FP_MODEL_VFP
};
enum vfp_reg_type
{
  VFP_NONE = 0,
  VFP_REG_D16,
  VFP_REG_D32,
  VFP_REG_SINGLE
};
extern const struct arm_fpu_desc
{
  const char *name;
  enum arm_fp_model model;
  int rev;
  enum vfp_reg_type regs;
  int neon;
  int fp16;
  int crypto;
} *arm_fpu_desc;
extern int arm_fpu_attr;
enum base_architecture
{
  BASE_ARCH_0 = 0,
  BASE_ARCH_2 = 2,
  BASE_ARCH_3 = 3,
  BASE_ARCH_3M = 3,
  BASE_ARCH_4 = 4,
  BASE_ARCH_4T = 4,
  BASE_ARCH_5 = 5,
  BASE_ARCH_5E = 5,
  BASE_ARCH_5T = 5,
  BASE_ARCH_5TE = 5,
  BASE_ARCH_5TEJ = 5,
  BASE_ARCH_6 = 6,
  BASE_ARCH_6J = 6,
  BASE_ARCH_6ZK = 6,
  BASE_ARCH_6K = 6,
  BASE_ARCH_6T2 = 6,
  BASE_ARCH_6M = 6,
  BASE_ARCH_6Z = 6,
  BASE_ARCH_7 = 7,
  BASE_ARCH_7A = 7,
  BASE_ARCH_7R = 7,
  BASE_ARCH_7M = 7,
  BASE_ARCH_7EM = 7,
  BASE_ARCH_8A = 8
};
extern enum base_architecture arm_base_arch;
extern int arm_arch3m;
extern int arm_arch4;
extern int arm_arch4t;
extern int arm_arch5;
extern int arm_arch5e;
extern int arm_arch6;
extern int arm_arch6k;
extern int arm_arch6m;
extern int arm_arch7;
extern int arm_arch_notm;
extern int arm_arch7em;
extern int arm_arch8;
extern int arm_ld_sched;
extern int thumb_code;
extern int thumb1_code;
extern int arm_tune_strongarm;
extern int arm_arch_iwmmxt;
extern int arm_arch_iwmmxt2;
extern int arm_arch_xscale;
extern int arm_tune_xscale;
extern int arm_tune_wbuf;
extern int arm_tune_cortex_a9;
extern int arm_cpp_interwork;
extern int arm_arch_thumb2;
extern int arm_arch_arm_hwdiv;
extern int arm_arch_thumb_hwdiv;
extern int prefer_neon_for_64bits;
extern int arm_arch_crc;
extern int arm_regs_in_sequence[];
enum reg_class
{
  NO_REGS,
  LO_REGS,
  STACK_REG,
  BASE_REGS,
  HI_REGS,
  CALLER_SAVE_REGS,
  GENERAL_REGS,
  CORE_REGS,
  VFP_D0_D7_REGS,
  VFP_LO_REGS,
  VFP_HI_REGS,
  VFP_REGS,
  IWMMXT_REGS,
  IWMMXT_GR_REGS,
  CC_REG,
  VFPCC_REG,
  SFP_REG,
  AFP_REG,
  ALL_REGS,
  LIM_REG_CLASSES
};
typedef struct arm_stack_offsets
{
  int saved_args;
  int frame;
  int saved_regs;
  int soft_frame;
  int locals_base;
  int outgoing_args;
  unsigned int saved_regs_mask;
}
arm_stack_offsets;
extern struct _dont_use_rtx_here_ * thumb_call_via_label[14];
enum arm_pcs
{
  ARM_PCS_AAPCS,
  ARM_PCS_AAPCS_VFP,
  ARM_PCS_AAPCS_IWMMXT,
  ARM_PCS_AAPCS_LOCAL,
  ARM_PCS_ATPCS,
  ARM_PCS_APCS,
  ARM_PCS_UNKNOWN
};
extern enum arm_pcs arm_pcs_default;
enum arm_auto_incmodes
  {
    ARM_POST_INC,
    ARM_PRE_INC,
    ARM_POST_DEC,
    ARM_PRE_DEC
  };
extern unsigned arm_pic_register;
extern int making_const_table;
extern const char *arm_rewrite_mcpu (int argc, const char **argv);
extern const char *host_detect_local_cpu (int argc, const char **argv);
extern int __gcc_bcmp (const unsigned char *, const unsigned char *, size_t);
extern void __clear_cache (char *, char *);
extern void __eprintf (const char *, const char *, unsigned int, const char *)
  __attribute__ ((__noreturn__));
typedef int QItype __attribute__ ((mode (QI)));
typedef unsigned int UQItype __attribute__ ((mode (QI)));
typedef int HItype __attribute__ ((mode (HI)));
typedef unsigned int UHItype __attribute__ ((mode (HI)));
typedef int SItype __attribute__ ((mode (SI)));
typedef unsigned int USItype __attribute__ ((mode (SI)));
typedef int DItype __attribute__ ((mode (DI)));
typedef unsigned int UDItype __attribute__ ((mode (DI)));
typedef float SFtype __attribute__ ((mode (SF)));
typedef _Complex float SCtype __attribute__ ((mode (SC)));
typedef float DFtype __attribute__ ((mode (DF)));
typedef _Complex float DCtype __attribute__ ((mode (DC)));
typedef int cmp_return_type __attribute__((mode (__libgcc_cmp_return__)));
typedef int shift_count_type __attribute__((mode (__libgcc_shift_count__)));
extern DItype __muldi3 (DItype, DItype);
extern DItype __divdi3 (DItype, DItype);
extern UDItype __udivdi3 (UDItype, UDItype);
extern UDItype __umoddi3 (UDItype, UDItype);
extern DItype __moddi3 (DItype, DItype);
extern UDItype __udivmoddi4 (UDItype, UDItype, UDItype *);
extern DItype __negdi2 (DItype);
extern DItype __lshrdi3 (DItype, shift_count_type);
extern DItype __ashldi3 (DItype, shift_count_type);
extern DItype __ashrdi3 (DItype, shift_count_type);
extern USItype __udiv_w_sdiv (USItype *, USItype, USItype, USItype);
extern cmp_return_type __cmpdi2 (DItype, DItype);
extern cmp_return_type __ucmpdi2 (DItype, DItype);
extern SItype __bswapsi2 (SItype);
extern DItype __bswapdi2 (DItype);
extern SItype __absvsi2 (SItype);
extern SItype __addvsi3 (SItype, SItype);
extern SItype __subvsi3 (SItype, SItype);
extern SItype __mulvsi3 (SItype, SItype);
extern SItype __negvsi2 (SItype);
extern DItype __absvdi2 (DItype);
extern DItype __addvdi3 (DItype, DItype);
extern DItype __subvdi3 (DItype, DItype);
extern DItype __mulvdi3 (DItype, DItype);
extern DItype __negvdi2 (DItype);
extern DItype __fixsfdi (SFtype);
extern SFtype __floatdisf (DItype);
extern SFtype __floatundisf (UDItype);
extern USItype __fixunssfsi (SFtype);
extern UDItype __fixunssfdi (SFtype);
extern SFtype __powisf2 (SFtype, int);
extern SCtype __divsc3 (SFtype, SFtype, SFtype, SFtype);
extern SCtype __mulsc3 (SFtype, SFtype, SFtype, SFtype);
extern DItype __fixdfdi (DFtype);
extern DFtype __floatdidf (DItype);
extern DFtype __floatundidf (UDItype);
extern USItype __fixunsdfsi (DFtype);
extern UDItype __fixunsdfdi (DFtype);
extern DFtype __powidf2 (DFtype, int);
extern DCtype __divdc3 (DFtype, DFtype, DFtype, DFtype);
extern DCtype __muldc3 (DFtype, DFtype, DFtype, DFtype);
  struct DWstruct {SItype low, high;};
typedef union
{
  struct DWstruct s;
  DItype ll;
} DWunion;
extern const UQItype __popcount_tab[256];
extern const UQItype __clz_tab[256];
extern const UQItype __clz_tab[256] ;
extern int __clzdi2 (UDItype);
extern int __clzsi2 (USItype);
extern int __ctzsi2 (USItype);
extern int __ctzdi2 (UDItype);
extern int __clrsbsi2 (SItype);
extern int __clrsbdi2 (DItype);
extern int __ffssi2 (USItype);
extern int __ffsdi2 (DItype);
extern int __popcountsi2 (USItype);
extern int __popcountdi2 (UDItype);
extern int __paritysi2 (USItype);
extern int __paritydi2 (UDItype);
extern void __enable_execute_stack (void *);
  typeof (__muldi3) __aeabi_lmul __attribute__((alias ("__" "muldi3")));
DItype
__muldi3 (DItype u, DItype v)
{
  const DWunion uu = {.ll = u};
  const DWunion vv = {.ll = v};
  DWunion w = {.ll = ({DWunion __w; do { USItype __x0, __x1, __x2, __x3; USItype __ul, __vl, __uh, __vh; __ul = ((USItype) (uu.s.low) & (((USItype) 1 << ((4 * (8)) / 2)) - 1)); __uh = ((USItype) (uu.s.low) >> ((4 * (8)) / 2)); __vl = ((USItype) (vv.s.low) & (((USItype) 1 << ((4 * (8)) / 2)) - 1)); __vh = ((USItype) (vv.s.low) >> ((4 * (8)) / 2)); __x0 = (USItype) __ul * __vl; __x1 = (USItype) __ul * __vh; __x2 = (USItype) __uh * __vl; __x3 = (USItype) __uh * __vh; __x1 += ((USItype) (__x0) >> ((4 * (8)) / 2)); __x1 += __x2; if (__x1 < __x2) __x3 += ((USItype) 1 << ((4 * (8)) / 2)); (__w.s.high) = __x3 + ((USItype) (__x1) >> ((4 * (8)) / 2)); (__w.s.low) = ((USItype) (__x1) & (((USItype) 1 << ((4 * (8)) / 2)) - 1)) * ((USItype) 1 << ((4 * (8)) / 2)) + ((USItype) (__x0) & (((USItype) 1 << ((4 * (8)) / 2)) - 1)); } while (0); __w.ll; })};
  w.s.high += ((USItype) uu.s.low * (USItype) vv.s.high
        + (USItype) uu.s.high * (USItype) vv.s.low);
  return w.ll;
}
Terry Guo Nov. 7, 2014, 10 a.m. UTC | #3
> -----Original Message-----
> From: Christian Bruel [mailto:christian.bruel@st.com]
> Sent: Friday, November 07, 2014 5:27 PM
> To: Terry Guo
> Cc: gcc-patches@gcc.gnu.org
> Subject: Re: [2/2][PATCH,ARM]Generate UAL assembly code for Thumb-1
> target
> 
> hi,
> 
> the ARM bootstrap seems to fail for libgcc2.c on the thumb multilib for
> libgcc2: muldi3 -mthumb -O2  -g
> 
> /tmp/ccYrycUw.s: Assembler messages:
> /tmp/ccYrycUw.s:69: Error: MOV Rd, Rs with two low registers is not
> permitted on this architecture -- `mov r6,r7'
> 
> preprocessed attached.
> 
> Thanks
> 
> Christian

Many thanks. I am looking into it now.

BR,
Terry
Terry Guo Nov. 11, 2014, 9:22 a.m. UTC | #4
> -----Original Message-----
> From: Terry Guo [mailto:terry.guo@arm.com]
> Sent: Friday, November 07, 2014 6:01 PM
> To: 'Christian Bruel'
> Cc: gcc-patches@gcc.gnu.org
> Subject: RE: [2/2][PATCH,ARM]Generate UAL assembly code for Thumb-1
> target
> 
> 
> 
> > -----Original Message-----
> > From: Christian Bruel [mailto:christian.bruel@st.com]
> > Sent: Friday, November 07, 2014 5:27 PM
> > To: Terry Guo
> > Cc: gcc-patches@gcc.gnu.org
> > Subject: Re: [2/2][PATCH,ARM]Generate UAL assembly code for Thumb-1
> > target
> >
> > hi,
> >
> > the ARM bootstrap seems to fail for libgcc2.c on the thumb multilib
> > for
> > libgcc2: muldi3 -mthumb -O2  -g
> >
> > /tmp/ccYrycUw.s: Assembler messages:
> > /tmp/ccYrycUw.s:69: Error: MOV Rd, Rs with two low registers is not
> > permitted on this architecture -- `mov r6,r7'
> >
> > preprocessed attached.
> >
> > Thanks
> >
> > Christian
> 
> Many thanks. I am looking into it now.
> 
> BR,
> Terry

Fix is committed to trunk at https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=217341.

BR,
Terry
diff mbox

Patch

diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 9ccf73c..dc73244 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -28615,12 +28615,14 @@  arm_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED,
 	  fputs ("\tldr\tr3, ", file);
 	  assemble_name (file, label);
 	  fputs ("+4\n", file);
-	  asm_fprintf (file, "\t%s\t%r, %r, r3\n",
+	  asm_fprintf (file, "\t%ss\t%r, %r, r3\n",
 		       mi_op, this_regno, this_regno);
 	}
       else if (mi_delta != 0)
 	{
-	  asm_fprintf (file, "\t%s\t%r, %r, #%d\n",
+	  /* Thumb1 unified syntax requires s suffix in instruction name when
+	     one of the operands is immediate.  */
+	  asm_fprintf (file, "\t%ss\t%r, %r, #%d\n",
 		       mi_op, this_regno, this_regno,
 		       mi_delta);
 	}
diff --git a/gcc/config/arm/thumb1.md b/gcc/config/arm/thumb1.md
index 020d83b..8a2abe9 100644
--- a/gcc/config/arm/thumb1.md
+++ b/gcc/config/arm/thumb1.md
@@ -29,7 +29,7 @@ 
    (clobber (reg:CC CC_REGNUM))
   ]
   "TARGET_THUMB1"
-  "add\\t%Q0, %Q0, %Q2\;adc\\t%R0, %R0, %R2"
+  "adds\\t%Q0, %Q0, %Q2\;adcs\\t%R0, %R0, %R2"
   [(set_attr "length" "4")
    (set_attr "type" "multiple")]
 )
@@ -42,9 +42,9 @@ 
   "*
    static const char * const asms[] =
    {
-     \"add\\t%0, %0, %2\",
-     \"sub\\t%0, %0, #%n2\",
-     \"add\\t%0, %1, %2\",
+     \"adds\\t%0, %0, %2\",
+     \"subs\\t%0, %0, #%n2\",
+     \"adds\\t%0, %1, %2\",
      \"add\\t%0, %0, %2\",
      \"add\\t%0, %0, %2\",
      \"add\\t%0, %1, %2\",
@@ -56,7 +56,7 @@ 
    if ((which_alternative == 2 || which_alternative == 6)
        && CONST_INT_P (operands[2])
        && INTVAL (operands[2]) < 0)
-     return \"sub\\t%0, %1, #%n2\";
+     return (which_alternative == 2) ? \"subs\\t%0, %1, #%n2\" : \"sub\\t%0, %1, #%n2\";
    return asms[which_alternative];
   "
   "&& reload_completed && CONST_INT_P (operands[2])
@@ -105,7 +105,7 @@ 
 		  (match_operand:DI 2 "register_operand"  "l")))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_THUMB1"
-  "sub\\t%Q0, %Q0, %Q2\;sbc\\t%R0, %R0, %R2"
+  "subs\\t%Q0, %Q0, %Q2\;sbcs\\t%R0, %R0, %R2"
   [(set_attr "length" "4")
    (set_attr "type" "multiple")]
 )
@@ -115,7 +115,7 @@ 
 	(minus:SI (match_operand:SI 1 "register_operand" "l")
 		  (match_operand:SI 2 "reg_or_int_operand" "lPd")))]
   "TARGET_THUMB1"
-  "sub\\t%0, %1, %2"
+  "subs\\t%0, %1, %2"
   [(set_attr "length" "2")
    (set_attr "conds" "set")
    (set_attr "type" "alus_sreg")]
@@ -133,9 +133,9 @@ 
  "TARGET_THUMB1 && !arm_arch6"
   "*
   if (which_alternative < 2)
-    return \"mov\\t%0, %1\;mul\\t%0, %2\";
+    return \"mov\\t%0, %1\;muls\\t%0, %2\";
   else
-    return \"mul\\t%0, %2\";
+    return \"muls\\t%0, %2\";
   "
   [(set_attr "length" "4,4,2")
    (set_attr "type" "muls")]
@@ -147,9 +147,9 @@ 
 		 (match_operand:SI 2 "register_operand" "l,0,0")))]
   "TARGET_THUMB1 && arm_arch6"
   "@
-   mul\\t%0, %2
-   mul\\t%0, %1
-   mul\\t%0, %1"
+   muls\\t%0, %2
+   muls\\t%0, %1
+   muls\\t%0, %1"
   [(set_attr "length" "2")
    (set_attr "type" "muls")]
 )
@@ -159,7 +159,7 @@ 
 	(and:SI (match_operand:SI 1 "register_operand" "%0")
 		(match_operand:SI 2 "register_operand" "l")))]
   "TARGET_THUMB1"
-  "and\\t%0, %2"
+  "ands\\t%0, %2"
   [(set_attr "length" "2")
    (set_attr "type"  "logic_imm")
    (set_attr "conds" "set")])
@@ -202,7 +202,7 @@ 
 	(and:SI (not:SI (match_operand:SI 1 "register_operand" "l"))
 		(match_operand:SI         2 "register_operand" "0")))]
   "TARGET_THUMB1"
-  "bic\\t%0, %1"
+  "bics\\t%0, %1"
   [(set_attr "length" "2")
    (set_attr "conds" "set")
    (set_attr "type" "logics_reg")]
@@ -213,7 +213,7 @@ 
 	(ior:SI (match_operand:SI 1 "register_operand" "%0")
 		(match_operand:SI 2 "register_operand" "l")))]
   "TARGET_THUMB1"
-  "orr\\t%0, %2"
+  "orrs\\t%0, %2"
   [(set_attr "length" "2")
    (set_attr "conds" "set")
    (set_attr "type" "logics_reg")])
@@ -223,7 +223,7 @@ 
 	(xor:SI (match_operand:SI 1 "register_operand" "%0")
 		(match_operand:SI 2 "register_operand" "l")))]
   "TARGET_THUMB1"
-  "eor\\t%0, %2"
+  "eors\\t%0, %2"
   [(set_attr "length" "2")
    (set_attr "conds" "set")
    (set_attr "type" "logics_reg")]
@@ -234,7 +234,7 @@ 
 	(ashift:SI (match_operand:SI 1 "register_operand" "l,0")
 		   (match_operand:SI 2 "nonmemory_operand" "N,l")))]
   "TARGET_THUMB1"
-  "lsl\\t%0, %1, %2"
+  "lsls\\t%0, %1, %2"
   [(set_attr "length" "2")
    (set_attr "type" "shift_imm,shift_reg")
    (set_attr "conds" "set")])
@@ -244,7 +244,7 @@ 
 	(ashiftrt:SI (match_operand:SI 1 "register_operand" "l,0")
 		     (match_operand:SI 2 "nonmemory_operand" "N,l")))]
   "TARGET_THUMB1"
-  "asr\\t%0, %1, %2"
+  "asrs\\t%0, %1, %2"
   [(set_attr "length" "2")
    (set_attr "type" "shift_imm,shift_reg")
    (set_attr "conds" "set")])
@@ -254,7 +254,7 @@ 
 	(lshiftrt:SI (match_operand:SI 1 "register_operand" "l,0")
 		     (match_operand:SI 2 "nonmemory_operand" "N,l")))]
   "TARGET_THUMB1"
-  "lsr\\t%0, %1, %2"
+  "lsrs\\t%0, %1, %2"
   [(set_attr "length" "2")
    (set_attr "type" "shift_imm,shift_reg")
    (set_attr "conds" "set")])
@@ -264,7 +264,7 @@ 
 	(rotatert:SI (match_operand:SI 1 "register_operand" "0")
 		     (match_operand:SI 2 "register_operand" "l")))]
   "TARGET_THUMB1"
-  "ror\\t%0, %0, %2"
+  "rors\\t%0, %0, %2"
   [(set_attr "type" "shift_reg")
    (set_attr "length" "2")]
 )
@@ -274,7 +274,7 @@ 
 	(neg:DI (match_operand:DI 1 "register_operand" "l")))
    (clobber (reg:CC CC_REGNUM))]
   "TARGET_THUMB1"
-  "mov\\t%R0, #0\;neg\\t%Q0, %Q1\;sbc\\t%R0, %R1"
+  "movs\\t%R0, #0\;rsbs\\t%Q0, %Q1, #0\;sbcs\\t%R0, %R1"
   [(set_attr "length" "6")
    (set_attr "type" "multiple")]
 )
@@ -283,7 +283,7 @@ 
   [(set (match_operand:SI         0 "register_operand" "=l")
 	(neg:SI (match_operand:SI 1 "register_operand" "l")))]
   "TARGET_THUMB1"
-  "neg\\t%0, %1"
+  "rsbs\\t%0, %1, #0"
   [(set_attr "length" "2")
    (set_attr "type" "alu_imm")]
 )
@@ -322,7 +322,7 @@ 
   [(set (match_operand:SI         0 "register_operand" "=l")
 	(not:SI (match_operand:SI 1 "register_operand"  "l")))]
   "TARGET_THUMB1"
-  "mvn\\t%0, %1"
+  "mvns\\t%0, %1"
   [(set_attr "length" "2")
    (set_attr "type" "mvn_reg")]
 )
@@ -456,7 +456,7 @@ 
       ops[3] = ops[0];
     else
       ops[3] = operands[2];
-    output_asm_insn (\"mov\\t%3, %2\;ldrsh\\t%0, [%1, %3]\", ops);
+    output_asm_insn (\"movs\\t%3, %2\;ldrsh\\t%0, [%1, %3]\", ops);
     return \"\";
   }"
   [(set_attr_alternative "length"
@@ -586,10 +586,10 @@ 
 	return \"add\\t%0,  %1,  #0\;add\\t%H0, %H1, #0\";
       return   \"add\\t%H0, %H1, #0\;add\\t%0,  %1,  #0\";
     case 1:
-      return \"mov\\t%Q0, %1\;mov\\t%R0, #0\";
+      return \"movs\\t%Q0, %1\;movs\\t%R0, #0\";
     case 2:
       operands[1] = GEN_INT (- INTVAL (operands[1]));
-      return \"mov\\t%Q0, %1\;neg\\t%Q0, %Q0\;asr\\t%R0, %Q0, #31\";
+      return \"movs\\t%Q0, %1\;rsbs\\t%Q0, %Q0, #0\;asrs\\t%R0, %Q0, #31\";
     case 3:
       return \"ldmia\\t%1, {%0, %H0}\";
     case 4:
@@ -619,8 +619,8 @@ 
    && (   register_operand (operands[0], SImode)
        || register_operand (operands[1], SImode))"
   "@
-   mov	%0, %1
-   mov	%0, %1
+   movs	%0, %1
+   movs	%0, %1
    #
    #
    ldmia\\t%1, {%0}
@@ -715,11 +715,11 @@ 
   "*
   switch (which_alternative)
     {
-    case 0: return \"add	%0, %1, #0\";
+    case 0: return \"adds	%0, %1, #0\";
     case 2: return \"strh	%1, %0\";
     case 3: return \"mov	%0, %1\";
     case 4: return \"mov	%0, %1\";
-    case 5: return \"mov	%0, %1\";
+    case 5: return \"movs	%0, %1\";
     default: gcc_unreachable ();
     case 1:
       /* The stack pointer can end up being taken as an index register.
@@ -767,12 +767,12 @@ 
    && (   register_operand (operands[0], QImode)
        || register_operand (operands[1], QImode))"
   "@
-   add\\t%0, %1, #0
+   adds\\t%0, %1, #0
    ldrb\\t%0, %1
    strb\\t%1, %0
    mov\\t%0, %1
    mov\\t%0, %1
-   mov\\t%0, %1"
+   movs\\t%0, %1"
   [(set_attr "length" "2")
    (set_attr "type" "alu_imm,load1,store1,mov_reg,mov_imm,mov_imm")
    (set_attr "pool_range" "*,32,*,*,*,*")
@@ -819,7 +819,7 @@ 
    && (   register_operand (operands[0], SFmode)
        || register_operand (operands[1], SFmode))"
   "@
-   add\\t%0, %1, #0
+   adds\\t%0, %1, #0
    ldmia\\t%1, {%0}
    stmia\\t%0, {%1}
    ldr\\t%0, %1
@@ -848,8 +848,8 @@ 
     default:
     case 0:
       if (REGNO (operands[1]) == REGNO (operands[0]) + 1)
-	return \"add\\t%0, %1, #0\;add\\t%H0, %H1, #0\";
-      return \"add\\t%H0, %H1, #0\;add\\t%0, %1, #0\";
+	return \"adds\\t%0, %1, #0\;adds\\t%H0, %H1, #0\";
+      return \"adds\\t%H0, %H1, #0\;adds\\t%0, %1, #0\";
     case 1:
       return \"ldmia\\t%1, {%0, %H0}\";
     case 2:
@@ -1013,7 +1013,7 @@ 
    (clobber (match_scratch:SI 0 "=l,l"))]
   "TARGET_THUMB1"
   "*
-  output_asm_insn (\"add\\t%0, %1, #%n2\", operands);
+  output_asm_insn (\"adds\\t%0, %1, #%n2\", operands);
 
   switch (get_attr_length (insn))
     {
@@ -1095,7 +1095,7 @@ 
   op[1] = operands[1];
   op[2] = GEN_INT (32 - 1 - INTVAL (operands[2]));
 
-  output_asm_insn (\"lsl\\t%0, %1, %2\", op);
+  output_asm_insn (\"lsls\\t%0, %1, %2\", op);
   switch (get_attr_length (insn))
     {
     case 4:  return \"b%d0\\t%l3\";
@@ -1140,7 +1140,7 @@ 
   op[1] = operands[1];
   op[2] = GEN_INT (32 - INTVAL (operands[2]));
 
-  output_asm_insn (\"lsl\\t%0, %1, %2\", op);
+  output_asm_insn (\"lsls\\t%0, %1, %2\", op);
   switch (get_attr_length (insn))
     {
     case 4:  return \"b%d0\\t%l3\";
@@ -1224,20 +1224,20 @@ 
      cond[1] = operands[4];
 
      if (which_alternative == 0)
-       output_asm_insn (\"sub\\t%0, %2, #1\", operands);
+       output_asm_insn (\"subs\\t%0, %2, #1\", operands);
      else if (which_alternative == 1)
        {
 	 /* We must provide an alternative for a hi reg because reload
 	    cannot handle output reloads on a jump instruction, but we
 	    can't subtract into that.  Fortunately a mov from lo to hi
 	    does not clobber the condition codes.  */
-	 output_asm_insn (\"sub\\t%1, %2, #1\", operands);
+	 output_asm_insn (\"subs\\t%1, %2, #1\", operands);
 	 output_asm_insn (\"mov\\t%0, %1\", operands);
        }
      else
        {
 	 /* Similarly, but the target is memory.  */
-	 output_asm_insn (\"sub\\t%1, %2, #1\", operands);
+	 output_asm_insn (\"subs\\t%1, %2, #1\", operands);
 	 output_asm_insn (\"str\\t%1, %0\", operands);
        }
 
@@ -1336,9 +1336,9 @@ 
      cond[2] = operands[3];
 
      if (CONST_INT_P (cond[2]) && INTVAL (cond[2]) < 0)
-       output_asm_insn (\"sub\\t%0, %1, #%n2\", cond);
+       output_asm_insn (\"subs\\t%0, %1, #%n2\", cond);
      else
-       output_asm_insn (\"add\\t%0, %1, %2\", cond);
+       output_asm_insn (\"adds\\t%0, %1, %2\", cond);
 
      if (which_alternative >= 2
 	 && which_alternative < 4)
@@ -1418,13 +1418,13 @@ 
 	 break;
        case 2:
 	 if (INTVAL (operands[2]) < 0)
-	   output_asm_insn (\"sub\t%0, %1, %2\", operands);
+	   output_asm_insn (\"subs\t%0, %1, %2\", operands);
 	 else
 	   output_asm_insn (\"add\t%0, %1, %2\", operands);
 	 break;
        case 3:
 	 if (INTVAL (operands[2]) < 0)
-	   output_asm_insn (\"sub\t%0, %0, %2\", operands);
+	   output_asm_insn (\"subs\t%0, %0, %2\", operands);
 	 else
 	   output_asm_insn (\"add\t%0, %0, %2\", operands);
 	 break;
@@ -1465,7 +1465,7 @@ 
 		      (const_int 0)))
    (clobber (match_scratch:SI 1 "=l"))]
   "TARGET_THUMB1"
-  "orr\\t%1, %Q0, %R0"
+  "orrs\\t%1, %Q0, %R0"
   [(set_attr "conds" "set")
    (set_attr "length" "2")
    (set_attr "type" "logics_reg")]
@@ -1498,8 +1498,8 @@ 
    (clobber (match_operand:SI 2 "s_register_operand" "=X,l"))]
   "TARGET_THUMB1"
   "@
-   neg\\t%0, %1\;adc\\t%0, %0, %1
-   neg\\t%2, %1\;adc\\t%0, %1, %2"
+   rsbs\\t%0, %1, #0\;adcs\\t%0, %0, %1
+   rsbs\\t%2, %1, #0\;adcs\\t%0, %1, %2"
   [(set_attr "length" "4")
    (set_attr "type" "multiple")]
 )
@@ -1510,7 +1510,7 @@ 
 	       (const_int 0)))
    (clobber (match_operand:SI 2 "s_register_operand" "=l"))]
   "TARGET_THUMB1"
-  "sub\\t%2, %1, #1\;sbc\\t%0, %1, %2"
+  "subs\\t%2, %1, #1\;sbcs\\t%0, %1, %2"
   [(set_attr "length" "4")]
 )
 
@@ -1520,7 +1520,7 @@ 
         (neg:SI (ltu:SI (match_operand:SI 1 "s_register_operand" "l,*h")
 			(match_operand:SI 2 "thumb1_cmp_operand" "lI*h,*r"))))]
   "TARGET_THUMB1"
-  "cmp\\t%1, %2\;sbc\\t%0, %0, %0"
+  "cmp\\t%1, %2\;sbcs\\t%0, %0, %0"
   [(set_attr "length" "4")
    (set_attr "type" "multiple")]
 )
@@ -1548,7 +1548,7 @@ 
 		 (geu:SI (match_operand:SI 3 "s_register_operand" "l")
 			 (match_operand:SI 4 "thumb1_cmp_operand" "lI"))))]
   "TARGET_THUMB1"
-  "cmp\\t%3, %4\;adc\\t%0, %1, %2"
+  "cmp\\t%3, %4\;adcs\\t%0, %1, %2"
   [(set_attr "length" "4")
    (set_attr "type" "multiple")]
 )
diff --git a/gcc/testsuite/gcc.target/arm/anddi_notdi-1.c b/gcc/testsuite/gcc.target/arm/anddi_notdi-1.c
index cfb33fc..d9489d3 100644
--- a/gcc/testsuite/gcc.target/arm/anddi_notdi-1.c
+++ b/gcc/testsuite/gcc.target/arm/anddi_notdi-1.c
@@ -60,6 +60,7 @@  int main ()
   return 0;
 }
 
-/* { dg-final { scan-assembler-times "bic\t" 6 } } */
+/* { dg-final { scan-assembler-times "bics\t" 6 { target arm_thumb1 } } } */
+/* { dg-final { scan-assembler-times "bic\t" 6 { target { ! arm_thumb1 } } } } */
 
 /* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/pr40956.c b/gcc/testsuite/gcc.target/arm/pr40956.c
index 167cdc6..4fefa49 100644
--- a/gcc/testsuite/gcc.target/arm/pr40956.c
+++ b/gcc/testsuite/gcc.target/arm/pr40956.c
@@ -1,7 +1,8 @@ 
 /* { dg-options "-Os -fpic" }  */
 /* { dg-require-effective-target fpic } */
 /* Make sure the constant "0" is loaded into register only once.  */
-/* { dg-final { scan-assembler-times "mov\[\\t \]*r., #0" 1 } } */
+/* { dg-final { scan-assembler-times "movs\[\\t \]*r., #0" 1 { target arm_thumb1 } } } */
+/* { dg-final { scan-assembler-times "mov\[\\t \]*r., #0" 1 { target { ! arm_thumb1 } } } } */
 
 int foo(int p, int* q)
 {
diff --git a/gcc/testsuite/gcc.target/arm/thumb1-Os-mult.c b/gcc/testsuite/gcc.target/arm/thumb1-Os-mult.c
index 31b8bd6..08d735c 100644
--- a/gcc/testsuite/gcc.target/arm/thumb1-Os-mult.c
+++ b/gcc/testsuite/gcc.target/arm/thumb1-Os-mult.c
@@ -9,4 +9,4 @@  mymul3 (int x)
   return x * 0x555;
 }
 
-/* { dg-final { scan-assembler "mul\[\\t \]*r.,\[\\t \]*r." } } */
+/* { dg-final { scan-assembler "muls\[\\t \]*r.,\[\\t \]*r." } } */
diff --git a/gcc/testsuite/gcc.target/arm/thumb1-load-64bit-constant-3.c b/gcc/testsuite/gcc.target/arm/thumb1-load-64bit-constant-3.c
index cf4d0be..2e434fa 100644
--- a/gcc/testsuite/gcc.target/arm/thumb1-load-64bit-constant-3.c
+++ b/gcc/testsuite/gcc.target/arm/thumb1-load-64bit-constant-3.c
@@ -10,5 +10,5 @@  foo (int len)
 }
 
 /* { dg-final { scan-assembler-not "ldr" } } */
-/* { dg-final { scan-assembler-times "neg" 1 } } */
+/* { dg-final { scan-assembler-times "negs" 1 } } */