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