#### 9.3.1 Options

The following options control the type of CPU for which code is assembled, and generic constraints on the code generated:

`-mcpu=cpu`

  Set architecture type and register usage for cpu. There are also shortcut alias options available for backward compatibility and convenience. Supported values for cpu are

  `arc600`

    Assemble for ARC 600. Aliases: `-mA6`, `-mARC600`.

  `arc600_norm`

    Assemble for ARC 600 with norm instructions.

  `arc600_mul64`

    Assemble for ARC 600 with mul64 instructions.

  `arc600_mul32x16`

    Assemble for ARC 600 with mul32x16 instructions.

  `arc601`

    Assemble for ARC 601. Alias: `-mARC601`.

  `arc601_norm`

    Assemble for ARC 601 with norm instructions.

  `arc601_mul64`

    Assemble for ARC 601 with mul64 instructions.

  `arc601_mul32x16`

    Assemble for ARC 601 with mul32x16 instructions.

  `arc700`

    Assemble for ARC 700. Aliases: `-mA7`, `-mARC700`.

  `arcem`

    Assemble for ARC EM. Aliases: `-mEM`

  `em`

    Assemble for ARC EM, identical as arcem variant.

  `em4`

    Assemble for ARC EM with code-density instructions.

  `em4_dmips`

    Assemble for ARC EM with code-density instructions.

  `em4_fpus`

    Assemble for ARC EM with code-density instructions.

  `em4_fpuda`

    Assemble for ARC EM with code-density, and double-precision assist instructions.

  `quarkse_em`

    Assemble for QuarkSE-EM cpu.

  `archs`

    Assemble for ARC HS. Aliases: `-mHS`, `-mav2hs`.

  `hs`

    Assemble for ARC HS.

  `hs34`

    Assemble for ARC HS34.

  `hs38`

    Assemble for ARC HS38.

  `hs38_linux`

    Assemble for ARC HS38 with floating point support on.

  `nps400`

    Assemble for ARC 700 with NPS-400 extended instructions.

  Note: the `.cpu` directive (see ARC Directives) can to be used to select a core variant from within assembly code.

`-EB`

  This option specifies that the output generated by the assembler should be marked as being encoded for a big-endian processor.

`-EL`

  This option specifies that the output generated by the assembler should be marked as being encoded for a little-endian processor - this is the default.

`-mcode-density`

  This option turns on Code Density instructions. Only valid for ARC EM processors.

`-mrelax`

  Enable support for assembly-time relaxation. The assembler will replace a longer version of an instruction with a shorter one, whenever it is possible.

`-mnps400`

  Enable support for NPS-400 extended instructions.

`-mspfp`

  Enable support for single-precision floating point instructions.

`-mdpfp`

  Enable support for double-precision floating point instructions.

`-mfpuda`

  Enable support for double-precision assist floating point instructions. Only valid for ARC EM processors.