ARM-Options.html 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- This file documents the GNU Assembler "as".
  4. Copyright (C) 1991-2021 Free Software Foundation, Inc.
  5. Permission is granted to copy, distribute and/or modify this document
  6. under the terms of the GNU Free Documentation License, Version 1.3
  7. or any later version published by the Free Software Foundation;
  8. with no Invariant Sections, with no Front-Cover Texts, and with no
  9. Back-Cover Texts. A copy of the license is included in the
  10. section entitled "GNU Free Documentation License".
  11. -->
  12. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  15. <title>ARM Options (Using as)</title>
  16. <meta name="description" content="ARM Options (Using as)">
  17. <meta name="keywords" content="ARM Options (Using as)">
  18. <meta name="resource-type" content="document">
  19. <meta name="distribution" content="global">
  20. <meta name="Generator" content="makeinfo">
  21. <link href="index.html#Top" rel="start" title="Top">
  22. <link href="AS-Index.html#AS-Index" rel="index" title="AS Index">
  23. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  24. <link href="ARM_002dDependent.html#ARM_002dDependent" rel="up" title="ARM-Dependent">
  25. <link href="ARM-Syntax.html#ARM-Syntax" rel="next" title="ARM Syntax">
  26. <link href="ARM_002dDependent.html#ARM_002dDependent" rel="prev" title="ARM-Dependent">
  27. <style type="text/css">
  28. <!--
  29. a.summary-letter {text-decoration: none}
  30. blockquote.indentedblock {margin-right: 0em}
  31. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  32. blockquote.smallquotation {font-size: smaller}
  33. div.display {margin-left: 3.2em}
  34. div.example {margin-left: 3.2em}
  35. div.lisp {margin-left: 3.2em}
  36. div.smalldisplay {margin-left: 3.2em}
  37. div.smallexample {margin-left: 3.2em}
  38. div.smalllisp {margin-left: 3.2em}
  39. kbd {font-style: oblique}
  40. pre.display {font-family: inherit}
  41. pre.format {font-family: inherit}
  42. pre.menu-comment {font-family: serif}
  43. pre.menu-preformatted {font-family: serif}
  44. pre.smalldisplay {font-family: inherit; font-size: smaller}
  45. pre.smallexample {font-size: smaller}
  46. pre.smallformat {font-family: inherit; font-size: smaller}
  47. pre.smalllisp {font-size: smaller}
  48. span.nolinebreak {white-space: nowrap}
  49. span.roman {font-family: initial; font-weight: normal}
  50. span.sansserif {font-family: sans-serif; font-weight: normal}
  51. ul.no-bullet {list-style: none}
  52. -->
  53. </style>
  54. </head>
  55. <body lang="en">
  56. <a name="ARM-Options"></a>
  57. <div class="header">
  58. <p>
  59. Next: <a href="ARM-Syntax.html#ARM-Syntax" accesskey="n" rel="next">ARM Syntax</a>, Up: <a href="ARM_002dDependent.html#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="AS-Index.html#AS-Index" title="Index" rel="index">Index</a>]</p>
  60. </div>
  61. <hr>
  62. <a name="Options-3"></a>
  63. <h4 class="subsection">9.4.1 Options</h4>
  64. <a name="index-ARM-options-_0028none_0029"></a>
  65. <a name="index-options-for-ARM-_0028none_0029"></a>
  66. <dl compact="compact">
  67. <dd>
  68. <a name="index-_002dmcpu_003d-command_002dline-option_002c-ARM"></a>
  69. </dd>
  70. <dt><code>-mcpu=<var>processor</var>[+<var>extension</var>&hellip;]</code></dt>
  71. <dd><p>This option specifies the target processor. The assembler will issue an
  72. error message if an attempt is made to assemble an instruction which
  73. will not execute on the target processor. The following processor names are
  74. recognized:
  75. <code>arm1</code>,
  76. <code>arm2</code>,
  77. <code>arm250</code>,
  78. <code>arm3</code>,
  79. <code>arm6</code>,
  80. <code>arm60</code>,
  81. <code>arm600</code>,
  82. <code>arm610</code>,
  83. <code>arm620</code>,
  84. <code>arm7</code>,
  85. <code>arm7m</code>,
  86. <code>arm7d</code>,
  87. <code>arm7dm</code>,
  88. <code>arm7di</code>,
  89. <code>arm7dmi</code>,
  90. <code>arm70</code>,
  91. <code>arm700</code>,
  92. <code>arm700i</code>,
  93. <code>arm710</code>,
  94. <code>arm710t</code>,
  95. <code>arm720</code>,
  96. <code>arm720t</code>,
  97. <code>arm740t</code>,
  98. <code>arm710c</code>,
  99. <code>arm7100</code>,
  100. <code>arm7500</code>,
  101. <code>arm7500fe</code>,
  102. <code>arm7t</code>,
  103. <code>arm7tdmi</code>,
  104. <code>arm7tdmi-s</code>,
  105. <code>arm8</code>,
  106. <code>arm810</code>,
  107. <code>strongarm</code>,
  108. <code>strongarm1</code>,
  109. <code>strongarm110</code>,
  110. <code>strongarm1100</code>,
  111. <code>strongarm1110</code>,
  112. <code>arm9</code>,
  113. <code>arm920</code>,
  114. <code>arm920t</code>,
  115. <code>arm922t</code>,
  116. <code>arm940t</code>,
  117. <code>arm9tdmi</code>,
  118. <code>fa526</code> (Faraday FA526 processor),
  119. <code>fa626</code> (Faraday FA626 processor),
  120. <code>arm9e</code>,
  121. <code>arm926e</code>,
  122. <code>arm926ej-s</code>,
  123. <code>arm946e-r0</code>,
  124. <code>arm946e</code>,
  125. <code>arm946e-s</code>,
  126. <code>arm966e-r0</code>,
  127. <code>arm966e</code>,
  128. <code>arm966e-s</code>,
  129. <code>arm968e-s</code>,
  130. <code>arm10t</code>,
  131. <code>arm10tdmi</code>,
  132. <code>arm10e</code>,
  133. <code>arm1020</code>,
  134. <code>arm1020t</code>,
  135. <code>arm1020e</code>,
  136. <code>arm1022e</code>,
  137. <code>arm1026ej-s</code>,
  138. <code>fa606te</code> (Faraday FA606TE processor),
  139. <code>fa616te</code> (Faraday FA616TE processor),
  140. <code>fa626te</code> (Faraday FA626TE processor),
  141. <code>fmp626</code> (Faraday FMP626 processor),
  142. <code>fa726te</code> (Faraday FA726TE processor),
  143. <code>arm1136j-s</code>,
  144. <code>arm1136jf-s</code>,
  145. <code>arm1156t2-s</code>,
  146. <code>arm1156t2f-s</code>,
  147. <code>arm1176jz-s</code>,
  148. <code>arm1176jzf-s</code>,
  149. <code>mpcore</code>,
  150. <code>mpcorenovfp</code>,
  151. <code>cortex-a5</code>,
  152. <code>cortex-a7</code>,
  153. <code>cortex-a8</code>,
  154. <code>cortex-a9</code>,
  155. <code>cortex-a15</code>,
  156. <code>cortex-a17</code>,
  157. <code>cortex-a32</code>,
  158. <code>cortex-a35</code>,
  159. <code>cortex-a53</code>,
  160. <code>cortex-a55</code>,
  161. <code>cortex-a57</code>,
  162. <code>cortex-a72</code>,
  163. <code>cortex-a73</code>,
  164. <code>cortex-a75</code>,
  165. <code>cortex-a76</code>,
  166. <code>cortex-a76ae</code>,
  167. <code>cortex-a77</code>,
  168. <code>cortex-a78</code>,
  169. <code>cortex-a78ae</code>,
  170. <code>cortex-a78c</code>,
  171. <code>ares</code>,
  172. <code>cortex-r4</code>,
  173. <code>cortex-r4f</code>,
  174. <code>cortex-r5</code>,
  175. <code>cortex-r7</code>,
  176. <code>cortex-r8</code>,
  177. <code>cortex-r52</code>,
  178. <code>cortex-m35p</code>,
  179. <code>cortex-m33</code>,
  180. <code>cortex-m23</code>,
  181. <code>cortex-m7</code>,
  182. <code>cortex-m4</code>,
  183. <code>cortex-m3</code>,
  184. <code>cortex-m1</code>,
  185. <code>cortex-m0</code>,
  186. <code>cortex-m0plus</code>,
  187. <code>cortex-x1</code>,
  188. <code>exynos-m1</code>,
  189. <code>marvell-pj4</code>,
  190. <code>marvell-whitney</code>,
  191. <code>neoverse-n1</code>,
  192. <code>neoverse-n2</code>,
  193. <code>neoverse-v1</code>,
  194. <code>xgene1</code>,
  195. <code>xgene2</code>,
  196. <code>ep9312</code> (ARM920 with Cirrus Maverick coprocessor),
  197. <code>i80200</code> (Intel XScale processor)
  198. <code>iwmmxt</code> (Intel XScale processor with Wireless MMX technology coprocessor)
  199. and
  200. <code>xscale</code>.
  201. The special name <code>all</code> may be used to allow the
  202. assembler to accept instructions valid for any ARM processor.
  203. </p>
  204. <p>In addition to the basic instruction set, the assembler can be told to
  205. accept various extension mnemonics that extend the processor using the
  206. co-processor instruction space. For example, <code>-mcpu=arm920+maverick</code>
  207. is equivalent to specifying <code>-mcpu=ep9312</code>.
  208. </p>
  209. <p>Multiple extensions may be specified, separated by a <code>+</code>. The
  210. extensions should be specified in ascending alphabetical order.
  211. </p>
  212. <p>Some extensions may be restricted to particular architectures; this is
  213. documented in the list of extensions below.
  214. </p>
  215. <p>Extension mnemonics may also be removed from those the assembler accepts.
  216. This is done be prepending <code>no</code> to the option that adds the extension.
  217. Extensions that are removed should be listed after all extensions which have
  218. been added, again in ascending alphabetical order. For example,
  219. <code>-mcpu=ep9312+nomaverick</code> is equivalent to specifying <code>-mcpu=arm920</code>.
  220. </p>
  221. <p>The following extensions are currently supported:
  222. <code>bf16</code> (BFloat16 extensions for v8.6-A architecture),
  223. <code>i8mm</code> (Int8 Matrix Multiply extensions for v8.6-A architecture),
  224. <code>crc</code>
  225. <code>crypto</code> (Cryptography Extensions for v8-A architecture, implies <code>fp+simd</code>),
  226. <code>dotprod</code> (Dot Product Extensions for v8.2-A architecture, implies <code>fp+simd</code>),
  227. <code>fp</code> (Floating Point Extensions for v8-A architecture),
  228. <code>fp16</code> (FP16 Extensions for v8.2-A architecture, implies <code>fp</code>),
  229. <code>fp16fml</code> (FP16 Floating Point Multiplication Variant Extensions for v8.2-A architecture, implies <code>fp16</code>),
  230. <code>idiv</code> (Integer Divide Extensions for v7-A and v7-R architectures),
  231. <code>iwmmxt</code>,
  232. <code>iwmmxt2</code>,
  233. <code>xscale</code>,
  234. <code>maverick</code>,
  235. <code>mp</code> (Multiprocessing Extensions for v7-A and v7-R
  236. architectures),
  237. <code>os</code> (Operating System for v6M architecture),
  238. <code>predres</code> (Execution and Data Prediction Restriction Instruction for
  239. v8-A architectures, added by default from v8.5-A),
  240. <code>sb</code> (Speculation Barrier Instruction for v8-A architectures, added by
  241. default from v8.5-A),
  242. <code>sec</code> (Security Extensions for v6K and v7-A architectures),
  243. <code>simd</code> (Advanced SIMD Extensions for v8-A architecture, implies <code>fp</code>),
  244. <code>virt</code> (Virtualization Extensions for v7-A architecture, implies
  245. <code>idiv</code>),
  246. <code>pan</code> (Privileged Access Never Extensions for v8-A architecture),
  247. <code>ras</code> (Reliability, Availability and Serviceability extensions
  248. for v8-A architecture),
  249. <code>rdma</code> (ARMv8.1 Advanced SIMD extensions for v8-A architecture, implies
  250. <code>simd</code>)
  251. and
  252. <code>xscale</code>.
  253. </p>
  254. <a name="index-_002dmarch_003d-command_002dline-option_002c-ARM"></a>
  255. </dd>
  256. <dt><code>-march=<var>architecture</var>[+<var>extension</var>&hellip;]</code></dt>
  257. <dd><p>This option specifies the target architecture. The assembler will issue
  258. an error message if an attempt is made to assemble an instruction which
  259. will not execute on the target architecture. The following architecture
  260. names are recognized:
  261. <code>armv1</code>,
  262. <code>armv2</code>,
  263. <code>armv2a</code>,
  264. <code>armv2s</code>,
  265. <code>armv3</code>,
  266. <code>armv3m</code>,
  267. <code>armv4</code>,
  268. <code>armv4xm</code>,
  269. <code>armv4t</code>,
  270. <code>armv4txm</code>,
  271. <code>armv5</code>,
  272. <code>armv5t</code>,
  273. <code>armv5txm</code>,
  274. <code>armv5te</code>,
  275. <code>armv5texp</code>,
  276. <code>armv6</code>,
  277. <code>armv6j</code>,
  278. <code>armv6k</code>,
  279. <code>armv6z</code>,
  280. <code>armv6kz</code>,
  281. <code>armv6-m</code>,
  282. <code>armv6s-m</code>,
  283. <code>armv7</code>,
  284. <code>armv7-a</code>,
  285. <code>armv7ve</code>,
  286. <code>armv7-r</code>,
  287. <code>armv7-m</code>,
  288. <code>armv7e-m</code>,
  289. <code>armv8-a</code>,
  290. <code>armv8.1-a</code>,
  291. <code>armv8.2-a</code>,
  292. <code>armv8.3-a</code>,
  293. <code>armv8-r</code>,
  294. <code>armv8.4-a</code>,
  295. <code>armv8.5-a</code>,
  296. <code>armv8-m.base</code>,
  297. <code>armv8-m.main</code>,
  298. <code>armv8.1-m.main</code>,
  299. <code>armv8.6-a</code>,
  300. <code>iwmmxt</code>,
  301. <code>iwmmxt2</code>
  302. and
  303. <code>xscale</code>.
  304. If both <code>-mcpu</code> and
  305. <code>-march</code> are specified, the assembler will use
  306. the setting for <code>-mcpu</code>.
  307. </p>
  308. <p>The architecture option can be extended with a set extension options. These
  309. extensions are context sensitive, i.e. the same extension may mean different
  310. things when used with different architectures. When used together with a
  311. <code>-mfpu</code> option, the union of both feature enablement is taken.
  312. See their availability and meaning below:
  313. </p>
  314. <p>For <code>armv5te</code>, <code>armv5texp</code>, <code>armv5tej</code>, <code>armv6</code>, <code>armv6j</code>, <code>armv6k</code>, <code>armv6z</code>, <code>armv6kz</code>, <code>armv6zk</code>, <code>armv6t2</code>, <code>armv6kt2</code> and <code>armv6zt2</code>:
  315. </p>
  316. <p><code>+fp</code>: Enables VFPv2 instructions.
  317. <code>+nofp</code>: Disables all FPU instrunctions.
  318. </p>
  319. <p>For <code>armv7</code>:
  320. </p>
  321. <p><code>+fp</code>: Enables VFPv3 instructions with 16 double-word registers.
  322. <code>+nofp</code>: Disables all FPU instructions.
  323. </p>
  324. <p>For <code>armv7-a</code>:
  325. </p>
  326. <p><code>+fp</code>: Enables VFPv3 instructions with 16 double-word registers.
  327. <code>+vfpv3-d16</code>: Alias for <code>+fp</code>.
  328. <code>+vfpv3</code>: Enables VFPv3 instructions with 32 double-word registers.
  329. <code>+vfpv3-d16-fp16</code>: Enables VFPv3 with half precision floating-point
  330. conversion instructions and 16 double-word registers.
  331. <code>+vfpv3-fp16</code>: Enables VFPv3 with half precision floating-point conversion
  332. instructions and 32 double-word registers.
  333. <code>+vfpv4-d16</code>: Enables VFPv4 instructions with 16 double-word registers.
  334. <code>+vfpv4</code>: Enables VFPv4 instructions with 32 double-word registers.
  335. <code>+simd</code>: Enables VFPv3 and NEONv1 instructions with 32 double-word
  336. registers.
  337. <code>+neon</code>: Alias for <code>+simd</code>.
  338. <code>+neon-vfpv3</code>: Alias for <code>+simd</code>.
  339. <code>+neon-fp16</code>: Enables VFPv3, half precision floating-point conversion and
  340. NEONv1 instructions with 32 double-word registers.
  341. <code>+neon-vfpv4</code>: Enables VFPv4 and NEONv1 with Fused-MAC instructions and 32
  342. double-word registers.
  343. <code>+mp</code>: Enables Multiprocessing Extensions.
  344. <code>+sec</code>: Enables Security Extensions.
  345. <code>+nofp</code>: Disables all FPU and NEON instructions.
  346. <code>+nosimd</code>: Disables all NEON instructions.
  347. </p>
  348. <p>For <code>armv7ve</code>:
  349. </p>
  350. <p><code>+fp</code>: Enables VFPv4 instructions with 16 double-word registers.
  351. <code>+vfpv4-d16</code>: Alias for <code>+fp</code>.
  352. <code>+vfpv3-d16</code>: Enables VFPv3 instructions with 16 double-word registers.
  353. <code>+vfpv3</code>: Enables VFPv3 instructions with 32 double-word registers.
  354. <code>+vfpv3-d16-fp16</code>: Enables VFPv3 with half precision floating-point
  355. conversion instructions and 16 double-word registers.
  356. <code>+vfpv3-fp16</code>: Enables VFPv3 with half precision floating-point conversion
  357. instructions and 32 double-word registers.
  358. <code>+vfpv4</code>: Enables VFPv4 instructions with 32 double-word registers.
  359. <code>+simd</code>: Enables VFPv4 and NEONv1 with Fused-MAC instructions and 32
  360. double-word registers.
  361. <code>+neon-vfpv4</code>: Alias for <code>+simd</code>.
  362. <code>+neon</code>: Enables VFPv3 and NEONv1 instructions with 32 double-word
  363. registers.
  364. <code>+neon-vfpv3</code>: Alias for <code>+neon</code>.
  365. <code>+neon-fp16</code>: Enables VFPv3, half precision floating-point conversion and
  366. NEONv1 instructions with 32 double-word registers.
  367. double-word registers.
  368. <code>+nofp</code>: Disables all FPU and NEON instructions.
  369. <code>+nosimd</code>: Disables all NEON instructions.
  370. </p>
  371. <p>For <code>armv7-r</code>:
  372. </p>
  373. <p><code>+fp.sp</code>: Enables single-precision only VFPv3 instructions with 16
  374. double-word registers.
  375. <code>+vfpv3xd</code>: Alias for <code>+fp.sp</code>.
  376. <code>+fp</code>: Enables VFPv3 instructions with 16 double-word registers.
  377. <code>+vfpv3-d16</code>: Alias for <code>+fp</code>.
  378. <code>+vfpv3xd-fp16</code>: Enables single-precision only VFPv3 and half
  379. floating-point conversion instructions with 16 double-word registers.
  380. <code>+vfpv3-d16-fp16</code>: Enables VFPv3 and half precision floating-point
  381. conversion instructions with 16 double-word registers.
  382. <code>+idiv</code>: Enables integer division instructions in ARM mode.
  383. <code>+nofp</code>: Disables all FPU instructions.
  384. </p>
  385. <p>For <code>armv7e-m</code>:
  386. </p>
  387. <p><code>+fp</code>: Enables single-precision only VFPv4 instructions with 16
  388. double-word registers.
  389. <code>+vfpvf4-sp-d16</code>: Alias for <code>+fp</code>.
  390. <code>+fpv5</code>: Enables single-precision only VFPv5 instructions with 16
  391. double-word registers.
  392. <code>+fp.dp</code>: Enables VFPv5 instructions with 16 double-word registers.
  393. <code>+fpv5-d16&quot;</code>: Alias for <code>+fp.dp</code>.
  394. <code>+nofp</code>: Disables all FPU instructions.
  395. </p>
  396. <p>For <code>armv8-m.main</code>:
  397. </p>
  398. <p><code>+dsp</code>: Enables DSP Extension.
  399. <code>+fp</code>: Enables single-precision only VFPv5 instructions with 16
  400. double-word registers.
  401. <code>+fp.dp</code>: Enables VFPv5 instructions with 16 double-word registers.
  402. <code>+cdecp0</code> (CDE extensions for v8-m architecture with coprocessor 0),
  403. <code>+cdecp1</code> (CDE extensions for v8-m architecture with coprocessor 1),
  404. <code>+cdecp2</code> (CDE extensions for v8-m architecture with coprocessor 2),
  405. <code>+cdecp3</code> (CDE extensions for v8-m architecture with coprocessor 3),
  406. <code>+cdecp4</code> (CDE extensions for v8-m architecture with coprocessor 4),
  407. <code>+cdecp5</code> (CDE extensions for v8-m architecture with coprocessor 5),
  408. <code>+cdecp6</code> (CDE extensions for v8-m architecture with coprocessor 6),
  409. <code>+cdecp7</code> (CDE extensions for v8-m architecture with coprocessor 7),
  410. <code>+nofp</code>: Disables all FPU instructions.
  411. <code>+nodsp</code>: Disables DSP Extension.
  412. </p>
  413. <p>For <code>armv8.1-m.main</code>:
  414. </p>
  415. <p><code>+dsp</code>: Enables DSP Extension.
  416. <code>+fp</code>: Enables single and half precision scalar Floating Point Extensions
  417. for Armv8.1-M Mainline with 16 double-word registers.
  418. <code>+fp.dp</code>: Enables double precision scalar Floating Point Extensions for
  419. Armv8.1-M Mainline, implies <code>+fp</code>.
  420. <code>+mve</code>: Enables integer only M-profile Vector Extension for
  421. Armv8.1-M Mainline, implies <code>+dsp</code>.
  422. <code>+mve.fp</code>: Enables Floating Point M-profile Vector Extension for
  423. Armv8.1-M Mainline, implies <code>+mve</code> and <code>+fp</code>.
  424. <code>+nofp</code>: Disables all FPU instructions.
  425. <code>+nodsp</code>: Disables DSP Extension.
  426. <code>+nomve</code>: Disables all M-profile Vector Extensions.
  427. </p>
  428. <p>For <code>armv8-a</code>:
  429. </p>
  430. <p><code>+crc</code>: Enables CRC32 Extension.
  431. <code>+simd</code>: Enables VFP and NEON for Armv8-A.
  432. <code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies
  433. <code>+simd</code>.
  434. <code>+sb</code>: Enables Speculation Barrier Instruction for Armv8-A.
  435. <code>+predres</code>: Enables Execution and Data Prediction Restriction Instruction
  436. for Armv8-A.
  437. <code>+nofp</code>: Disables all FPU, NEON and Cryptography Extensions.
  438. <code>+nocrypto</code>: Disables Cryptography Extensions.
  439. </p>
  440. <p>For <code>armv8.1-a</code>:
  441. </p>
  442. <p><code>+simd</code>: Enables VFP and NEON for Armv8.1-A.
  443. <code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies
  444. <code>+simd</code>.
  445. <code>+sb</code>: Enables Speculation Barrier Instruction for Armv8-A.
  446. <code>+predres</code>: Enables Execution and Data Prediction Restriction Instruction
  447. for Armv8-A.
  448. <code>+nofp</code>: Disables all FPU, NEON and Cryptography Extensions.
  449. <code>+nocrypto</code>: Disables Cryptography Extensions.
  450. </p>
  451. <p>For <code>armv8.2-a</code> and <code>armv8.3-a</code>:
  452. </p>
  453. <p><code>+simd</code>: Enables VFP and NEON for Armv8.1-A.
  454. <code>+fp16</code>: Enables FP16 Extension for Armv8.2-A, implies <code>+simd</code>.
  455. <code>+fp16fml</code>: Enables FP16 Floating Point Multiplication Variant Extensions
  456. for Armv8.2-A, implies <code>+fp16</code>.
  457. <code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies
  458. <code>+simd</code>.
  459. <code>+dotprod</code>: Enables Dot Product Extensions for Armv8.2-A, implies
  460. <code>+simd</code>.
  461. <code>+sb</code>: Enables Speculation Barrier Instruction for Armv8-A.
  462. <code>+predres</code>: Enables Execution and Data Prediction Restriction Instruction
  463. for Armv8-A.
  464. <code>+nofp</code>: Disables all FPU, NEON, Cryptography and Dot Product Extensions.
  465. <code>+nocrypto</code>: Disables Cryptography Extensions.
  466. </p>
  467. <p>For <code>armv8.4-a</code>:
  468. </p>
  469. <p><code>+simd</code>: Enables VFP and NEON for Armv8.1-A and Dot Product Extensions for
  470. Armv8.2-A.
  471. <code>+fp16</code>: Enables FP16 Floating Point and Floating Point Multiplication
  472. Variant Extensions for Armv8.2-A, implies <code>+simd</code>.
  473. <code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies
  474. <code>+simd</code>.
  475. <code>+sb</code>: Enables Speculation Barrier Instruction for Armv8-A.
  476. <code>+predres</code>: Enables Execution and Data Prediction Restriction Instruction
  477. for Armv8-A.
  478. <code>+nofp</code>: Disables all FPU, NEON, Cryptography and Dot Product Extensions.
  479. <code>+nocryptp</code>: Disables Cryptography Extensions.
  480. </p>
  481. <p>For <code>armv8.5-a</code>:
  482. </p>
  483. <p><code>+simd</code>: Enables VFP and NEON for Armv8.1-A and Dot Product Extensions for
  484. Armv8.2-A.
  485. <code>+fp16</code>: Enables FP16 Floating Point and Floating Point Multiplication
  486. Variant Extensions for Armv8.2-A, implies <code>+simd</code>.
  487. <code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies
  488. <code>+simd</code>.
  489. <code>+nofp</code>: Disables all FPU, NEON, Cryptography and Dot Product Extensions.
  490. <code>+nocryptp</code>: Disables Cryptography Extensions.
  491. </p>
  492. <a name="index-_002dmfpu_003d-command_002dline-option_002c-ARM"></a>
  493. </dd>
  494. <dt><code>-mfpu=<var>floating-point-format</var></code></dt>
  495. <dd>
  496. <p>This option specifies the floating point format to assemble for. The
  497. assembler will issue an error message if an attempt is made to assemble
  498. an instruction which will not execute on the target floating point unit.
  499. The following format options are recognized:
  500. <code>softfpa</code>,
  501. <code>fpe</code>,
  502. <code>fpe2</code>,
  503. <code>fpe3</code>,
  504. <code>fpa</code>,
  505. <code>fpa10</code>,
  506. <code>fpa11</code>,
  507. <code>arm7500fe</code>,
  508. <code>softvfp</code>,
  509. <code>softvfp+vfp</code>,
  510. <code>vfp</code>,
  511. <code>vfp10</code>,
  512. <code>vfp10-r0</code>,
  513. <code>vfp9</code>,
  514. <code>vfpxd</code>,
  515. <code>vfpv2</code>,
  516. <code>vfpv3</code>,
  517. <code>vfpv3-fp16</code>,
  518. <code>vfpv3-d16</code>,
  519. <code>vfpv3-d16-fp16</code>,
  520. <code>vfpv3xd</code>,
  521. <code>vfpv3xd-d16</code>,
  522. <code>vfpv4</code>,
  523. <code>vfpv4-d16</code>,
  524. <code>fpv4-sp-d16</code>,
  525. <code>fpv5-sp-d16</code>,
  526. <code>fpv5-d16</code>,
  527. <code>fp-armv8</code>,
  528. <code>arm1020t</code>,
  529. <code>arm1020e</code>,
  530. <code>arm1136jf-s</code>,
  531. <code>maverick</code>,
  532. <code>neon</code>,
  533. <code>neon-vfpv3</code>,
  534. <code>neon-fp16</code>,
  535. <code>neon-vfpv4</code>,
  536. <code>neon-fp-armv8</code>,
  537. <code>crypto-neon-fp-armv8</code>,
  538. <code>neon-fp-armv8.1</code>
  539. and
  540. <code>crypto-neon-fp-armv8.1</code>.
  541. </p>
  542. <p>In addition to determining which instructions are assembled, this option
  543. also affects the way in which the <code>.double</code> assembler directive behaves
  544. when assembling little-endian code.
  545. </p>
  546. <p>The default is dependent on the processor selected. For Architecture 5 or
  547. later, the default is to assemble for VFP instructions; for earlier
  548. architectures the default is to assemble for FPA instructions.
  549. </p>
  550. <a name="index-_002dmfp16_002dformat_003d-command_002dline-option"></a>
  551. </dd>
  552. <dt><code>-mfp16-format=<var>format</var></code></dt>
  553. <dd><p>This option specifies the half-precision floating point format to use
  554. when assembling floating point numbers emitted by the <code>.float16</code>
  555. directive.
  556. The following format options are recognized:
  557. <code>ieee</code>,
  558. <code>alternative</code>.
  559. If <code>ieee</code> is specified then the IEEE 754-2008 half-precision floating
  560. point format is used, if <code>alternative</code> is specified then the Arm
  561. alternative half-precision format is used. If this option is set on the
  562. command line then the format is fixed and cannot be changed with
  563. the <code>float16_format</code> directive. If this value is not set then
  564. the IEEE 754-2008 format is used until the format is explicitly set with
  565. the <code>float16_format</code> directive.
  566. </p>
  567. <a name="index-_002dmthumb-command_002dline-option_002c-ARM"></a>
  568. </dd>
  569. <dt><code>-mthumb</code></dt>
  570. <dd><p>This option specifies that the assembler should start assembling Thumb
  571. instructions; that is, it should behave as though the file starts with a
  572. <code>.code 16</code> directive.
  573. </p>
  574. <a name="index-_002dmthumb_002dinterwork-command_002dline-option_002c-ARM"></a>
  575. </dd>
  576. <dt><code>-mthumb-interwork</code></dt>
  577. <dd><p>This option specifies that the output generated by the assembler should
  578. be marked as supporting interworking. It also affects the behaviour
  579. of the <code>ADR</code> and <code>ADRL</code> pseudo opcodes.
  580. </p>
  581. <a name="index-_002dmimplicit_002dit-command_002dline-option_002c-ARM"></a>
  582. </dd>
  583. <dt><code>-mimplicit-it=never</code></dt>
  584. <dt><code>-mimplicit-it=always</code></dt>
  585. <dt><code>-mimplicit-it=arm</code></dt>
  586. <dt><code>-mimplicit-it=thumb</code></dt>
  587. <dd><p>The <code>-mimplicit-it</code> option controls the behavior of the assembler when
  588. conditional instructions are not enclosed in IT blocks.
  589. There are four possible behaviors.
  590. If <code>never</code> is specified, such constructs cause a warning in ARM
  591. code and an error in Thumb-2 code.
  592. If <code>always</code> is specified, such constructs are accepted in both
  593. ARM and Thumb-2 code, where the IT instruction is added implicitly.
  594. If <code>arm</code> is specified, such constructs are accepted in ARM code
  595. and cause an error in Thumb-2 code.
  596. If <code>thumb</code> is specified, such constructs cause a warning in ARM
  597. code and are accepted in Thumb-2 code. If you omit this option, the
  598. behavior is equivalent to <code>-mimplicit-it=arm</code>.
  599. </p>
  600. <a name="index-_002dmapcs_002d26-command_002dline-option_002c-ARM"></a>
  601. <a name="index-_002dmapcs_002d32-command_002dline-option_002c-ARM"></a>
  602. </dd>
  603. <dt><code>-mapcs-26</code></dt>
  604. <dt><code>-mapcs-32</code></dt>
  605. <dd><p>These options specify that the output generated by the assembler should
  606. be marked as supporting the indicated version of the Arm Procedure.
  607. Calling Standard.
  608. </p>
  609. <a name="index-_002dmatpcs-command_002dline-option_002c-ARM"></a>
  610. </dd>
  611. <dt><code>-matpcs</code></dt>
  612. <dd><p>This option specifies that the output generated by the assembler should
  613. be marked as supporting the Arm/Thumb Procedure Calling Standard. If
  614. enabled this option will cause the assembler to create an empty
  615. debugging section in the object file called .arm.atpcs. Debuggers can
  616. use this to determine the ABI being used by.
  617. </p>
  618. <a name="index-_002dmapcs_002dfloat-command_002dline-option_002c-ARM"></a>
  619. </dd>
  620. <dt><code>-mapcs-float</code></dt>
  621. <dd><p>This indicates the floating point variant of the APCS should be
  622. used. In this variant floating point arguments are passed in FP
  623. registers rather than integer registers.
  624. </p>
  625. <a name="index-_002dmapcs_002dreentrant-command_002dline-option_002c-ARM"></a>
  626. </dd>
  627. <dt><code>-mapcs-reentrant</code></dt>
  628. <dd><p>This indicates that the reentrant variant of the APCS should be used.
  629. This variant supports position independent code.
  630. </p>
  631. <a name="index-_002dmfloat_002dabi_003d-command_002dline-option_002c-ARM"></a>
  632. </dd>
  633. <dt><code>-mfloat-abi=<var>abi</var></code></dt>
  634. <dd><p>This option specifies that the output generated by the assembler should be
  635. marked as using specified floating point ABI.
  636. The following values are recognized:
  637. <code>soft</code>,
  638. <code>softfp</code>
  639. and
  640. <code>hard</code>.
  641. </p>
  642. <a name="index-_002deabi_003d-command_002dline-option_002c-ARM"></a>
  643. </dd>
  644. <dt><code>-meabi=<var>ver</var></code></dt>
  645. <dd><p>This option specifies which EABI version the produced object files should
  646. conform to.
  647. The following values are recognized:
  648. <code>gnu</code>,
  649. <code>4</code>
  650. and
  651. <code>5</code>.
  652. </p>
  653. <a name="index-_002dEB-command_002dline-option_002c-ARM"></a>
  654. </dd>
  655. <dt><code>-EB</code></dt>
  656. <dd><p>This option specifies that the output generated by the assembler should
  657. be marked as being encoded for a big-endian processor.
  658. </p>
  659. <p>Note: If a program is being built for a system with big-endian data
  660. and little-endian instructions then it should be assembled with the
  661. <samp>-EB</samp> option, (all of it, code and data) and then linked with
  662. the <samp>--be8</samp> option. This will reverse the endianness of the
  663. instructions back to little-endian, but leave the data as big-endian.
  664. </p>
  665. <a name="index-_002dEL-command_002dline-option_002c-ARM"></a>
  666. </dd>
  667. <dt><code>-EL</code></dt>
  668. <dd><p>This option specifies that the output generated by the assembler should
  669. be marked as being encoded for a little-endian processor.
  670. </p>
  671. <a name="index-_002dk-command_002dline-option_002c-ARM"></a>
  672. <a name="index-PIC-code-generation-for-ARM"></a>
  673. </dd>
  674. <dt><code>-k</code></dt>
  675. <dd><p>This option specifies that the output of the assembler should be marked
  676. as position-independent code (PIC).
  677. </p>
  678. <a name="index-_002d_002dfix_002dv4bx-command_002dline-option_002c-ARM"></a>
  679. </dd>
  680. <dt><code>--fix-v4bx</code></dt>
  681. <dd><p>Allow <code>BX</code> instructions in ARMv4 code. This is intended for use with
  682. the linker option of the same name.
  683. </p>
  684. <a name="index-_002dmwarn_002ddeprecated-command_002dline-option_002c-ARM"></a>
  685. </dd>
  686. <dt><code>-mwarn-deprecated</code></dt>
  687. <dt><code>-mno-warn-deprecated</code></dt>
  688. <dd><p>Enable or disable warnings about using deprecated options or
  689. features. The default is to warn.
  690. </p>
  691. <a name="index-_002dmccs-command_002dline-option_002c-ARM"></a>
  692. </dd>
  693. <dt><code>-mccs</code></dt>
  694. <dd><p>Turns on CodeComposer Studio assembly syntax compatibility mode.
  695. </p>
  696. <a name="index-_002dmwarn_002dsyms-command_002dline-option_002c-ARM"></a>
  697. </dd>
  698. <dt><code>-mwarn-syms</code></dt>
  699. <dt><code>-mno-warn-syms</code></dt>
  700. <dd><p>Enable or disable warnings about symbols that match the names of ARM
  701. instructions. The default is to warn.
  702. </p>
  703. </dd>
  704. </dl>
  705. <hr>
  706. <div class="header">
  707. <p>
  708. Next: <a href="ARM-Syntax.html#ARM-Syntax" accesskey="n" rel="next">ARM Syntax</a>, Up: <a href="ARM_002dDependent.html#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="AS-Index.html#AS-Index" title="Index" rel="index">Index</a>]</p>
  709. </div>
  710. </body>
  711. </html>