RS_002f6000-and-PowerPC-Options.html 62 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Copyright (C) 1988-2017 Free Software Foundation, Inc.
  4. Permission is granted to copy, distribute and/or modify this document
  5. under the terms of the GNU Free Documentation License, Version 1.3 or
  6. any later version published by the Free Software Foundation; with the
  7. Invariant Sections being "Funding Free Software", the Front-Cover
  8. Texts being (a) (see below), and with the Back-Cover Texts being (b)
  9. (see below). A copy of the license is included in the section entitled
  10. "GNU Free Documentation License".
  11. (a) The FSF's Front-Cover Text is:
  12. A GNU Manual
  13. (b) The FSF's Back-Cover Text is:
  14. You have freedom to copy and modify this GNU Manual, like GNU
  15. software. Copies published by the Free Software Foundation raise
  16. funds for GNU development. -->
  17. <!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
  18. <head>
  19. <title>Using the GNU Compiler Collection (GCC): RS/6000 and PowerPC Options</title>
  20. <meta name="description" content="Using the GNU Compiler Collection (GCC): RS/6000 and PowerPC Options">
  21. <meta name="keywords" content="Using the GNU Compiler Collection (GCC): RS/6000 and PowerPC Options">
  22. <meta name="resource-type" content="document">
  23. <meta name="distribution" content="global">
  24. <meta name="Generator" content="makeinfo">
  25. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  26. <link href="index.html#Top" rel="start" title="Top">
  27. <link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
  28. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  29. <link href="Submodel-Options.html#Submodel-Options" rel="up" title="Submodel Options">
  30. <link href="RX-Options.html#RX-Options" rel="next" title="RX Options">
  31. <link href="RL78-Options.html#RL78-Options" rel="prev" title="RL78 Options">
  32. <style type="text/css">
  33. <!--
  34. a.summary-letter {text-decoration: none}
  35. blockquote.smallquotation {font-size: smaller}
  36. div.display {margin-left: 3.2em}
  37. div.example {margin-left: 3.2em}
  38. div.indentedblock {margin-left: 3.2em}
  39. div.lisp {margin-left: 3.2em}
  40. div.smalldisplay {margin-left: 3.2em}
  41. div.smallexample {margin-left: 3.2em}
  42. div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
  43. div.smalllisp {margin-left: 3.2em}
  44. kbd {font-style:oblique}
  45. pre.display {font-family: inherit}
  46. pre.format {font-family: inherit}
  47. pre.menu-comment {font-family: serif}
  48. pre.menu-preformatted {font-family: serif}
  49. pre.smalldisplay {font-family: inherit; font-size: smaller}
  50. pre.smallexample {font-size: smaller}
  51. pre.smallformat {font-family: inherit; font-size: smaller}
  52. pre.smalllisp {font-size: smaller}
  53. span.nocodebreak {white-space:nowrap}
  54. span.nolinebreak {white-space:nowrap}
  55. span.roman {font-family:serif; font-weight:normal}
  56. span.sansserif {font-family:sans-serif; font-weight:normal}
  57. ul.no-bullet {list-style: none}
  58. -->
  59. </style>
  60. </head>
  61. <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
  62. <a name="RS_002f6000-and-PowerPC-Options"></a>
  63. <div class="header">
  64. <p>
  65. Next: <a href="RX-Options.html#RX-Options" accesskey="n" rel="next">RX Options</a>, Previous: <a href="RL78-Options.html#RL78-Options" accesskey="p" rel="prev">RL78 Options</a>, Up: <a href="Submodel-Options.html#Submodel-Options" accesskey="u" rel="up">Submodel Options</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
  66. </div>
  67. <hr>
  68. <a name="IBM-RS_002f6000-and-PowerPC-Options"></a>
  69. <h4 class="subsection">3.18.39 IBM RS/6000 and PowerPC Options</h4>
  70. <a name="index-RS_002f6000-and-PowerPC-Options"></a>
  71. <a name="index-IBM-RS_002f6000-and-PowerPC-Options"></a>
  72. <p>These &lsquo;<samp>-m</samp>&rsquo; options are defined for the IBM RS/6000 and PowerPC:
  73. </p><dl compact="compact">
  74. <dt><code>-mpowerpc-gpopt</code></dt>
  75. <dt><code>-mno-powerpc-gpopt</code></dt>
  76. <dt><code>-mpowerpc-gfxopt</code></dt>
  77. <dt><code>-mno-powerpc-gfxopt</code></dt>
  78. <dt><code>-mpowerpc64</code></dt>
  79. <dt><code>-mno-powerpc64</code></dt>
  80. <dt><code>-mmfcrf</code></dt>
  81. <dt><code>-mno-mfcrf</code></dt>
  82. <dt><code>-mpopcntb</code></dt>
  83. <dt><code>-mno-popcntb</code></dt>
  84. <dt><code>-mpopcntd</code></dt>
  85. <dt><code>-mno-popcntd</code></dt>
  86. <dt><code>-mfprnd</code></dt>
  87. <dt><code>-mno-fprnd</code></dt>
  88. <dt><code>-mcmpb</code></dt>
  89. <dt><code>-mno-cmpb</code></dt>
  90. <dt><code>-mmfpgpr</code></dt>
  91. <dt><code>-mno-mfpgpr</code></dt>
  92. <dt><code>-mhard-dfp</code></dt>
  93. <dt><code>-mno-hard-dfp</code></dt>
  94. <dd><a name="index-mpowerpc_002dgpopt"></a>
  95. <a name="index-mno_002dpowerpc_002dgpopt"></a>
  96. <a name="index-mpowerpc_002dgfxopt"></a>
  97. <a name="index-mno_002dpowerpc_002dgfxopt"></a>
  98. <a name="index-mpowerpc64"></a>
  99. <a name="index-mno_002dpowerpc64"></a>
  100. <a name="index-mmfcrf"></a>
  101. <a name="index-mno_002dmfcrf"></a>
  102. <a name="index-mpopcntb"></a>
  103. <a name="index-mno_002dpopcntb"></a>
  104. <a name="index-mpopcntd"></a>
  105. <a name="index-mno_002dpopcntd"></a>
  106. <a name="index-mfprnd"></a>
  107. <a name="index-mno_002dfprnd"></a>
  108. <a name="index-mcmpb"></a>
  109. <a name="index-mno_002dcmpb"></a>
  110. <a name="index-mmfpgpr"></a>
  111. <a name="index-mno_002dmfpgpr"></a>
  112. <a name="index-mhard_002ddfp"></a>
  113. <a name="index-mno_002dhard_002ddfp"></a>
  114. <p>You use these options to specify which instructions are available on the
  115. processor you are using. The default value of these options is
  116. determined when configuring GCC. Specifying the
  117. <samp>-mcpu=<var>cpu_type</var></samp> overrides the specification of these
  118. options. We recommend you use the <samp>-mcpu=<var>cpu_type</var></samp> option
  119. rather than the options listed above.
  120. </p>
  121. <p>Specifying <samp>-mpowerpc-gpopt</samp> allows
  122. GCC to use the optional PowerPC architecture instructions in the
  123. General Purpose group, including floating-point square root. Specifying
  124. <samp>-mpowerpc-gfxopt</samp> allows GCC to
  125. use the optional PowerPC architecture instructions in the Graphics
  126. group, including floating-point select.
  127. </p>
  128. <p>The <samp>-mmfcrf</samp> option allows GCC to generate the move from
  129. condition register field instruction implemented on the POWER4
  130. processor and other processors that support the PowerPC V2.01
  131. architecture.
  132. The <samp>-mpopcntb</samp> option allows GCC to generate the popcount and
  133. double-precision FP reciprocal estimate instruction implemented on the
  134. POWER5 processor and other processors that support the PowerPC V2.02
  135. architecture.
  136. The <samp>-mpopcntd</samp> option allows GCC to generate the popcount
  137. instruction implemented on the POWER7 processor and other processors
  138. that support the PowerPC V2.06 architecture.
  139. The <samp>-mfprnd</samp> option allows GCC to generate the FP round to
  140. integer instructions implemented on the POWER5+ processor and other
  141. processors that support the PowerPC V2.03 architecture.
  142. The <samp>-mcmpb</samp> option allows GCC to generate the compare bytes
  143. instruction implemented on the POWER6 processor and other processors
  144. that support the PowerPC V2.05 architecture.
  145. The <samp>-mmfpgpr</samp> option allows GCC to generate the FP move to/from
  146. general-purpose register instructions implemented on the POWER6X
  147. processor and other processors that support the extended PowerPC V2.05
  148. architecture.
  149. The <samp>-mhard-dfp</samp> option allows GCC to generate the decimal
  150. floating-point instructions implemented on some POWER processors.
  151. </p>
  152. <p>The <samp>-mpowerpc64</samp> option allows GCC to generate the additional
  153. 64-bit instructions that are found in the full PowerPC64 architecture
  154. and to treat GPRs as 64-bit, doubleword quantities. GCC defaults to
  155. <samp>-mno-powerpc64</samp>.
  156. </p>
  157. </dd>
  158. <dt><code>-mcpu=<var>cpu_type</var></code></dt>
  159. <dd><a name="index-mcpu-9"></a>
  160. <p>Set architecture type, register usage, and
  161. instruction scheduling parameters for machine type <var>cpu_type</var>.
  162. Supported values for <var>cpu_type</var> are &lsquo;<samp>401</samp>&rsquo;, &lsquo;<samp>403</samp>&rsquo;,
  163. &lsquo;<samp>405</samp>&rsquo;, &lsquo;<samp>405fp</samp>&rsquo;, &lsquo;<samp>440</samp>&rsquo;, &lsquo;<samp>440fp</samp>&rsquo;, &lsquo;<samp>464</samp>&rsquo;, &lsquo;<samp>464fp</samp>&rsquo;,
  164. &lsquo;<samp>476</samp>&rsquo;, &lsquo;<samp>476fp</samp>&rsquo;, &lsquo;<samp>505</samp>&rsquo;, &lsquo;<samp>601</samp>&rsquo;, &lsquo;<samp>602</samp>&rsquo;, &lsquo;<samp>603</samp>&rsquo;,
  165. &lsquo;<samp>603e</samp>&rsquo;, &lsquo;<samp>604</samp>&rsquo;, &lsquo;<samp>604e</samp>&rsquo;, &lsquo;<samp>620</samp>&rsquo;, &lsquo;<samp>630</samp>&rsquo;, &lsquo;<samp>740</samp>&rsquo;,
  166. &lsquo;<samp>7400</samp>&rsquo;, &lsquo;<samp>7450</samp>&rsquo;, &lsquo;<samp>750</samp>&rsquo;, &lsquo;<samp>801</samp>&rsquo;, &lsquo;<samp>821</samp>&rsquo;, &lsquo;<samp>823</samp>&rsquo;,
  167. &lsquo;<samp>860</samp>&rsquo;, &lsquo;<samp>970</samp>&rsquo;, &lsquo;<samp>8540</samp>&rsquo;, &lsquo;<samp>a2</samp>&rsquo;, &lsquo;<samp>e300c2</samp>&rsquo;,
  168. &lsquo;<samp>e300c3</samp>&rsquo;, &lsquo;<samp>e500mc</samp>&rsquo;, &lsquo;<samp>e500mc64</samp>&rsquo;, &lsquo;<samp>e5500</samp>&rsquo;,
  169. &lsquo;<samp>e6500</samp>&rsquo;, &lsquo;<samp>ec603e</samp>&rsquo;, &lsquo;<samp>G3</samp>&rsquo;, &lsquo;<samp>G4</samp>&rsquo;, &lsquo;<samp>G5</samp>&rsquo;,
  170. &lsquo;<samp>titan</samp>&rsquo;, &lsquo;<samp>power3</samp>&rsquo;, &lsquo;<samp>power4</samp>&rsquo;, &lsquo;<samp>power5</samp>&rsquo;, &lsquo;<samp>power5+</samp>&rsquo;,
  171. &lsquo;<samp>power6</samp>&rsquo;, &lsquo;<samp>power6x</samp>&rsquo;, &lsquo;<samp>power7</samp>&rsquo;, &lsquo;<samp>power8</samp>&rsquo;,
  172. &lsquo;<samp>power9</samp>&rsquo;, &lsquo;<samp>powerpc</samp>&rsquo;, &lsquo;<samp>powerpc64</samp>&rsquo;, &lsquo;<samp>powerpc64le</samp>&rsquo;,
  173. and &lsquo;<samp>rs64</samp>&rsquo;.
  174. </p>
  175. <p><samp>-mcpu=powerpc</samp>, <samp>-mcpu=powerpc64</samp>, and
  176. <samp>-mcpu=powerpc64le</samp> specify pure 32-bit PowerPC (either
  177. endian), 64-bit big endian PowerPC and 64-bit little endian PowerPC
  178. architecture machine types, with an appropriate, generic processor
  179. model assumed for scheduling purposes.
  180. </p>
  181. <p>The other options specify a specific processor. Code generated under
  182. those options runs best on that processor, and may not run at all on
  183. others.
  184. </p>
  185. <p>The <samp>-mcpu</samp> options automatically enable or disable the
  186. following options:
  187. </p>
  188. <div class="smallexample">
  189. <pre class="smallexample">-maltivec -mfprnd -mhard-float -mmfcrf -mmultiple
  190. -mpopcntb -mpopcntd -mpowerpc64
  191. -mpowerpc-gpopt -mpowerpc-gfxopt -msingle-float -mdouble-float
  192. -msimple-fpu -mstring -mmulhw -mdlmzb -mmfpgpr -mvsx
  193. -mcrypto -mdirect-move -mhtm -mpower8-fusion -mpower8-vector
  194. -mquad-memory -mquad-memory-atomic -mfloat128 -mfloat128-hardware
  195. </pre></div>
  196. <p>The particular options set for any particular CPU varies between
  197. compiler versions, depending on what setting seems to produce optimal
  198. code for that CPU; it doesn&rsquo;t necessarily reflect the actual hardware&rsquo;s
  199. capabilities. If you wish to set an individual option to a particular
  200. value, you may specify it after the <samp>-mcpu</samp> option, like
  201. <samp>-mcpu=970 -mno-altivec</samp>.
  202. </p>
  203. <p>On AIX, the <samp>-maltivec</samp> and <samp>-mpowerpc64</samp> options are
  204. not enabled or disabled by the <samp>-mcpu</samp> option at present because
  205. AIX does not have full support for these options. You may still
  206. enable or disable them individually if you&rsquo;re sure it&rsquo;ll work in your
  207. environment.
  208. </p>
  209. </dd>
  210. <dt><code>-mtune=<var>cpu_type</var></code></dt>
  211. <dd><a name="index-mtune-11"></a>
  212. <p>Set the instruction scheduling parameters for machine type
  213. <var>cpu_type</var>, but do not set the architecture type or register usage,
  214. as <samp>-mcpu=<var>cpu_type</var></samp> does. The same
  215. values for <var>cpu_type</var> are used for <samp>-mtune</samp> as for
  216. <samp>-mcpu</samp>. If both are specified, the code generated uses the
  217. architecture and registers set by <samp>-mcpu</samp>, but the
  218. scheduling parameters set by <samp>-mtune</samp>.
  219. </p>
  220. </dd>
  221. <dt><code>-mcmodel=small</code></dt>
  222. <dd><a name="index-mcmodel_003dsmall-1"></a>
  223. <p>Generate PowerPC64 code for the small model: The TOC is limited to
  224. 64k.
  225. </p>
  226. </dd>
  227. <dt><code>-mcmodel=medium</code></dt>
  228. <dd><a name="index-mcmodel_003dmedium"></a>
  229. <p>Generate PowerPC64 code for the medium model: The TOC and other static
  230. data may be up to a total of 4G in size. This is the default for 64-bit
  231. Linux.
  232. </p>
  233. </dd>
  234. <dt><code>-mcmodel=large</code></dt>
  235. <dd><a name="index-mcmodel_003dlarge-1"></a>
  236. <p>Generate PowerPC64 code for the large model: The TOC may be up to 4G
  237. in size. Other data and code is only limited by the 64-bit address
  238. space.
  239. </p>
  240. </dd>
  241. <dt><code>-maltivec</code></dt>
  242. <dt><code>-mno-altivec</code></dt>
  243. <dd><a name="index-maltivec"></a>
  244. <a name="index-mno_002daltivec"></a>
  245. <p>Generate code that uses (does not use) AltiVec instructions, and also
  246. enable the use of built-in functions that allow more direct access to
  247. the AltiVec instruction set. You may also need to set
  248. <samp>-mabi=altivec</samp> to adjust the current ABI with AltiVec ABI
  249. enhancements.
  250. </p>
  251. <p>When <samp>-maltivec</samp> is used, rather than <samp>-maltivec=le</samp> or
  252. <samp>-maltivec=be</samp>, the element order for AltiVec intrinsics such
  253. as <code>vec_splat</code>, <code>vec_extract</code>, and <code>vec_insert</code>
  254. match array element order corresponding to the endianness of the
  255. target. That is, element zero identifies the leftmost element in a
  256. vector register when targeting a big-endian platform, and identifies
  257. the rightmost element in a vector register when targeting a
  258. little-endian platform.
  259. </p>
  260. </dd>
  261. <dt><code>-maltivec=be</code></dt>
  262. <dd><a name="index-maltivec_003dbe"></a>
  263. <p>Generate AltiVec instructions using big-endian element order,
  264. regardless of whether the target is big- or little-endian. This is
  265. the default when targeting a big-endian platform.
  266. </p>
  267. <p>The element order is used to interpret element numbers in AltiVec
  268. intrinsics such as <code>vec_splat</code>, <code>vec_extract</code>, and
  269. <code>vec_insert</code>. By default, these match array element order
  270. corresponding to the endianness for the target.
  271. </p>
  272. </dd>
  273. <dt><code>-maltivec=le</code></dt>
  274. <dd><a name="index-maltivec_003dle"></a>
  275. <p>Generate AltiVec instructions using little-endian element order,
  276. regardless of whether the target is big- or little-endian. This is
  277. the default when targeting a little-endian platform. This option is
  278. currently ignored when targeting a big-endian platform.
  279. </p>
  280. <p>The element order is used to interpret element numbers in AltiVec
  281. intrinsics such as <code>vec_splat</code>, <code>vec_extract</code>, and
  282. <code>vec_insert</code>. By default, these match array element order
  283. corresponding to the endianness for the target.
  284. </p>
  285. </dd>
  286. <dt><code>-mvrsave</code></dt>
  287. <dt><code>-mno-vrsave</code></dt>
  288. <dd><a name="index-mvrsave"></a>
  289. <a name="index-mno_002dvrsave"></a>
  290. <p>Generate VRSAVE instructions when generating AltiVec code.
  291. </p>
  292. </dd>
  293. <dt><code>-mgen-cell-microcode</code></dt>
  294. <dd><a name="index-mgen_002dcell_002dmicrocode"></a>
  295. <p>Generate Cell microcode instructions.
  296. </p>
  297. </dd>
  298. <dt><code>-mwarn-cell-microcode</code></dt>
  299. <dd><a name="index-mwarn_002dcell_002dmicrocode"></a>
  300. <p>Warn when a Cell microcode instruction is emitted. An example
  301. of a Cell microcode instruction is a variable shift.
  302. </p>
  303. </dd>
  304. <dt><code>-msecure-plt</code></dt>
  305. <dd><a name="index-msecure_002dplt"></a>
  306. <p>Generate code that allows <code>ld</code> and <code>ld.so</code>
  307. to build executables and shared
  308. libraries with non-executable <code>.plt</code> and <code>.got</code> sections.
  309. This is a PowerPC
  310. 32-bit SYSV ABI option.
  311. </p>
  312. </dd>
  313. <dt><code>-mbss-plt</code></dt>
  314. <dd><a name="index-mbss_002dplt"></a>
  315. <p>Generate code that uses a BSS <code>.plt</code> section that <code>ld.so</code>
  316. fills in, and
  317. requires <code>.plt</code> and <code>.got</code>
  318. sections that are both writable and executable.
  319. This is a PowerPC 32-bit SYSV ABI option.
  320. </p>
  321. </dd>
  322. <dt><code>-misel</code></dt>
  323. <dt><code>-mno-isel</code></dt>
  324. <dd><a name="index-misel"></a>
  325. <a name="index-mno_002disel"></a>
  326. <p>This switch enables or disables the generation of ISEL instructions.
  327. </p>
  328. </dd>
  329. <dt><code>-misel=<var>yes/no</var></code></dt>
  330. <dd><p>This switch has been deprecated. Use <samp>-misel</samp> and
  331. <samp>-mno-isel</samp> instead.
  332. </p>
  333. </dd>
  334. <dt><code>-mlra</code></dt>
  335. <dd><a name="index-mlra-2"></a>
  336. <p>Enable Local Register Allocation. By default the port uses LRA.
  337. (i.e. <samp>-mno-lra</samp>).
  338. </p>
  339. </dd>
  340. <dt><code>-mspe</code></dt>
  341. <dt><code>-mno-spe</code></dt>
  342. <dd><a name="index-mspe"></a>
  343. <a name="index-mno_002dspe"></a>
  344. <p>This switch enables or disables the generation of SPE simd
  345. instructions.
  346. </p>
  347. </dd>
  348. <dt><code>-mpaired</code></dt>
  349. <dt><code>-mno-paired</code></dt>
  350. <dd><a name="index-mpaired"></a>
  351. <a name="index-mno_002dpaired"></a>
  352. <p>This switch enables or disables the generation of PAIRED simd
  353. instructions.
  354. </p>
  355. </dd>
  356. <dt><code>-mspe=<var>yes/no</var></code></dt>
  357. <dd><p>This option has been deprecated. Use <samp>-mspe</samp> and
  358. <samp>-mno-spe</samp> instead.
  359. </p>
  360. </dd>
  361. <dt><code>-mvsx</code></dt>
  362. <dt><code>-mno-vsx</code></dt>
  363. <dd><a name="index-mvsx"></a>
  364. <a name="index-mno_002dvsx"></a>
  365. <p>Generate code that uses (does not use) vector/scalar (VSX)
  366. instructions, and also enable the use of built-in functions that allow
  367. more direct access to the VSX instruction set.
  368. </p>
  369. </dd>
  370. <dt><code>-mcrypto</code></dt>
  371. <dt><code>-mno-crypto</code></dt>
  372. <dd><a name="index-mcrypto"></a>
  373. <a name="index-mno_002dcrypto"></a>
  374. <p>Enable the use (disable) of the built-in functions that allow direct
  375. access to the cryptographic instructions that were added in version
  376. 2.07 of the PowerPC ISA.
  377. </p>
  378. </dd>
  379. <dt><code>-mdirect-move</code></dt>
  380. <dt><code>-mno-direct-move</code></dt>
  381. <dd><a name="index-mdirect_002dmove"></a>
  382. <a name="index-mno_002ddirect_002dmove"></a>
  383. <p>Generate code that uses (does not use) the instructions to move data
  384. between the general purpose registers and the vector/scalar (VSX)
  385. registers that were added in version 2.07 of the PowerPC ISA.
  386. </p>
  387. </dd>
  388. <dt><code>-mhtm</code></dt>
  389. <dt><code>-mno-htm</code></dt>
  390. <dd><a name="index-mhtm"></a>
  391. <a name="index-mno_002dhtm"></a>
  392. <p>Enable (disable) the use of the built-in functions that allow direct
  393. access to the Hardware Transactional Memory (HTM) instructions that
  394. were added in version 2.07 of the PowerPC ISA.
  395. </p>
  396. </dd>
  397. <dt><code>-mpower8-fusion</code></dt>
  398. <dt><code>-mno-power8-fusion</code></dt>
  399. <dd><a name="index-mpower8_002dfusion"></a>
  400. <a name="index-mno_002dpower8_002dfusion"></a>
  401. <p>Generate code that keeps (does not keeps) some integer operations
  402. adjacent so that the instructions can be fused together on power8 and
  403. later processors.
  404. </p>
  405. </dd>
  406. <dt><code>-mpower8-vector</code></dt>
  407. <dt><code>-mno-power8-vector</code></dt>
  408. <dd><a name="index-mpower8_002dvector"></a>
  409. <a name="index-mno_002dpower8_002dvector"></a>
  410. <p>Generate code that uses (does not use) the vector and scalar
  411. instructions that were added in version 2.07 of the PowerPC ISA. Also
  412. enable the use of built-in functions that allow more direct access to
  413. the vector instructions.
  414. </p>
  415. </dd>
  416. <dt><code>-mquad-memory</code></dt>
  417. <dt><code>-mno-quad-memory</code></dt>
  418. <dd><a name="index-mquad_002dmemory"></a>
  419. <a name="index-mno_002dquad_002dmemory"></a>
  420. <p>Generate code that uses (does not use) the non-atomic quad word memory
  421. instructions. The <samp>-mquad-memory</samp> option requires use of
  422. 64-bit mode.
  423. </p>
  424. </dd>
  425. <dt><code>-mquad-memory-atomic</code></dt>
  426. <dt><code>-mno-quad-memory-atomic</code></dt>
  427. <dd><a name="index-mquad_002dmemory_002datomic"></a>
  428. <a name="index-mno_002dquad_002dmemory_002datomic"></a>
  429. <p>Generate code that uses (does not use) the atomic quad word memory
  430. instructions. The <samp>-mquad-memory-atomic</samp> option requires use of
  431. 64-bit mode.
  432. </p>
  433. </dd>
  434. <dt><code>-mupper-regs-di</code></dt>
  435. <dt><code>-mno-upper-regs-di</code></dt>
  436. <dd><a name="index-mupper_002dregs_002ddi"></a>
  437. <a name="index-mno_002dupper_002dregs_002ddi"></a>
  438. <p>Generate code that uses (does not use) the scalar instructions that
  439. target all 64 registers in the vector/scalar floating point register
  440. set that were added in version 2.06 of the PowerPC ISA when processing
  441. integers. <samp>-mupper-regs-di</samp> is turned on by default if you use
  442. any of the <samp>-mcpu=power7</samp>, <samp>-mcpu=power8</samp>,
  443. <samp>-mcpu=power9</samp>, or <samp>-mvsx</samp> options.
  444. </p>
  445. </dd>
  446. <dt><code>-mupper-regs-df</code></dt>
  447. <dt><code>-mno-upper-regs-df</code></dt>
  448. <dd><a name="index-mupper_002dregs_002ddf"></a>
  449. <a name="index-mno_002dupper_002dregs_002ddf"></a>
  450. <p>Generate code that uses (does not use) the scalar double precision
  451. instructions that target all 64 registers in the vector/scalar
  452. floating point register set that were added in version 2.06 of the
  453. PowerPC ISA. <samp>-mupper-regs-df</samp> is turned on by default if you
  454. use any of the <samp>-mcpu=power7</samp>, <samp>-mcpu=power8</samp>,
  455. <samp>-mcpu=power9</samp>, or <samp>-mvsx</samp> options.
  456. </p>
  457. </dd>
  458. <dt><code>-mupper-regs-sf</code></dt>
  459. <dt><code>-mno-upper-regs-sf</code></dt>
  460. <dd><a name="index-mupper_002dregs_002dsf"></a>
  461. <a name="index-mno_002dupper_002dregs_002dsf"></a>
  462. <p>Generate code that uses (does not use) the scalar single precision
  463. instructions that target all 64 registers in the vector/scalar
  464. floating point register set that were added in version 2.07 of the
  465. PowerPC ISA. <samp>-mupper-regs-sf</samp> is turned on by default if you
  466. use either of the <samp>-mcpu=power8</samp>, <samp>-mpower8-vector</samp>, or
  467. <samp>-mcpu=power9</samp> options.
  468. </p>
  469. </dd>
  470. <dt><code>-mupper-regs</code></dt>
  471. <dt><code>-mno-upper-regs</code></dt>
  472. <dd><a name="index-mupper_002dregs"></a>
  473. <a name="index-mno_002dupper_002dregs"></a>
  474. <p>Generate code that uses (does not use) the scalar
  475. instructions that target all 64 registers in the vector/scalar
  476. floating point register set, depending on the model of the machine.
  477. </p>
  478. <p>If the <samp>-mno-upper-regs</samp> option is used, it turns off both
  479. <samp>-mupper-regs-sf</samp> and <samp>-mupper-regs-df</samp> options.
  480. </p>
  481. </dd>
  482. <dt><code>-mfloat128</code></dt>
  483. <dt><code>-mno-float128</code></dt>
  484. <dd><a name="index-mfloat128"></a>
  485. <a name="index-mno_002dfloat128"></a>
  486. <p>Enable/disable the <var>__float128</var> keyword for IEEE 128-bit floating point
  487. and use either software emulation for IEEE 128-bit floating point or
  488. hardware instructions.
  489. </p>
  490. <p>The VSX instruction set (<samp>-mvsx</samp>, <samp>-mcpu=power7</samp>, or
  491. <samp>-mcpu=power8</samp>) must be enabled to use the <samp>-mfloat128</samp>
  492. option. The <samp>-mfloat128</samp> option only works on PowerPC 64-bit
  493. Linux systems.
  494. </p>
  495. <p>If you use the ISA 3.0 instruction set (<samp>-mcpu=power9</samp>), the
  496. <samp>-mfloat128</samp> option will also enable the generation of ISA 3.0
  497. IEEE 128-bit floating point instructions. Otherwise, IEEE 128-bit
  498. floating point will be done with software emulation.
  499. </p>
  500. </dd>
  501. <dt><code>-mfloat128-hardware</code></dt>
  502. <dt><code>-mno-float128-hardware</code></dt>
  503. <dd><a name="index-mfloat128_002dhardware"></a>
  504. <a name="index-mno_002dfloat128_002dhardware"></a>
  505. <p>Enable/disable using ISA 3.0 hardware instructions to support the
  506. <var>__float128</var> data type.
  507. </p>
  508. <p>If you use <samp>-mfloat128-hardware</samp>, it will enable the option
  509. <samp>-mfloat128</samp> as well.
  510. </p>
  511. <p>If you select ISA 3.0 instructions with <samp>-mcpu=power9</samp>, but do
  512. not use either <samp>-mfloat128</samp> or <samp>-mfloat128-hardware</samp>,
  513. the IEEE 128-bit floating point support will not be enabled.
  514. </p>
  515. </dd>
  516. <dt><code>-mfloat-gprs=<var>yes/single/double/no</var></code></dt>
  517. <dt><code>-mfloat-gprs</code></dt>
  518. <dd><a name="index-mfloat_002dgprs"></a>
  519. <p>This switch enables or disables the generation of floating-point
  520. operations on the general-purpose registers for architectures that
  521. support it.
  522. </p>
  523. <p>The argument &lsquo;<samp>yes</samp>&rsquo; or &lsquo;<samp>single</samp>&rsquo; enables the use of
  524. single-precision floating-point operations.
  525. </p>
  526. <p>The argument &lsquo;<samp>double</samp>&rsquo; enables the use of single and
  527. double-precision floating-point operations.
  528. </p>
  529. <p>The argument &lsquo;<samp>no</samp>&rsquo; disables floating-point operations on the
  530. general-purpose registers.
  531. </p>
  532. <p>This option is currently only available on the MPC854x.
  533. </p>
  534. </dd>
  535. <dt><code>-m32</code></dt>
  536. <dt><code>-m64</code></dt>
  537. <dd><a name="index-m32-1"></a>
  538. <a name="index-m64-1"></a>
  539. <p>Generate code for 32-bit or 64-bit environments of Darwin and SVR4
  540. targets (including GNU/Linux). The 32-bit environment sets int, long
  541. and pointer to 32 bits and generates code that runs on any PowerPC
  542. variant. The 64-bit environment sets int to 32 bits and long and
  543. pointer to 64 bits, and generates code for PowerPC64, as for
  544. <samp>-mpowerpc64</samp>.
  545. </p>
  546. </dd>
  547. <dt><code>-mfull-toc</code></dt>
  548. <dt><code>-mno-fp-in-toc</code></dt>
  549. <dt><code>-mno-sum-in-toc</code></dt>
  550. <dt><code>-mminimal-toc</code></dt>
  551. <dd><a name="index-mfull_002dtoc"></a>
  552. <a name="index-mno_002dfp_002din_002dtoc"></a>
  553. <a name="index-mno_002dsum_002din_002dtoc"></a>
  554. <a name="index-mminimal_002dtoc"></a>
  555. <p>Modify generation of the TOC (Table Of Contents), which is created for
  556. every executable file. The <samp>-mfull-toc</samp> option is selected by
  557. default. In that case, GCC allocates at least one TOC entry for
  558. each unique non-automatic variable reference in your program. GCC
  559. also places floating-point constants in the TOC. However, only
  560. 16,384 entries are available in the TOC.
  561. </p>
  562. <p>If you receive a linker error message that saying you have overflowed
  563. the available TOC space, you can reduce the amount of TOC space used
  564. with the <samp>-mno-fp-in-toc</samp> and <samp>-mno-sum-in-toc</samp> options.
  565. <samp>-mno-fp-in-toc</samp> prevents GCC from putting floating-point
  566. constants in the TOC and <samp>-mno-sum-in-toc</samp> forces GCC to
  567. generate code to calculate the sum of an address and a constant at
  568. run time instead of putting that sum into the TOC. You may specify one
  569. or both of these options. Each causes GCC to produce very slightly
  570. slower and larger code at the expense of conserving TOC space.
  571. </p>
  572. <p>If you still run out of space in the TOC even when you specify both of
  573. these options, specify <samp>-mminimal-toc</samp> instead. This option causes
  574. GCC to make only one TOC entry for every file. When you specify this
  575. option, GCC produces code that is slower and larger but which
  576. uses extremely little TOC space. You may wish to use this option
  577. only on files that contain less frequently-executed code.
  578. </p>
  579. </dd>
  580. <dt><code>-maix64</code></dt>
  581. <dt><code>-maix32</code></dt>
  582. <dd><a name="index-maix64"></a>
  583. <a name="index-maix32"></a>
  584. <p>Enable 64-bit AIX ABI and calling convention: 64-bit pointers, 64-bit
  585. <code>long</code> type, and the infrastructure needed to support them.
  586. Specifying <samp>-maix64</samp> implies <samp>-mpowerpc64</samp>,
  587. while <samp>-maix32</samp> disables the 64-bit ABI and
  588. implies <samp>-mno-powerpc64</samp>. GCC defaults to <samp>-maix32</samp>.
  589. </p>
  590. </dd>
  591. <dt><code>-mxl-compat</code></dt>
  592. <dt><code>-mno-xl-compat</code></dt>
  593. <dd><a name="index-mxl_002dcompat"></a>
  594. <a name="index-mno_002dxl_002dcompat"></a>
  595. <p>Produce code that conforms more closely to IBM XL compiler semantics
  596. when using AIX-compatible ABI. Pass floating-point arguments to
  597. prototyped functions beyond the register save area (RSA) on the stack
  598. in addition to argument FPRs. Do not assume that most significant
  599. double in 128-bit long double value is properly rounded when comparing
  600. values and converting to double. Use XL symbol names for long double
  601. support routines.
  602. </p>
  603. <p>The AIX calling convention was extended but not initially documented to
  604. handle an obscure K&amp;R C case of calling a function that takes the
  605. address of its arguments with fewer arguments than declared. IBM XL
  606. compilers access floating-point arguments that do not fit in the
  607. RSA from the stack when a subroutine is compiled without
  608. optimization. Because always storing floating-point arguments on the
  609. stack is inefficient and rarely needed, this option is not enabled by
  610. default and only is necessary when calling subroutines compiled by IBM
  611. XL compilers without optimization.
  612. </p>
  613. </dd>
  614. <dt><code>-mpe</code></dt>
  615. <dd><a name="index-mpe"></a>
  616. <p>Support <em>IBM RS/6000 SP</em> <em>Parallel Environment</em> (PE). Link an
  617. application written to use message passing with special startup code to
  618. enable the application to run. The system must have PE installed in the
  619. standard location (<samp>/usr/lpp/ppe.poe/</samp>), or the <samp>specs</samp> file
  620. must be overridden with the <samp>-specs=</samp> option to specify the
  621. appropriate directory location. The Parallel Environment does not
  622. support threads, so the <samp>-mpe</samp> option and the <samp>-pthread</samp>
  623. option are incompatible.
  624. </p>
  625. </dd>
  626. <dt><code>-malign-natural</code></dt>
  627. <dt><code>-malign-power</code></dt>
  628. <dd><a name="index-malign_002dnatural"></a>
  629. <a name="index-malign_002dpower"></a>
  630. <p>On AIX, 32-bit Darwin, and 64-bit PowerPC GNU/Linux, the option
  631. <samp>-malign-natural</samp> overrides the ABI-defined alignment of larger
  632. types, such as floating-point doubles, on their natural size-based boundary.
  633. The option <samp>-malign-power</samp> instructs GCC to follow the ABI-specified
  634. alignment rules. GCC defaults to the standard alignment defined in the ABI.
  635. </p>
  636. <p>On 64-bit Darwin, natural alignment is the default, and <samp>-malign-power</samp>
  637. is not supported.
  638. </p>
  639. </dd>
  640. <dt><code>-msoft-float</code></dt>
  641. <dt><code>-mhard-float</code></dt>
  642. <dd><a name="index-msoft_002dfloat-8"></a>
  643. <a name="index-mhard_002dfloat-4"></a>
  644. <p>Generate code that does not use (uses) the floating-point register set.
  645. Software floating-point emulation is provided if you use the
  646. <samp>-msoft-float</samp> option, and pass the option to GCC when linking.
  647. </p>
  648. </dd>
  649. <dt><code>-msingle-float</code></dt>
  650. <dt><code>-mdouble-float</code></dt>
  651. <dd><a name="index-msingle_002dfloat-1"></a>
  652. <a name="index-mdouble_002dfloat-1"></a>
  653. <p>Generate code for single- or double-precision floating-point operations.
  654. <samp>-mdouble-float</samp> implies <samp>-msingle-float</samp>.
  655. </p>
  656. </dd>
  657. <dt><code>-msimple-fpu</code></dt>
  658. <dd><a name="index-msimple_002dfpu"></a>
  659. <p>Do not generate <code>sqrt</code> and <code>div</code> instructions for hardware
  660. floating-point unit.
  661. </p>
  662. </dd>
  663. <dt><code>-mfpu=<var>name</var></code></dt>
  664. <dd><a name="index-mfpu-3"></a>
  665. <p>Specify type of floating-point unit. Valid values for <var>name</var> are
  666. &lsquo;<samp>sp_lite</samp>&rsquo; (equivalent to <samp>-msingle-float -msimple-fpu</samp>),
  667. &lsquo;<samp>dp_lite</samp>&rsquo; (equivalent to <samp>-mdouble-float -msimple-fpu</samp>),
  668. &lsquo;<samp>sp_full</samp>&rsquo; (equivalent to <samp>-msingle-float</samp>),
  669. and &lsquo;<samp>dp_full</samp>&rsquo; (equivalent to <samp>-mdouble-float</samp>).
  670. </p>
  671. </dd>
  672. <dt><code>-mxilinx-fpu</code></dt>
  673. <dd><a name="index-mxilinx_002dfpu"></a>
  674. <p>Perform optimizations for the floating-point unit on Xilinx PPC 405/440.
  675. </p>
  676. </dd>
  677. <dt><code>-mmultiple</code></dt>
  678. <dt><code>-mno-multiple</code></dt>
  679. <dd><a name="index-mmultiple"></a>
  680. <a name="index-mno_002dmultiple"></a>
  681. <p>Generate code that uses (does not use) the load multiple word
  682. instructions and the store multiple word instructions. These
  683. instructions are generated by default on POWER systems, and not
  684. generated on PowerPC systems. Do not use <samp>-mmultiple</samp> on little-endian
  685. PowerPC systems, since those instructions do not work when the
  686. processor is in little-endian mode. The exceptions are PPC740 and
  687. PPC750 which permit these instructions in little-endian mode.
  688. </p>
  689. </dd>
  690. <dt><code>-mstring</code></dt>
  691. <dt><code>-mno-string</code></dt>
  692. <dd><a name="index-mstring"></a>
  693. <a name="index-mno_002dstring"></a>
  694. <p>Generate code that uses (does not use) the load string instructions
  695. and the store string word instructions to save multiple registers and
  696. do small block moves. These instructions are generated by default on
  697. POWER systems, and not generated on PowerPC systems. Do not use
  698. <samp>-mstring</samp> on little-endian PowerPC systems, since those
  699. instructions do not work when the processor is in little-endian mode.
  700. The exceptions are PPC740 and PPC750 which permit these instructions
  701. in little-endian mode.
  702. </p>
  703. </dd>
  704. <dt><code>-mupdate</code></dt>
  705. <dt><code>-mno-update</code></dt>
  706. <dd><a name="index-mupdate"></a>
  707. <a name="index-mno_002dupdate"></a>
  708. <p>Generate code that uses (does not use) the load or store instructions
  709. that update the base register to the address of the calculated memory
  710. location. These instructions are generated by default. If you use
  711. <samp>-mno-update</samp>, there is a small window between the time that the
  712. stack pointer is updated and the address of the previous frame is
  713. stored, which means code that walks the stack frame across interrupts or
  714. signals may get corrupted data.
  715. </p>
  716. </dd>
  717. <dt><code>-mavoid-indexed-addresses</code></dt>
  718. <dt><code>-mno-avoid-indexed-addresses</code></dt>
  719. <dd><a name="index-mavoid_002dindexed_002daddresses"></a>
  720. <a name="index-mno_002davoid_002dindexed_002daddresses"></a>
  721. <p>Generate code that tries to avoid (not avoid) the use of indexed load
  722. or store instructions. These instructions can incur a performance
  723. penalty on Power6 processors in certain situations, such as when
  724. stepping through large arrays that cross a 16M boundary. This option
  725. is enabled by default when targeting Power6 and disabled otherwise.
  726. </p>
  727. </dd>
  728. <dt><code>-mfused-madd</code></dt>
  729. <dt><code>-mno-fused-madd</code></dt>
  730. <dd><a name="index-mfused_002dmadd-2"></a>
  731. <a name="index-mno_002dfused_002dmadd-2"></a>
  732. <p>Generate code that uses (does not use) the floating-point multiply and
  733. accumulate instructions. These instructions are generated by default
  734. if hardware floating point is used. The machine-dependent
  735. <samp>-mfused-madd</samp> option is now mapped to the machine-independent
  736. <samp>-ffp-contract=fast</samp> option, and <samp>-mno-fused-madd</samp> is
  737. mapped to <samp>-ffp-contract=off</samp>.
  738. </p>
  739. </dd>
  740. <dt><code>-mmulhw</code></dt>
  741. <dt><code>-mno-mulhw</code></dt>
  742. <dd><a name="index-mmulhw"></a>
  743. <a name="index-mno_002dmulhw"></a>
  744. <p>Generate code that uses (does not use) the half-word multiply and
  745. multiply-accumulate instructions on the IBM 405, 440, 464 and 476 processors.
  746. These instructions are generated by default when targeting those
  747. processors.
  748. </p>
  749. </dd>
  750. <dt><code>-mdlmzb</code></dt>
  751. <dt><code>-mno-dlmzb</code></dt>
  752. <dd><a name="index-mdlmzb"></a>
  753. <a name="index-mno_002ddlmzb"></a>
  754. <p>Generate code that uses (does not use) the string-search &lsquo;<samp>dlmzb</samp>&rsquo;
  755. instruction on the IBM 405, 440, 464 and 476 processors. This instruction is
  756. generated by default when targeting those processors.
  757. </p>
  758. </dd>
  759. <dt><code>-mno-bit-align</code></dt>
  760. <dt><code>-mbit-align</code></dt>
  761. <dd><a name="index-mno_002dbit_002dalign"></a>
  762. <a name="index-mbit_002dalign"></a>
  763. <p>On System V.4 and embedded PowerPC systems do not (do) force structures
  764. and unions that contain bit-fields to be aligned to the base type of the
  765. bit-field.
  766. </p>
  767. <p>For example, by default a structure containing nothing but 8
  768. <code>unsigned</code> bit-fields of length 1 is aligned to a 4-byte
  769. boundary and has a size of 4 bytes. By using <samp>-mno-bit-align</samp>,
  770. the structure is aligned to a 1-byte boundary and is 1 byte in
  771. size.
  772. </p>
  773. </dd>
  774. <dt><code>-mno-strict-align</code></dt>
  775. <dt><code>-mstrict-align</code></dt>
  776. <dd><a name="index-mno_002dstrict_002dalign-1"></a>
  777. <a name="index-mstrict_002dalign-3"></a>
  778. <p>On System V.4 and embedded PowerPC systems do not (do) assume that
  779. unaligned memory references are handled by the system.
  780. </p>
  781. </dd>
  782. <dt><code>-mrelocatable</code></dt>
  783. <dt><code>-mno-relocatable</code></dt>
  784. <dd><a name="index-mrelocatable"></a>
  785. <a name="index-mno_002drelocatable"></a>
  786. <p>Generate code that allows (does not allow) a static executable to be
  787. relocated to a different address at run time. A simple embedded
  788. PowerPC system loader should relocate the entire contents of
  789. <code>.got2</code> and 4-byte locations listed in the <code>.fixup</code> section,
  790. a table of 32-bit addresses generated by this option. For this to
  791. work, all objects linked together must be compiled with
  792. <samp>-mrelocatable</samp> or <samp>-mrelocatable-lib</samp>.
  793. <samp>-mrelocatable</samp> code aligns the stack to an 8-byte boundary.
  794. </p>
  795. </dd>
  796. <dt><code>-mrelocatable-lib</code></dt>
  797. <dt><code>-mno-relocatable-lib</code></dt>
  798. <dd><a name="index-mrelocatable_002dlib"></a>
  799. <a name="index-mno_002drelocatable_002dlib"></a>
  800. <p>Like <samp>-mrelocatable</samp>, <samp>-mrelocatable-lib</samp> generates a
  801. <code>.fixup</code> section to allow static executables to be relocated at
  802. run time, but <samp>-mrelocatable-lib</samp> does not use the smaller stack
  803. alignment of <samp>-mrelocatable</samp>. Objects compiled with
  804. <samp>-mrelocatable-lib</samp> may be linked with objects compiled with
  805. any combination of the <samp>-mrelocatable</samp> options.
  806. </p>
  807. </dd>
  808. <dt><code>-mno-toc</code></dt>
  809. <dt><code>-mtoc</code></dt>
  810. <dd><a name="index-mno_002dtoc"></a>
  811. <a name="index-mtoc"></a>
  812. <p>On System V.4 and embedded PowerPC systems do not (do) assume that
  813. register 2 contains a pointer to a global area pointing to the addresses
  814. used in the program.
  815. </p>
  816. </dd>
  817. <dt><code>-mlittle</code></dt>
  818. <dt><code>-mlittle-endian</code></dt>
  819. <dd><a name="index-mlittle"></a>
  820. <a name="index-mlittle_002dendian-8"></a>
  821. <p>On System V.4 and embedded PowerPC systems compile code for the
  822. processor in little-endian mode. The <samp>-mlittle-endian</samp> option is
  823. the same as <samp>-mlittle</samp>.
  824. </p>
  825. </dd>
  826. <dt><code>-mbig</code></dt>
  827. <dt><code>-mbig-endian</code></dt>
  828. <dd><a name="index-mbig"></a>
  829. <a name="index-mbig_002dendian-8"></a>
  830. <p>On System V.4 and embedded PowerPC systems compile code for the
  831. processor in big-endian mode. The <samp>-mbig-endian</samp> option is
  832. the same as <samp>-mbig</samp>.
  833. </p>
  834. </dd>
  835. <dt><code>-mdynamic-no-pic</code></dt>
  836. <dd><a name="index-mdynamic_002dno_002dpic"></a>
  837. <p>On Darwin and Mac OS X systems, compile code so that it is not
  838. relocatable, but that its external references are relocatable. The
  839. resulting code is suitable for applications, but not shared
  840. libraries.
  841. </p>
  842. </dd>
  843. <dt><code>-msingle-pic-base</code></dt>
  844. <dd><a name="index-msingle_002dpic_002dbase-1"></a>
  845. <p>Treat the register used for PIC addressing as read-only, rather than
  846. loading it in the prologue for each function. The runtime system is
  847. responsible for initializing this register with an appropriate value
  848. before execution begins.
  849. </p>
  850. </dd>
  851. <dt><code>-mprioritize-restricted-insns=<var>priority</var></code></dt>
  852. <dd><a name="index-mprioritize_002drestricted_002dinsns"></a>
  853. <p>This option controls the priority that is assigned to
  854. dispatch-slot restricted instructions during the second scheduling
  855. pass. The argument <var>priority</var> takes the value &lsquo;<samp>0</samp>&rsquo;, &lsquo;<samp>1</samp>&rsquo;,
  856. or &lsquo;<samp>2</samp>&rsquo; to assign no, highest, or second-highest (respectively)
  857. priority to dispatch-slot restricted
  858. instructions.
  859. </p>
  860. </dd>
  861. <dt><code>-msched-costly-dep=<var>dependence_type</var></code></dt>
  862. <dd><a name="index-msched_002dcostly_002ddep"></a>
  863. <p>This option controls which dependences are considered costly
  864. by the target during instruction scheduling. The argument
  865. <var>dependence_type</var> takes one of the following values:
  866. </p>
  867. <dl compact="compact">
  868. <dt>&lsquo;<samp>no</samp>&rsquo;</dt>
  869. <dd><p>No dependence is costly.
  870. </p>
  871. </dd>
  872. <dt>&lsquo;<samp>all</samp>&rsquo;</dt>
  873. <dd><p>All dependences are costly.
  874. </p>
  875. </dd>
  876. <dt>&lsquo;<samp>true_store_to_load</samp>&rsquo;</dt>
  877. <dd><p>A true dependence from store to load is costly.
  878. </p>
  879. </dd>
  880. <dt>&lsquo;<samp>store_to_load</samp>&rsquo;</dt>
  881. <dd><p>Any dependence from store to load is costly.
  882. </p>
  883. </dd>
  884. <dt><var>number</var></dt>
  885. <dd><p>Any dependence for which the latency is greater than or equal to
  886. <var>number</var> is costly.
  887. </p></dd>
  888. </dl>
  889. </dd>
  890. <dt><code>-minsert-sched-nops=<var>scheme</var></code></dt>
  891. <dd><a name="index-minsert_002dsched_002dnops"></a>
  892. <p>This option controls which NOP insertion scheme is used during
  893. the second scheduling pass. The argument <var>scheme</var> takes one of the
  894. following values:
  895. </p>
  896. <dl compact="compact">
  897. <dt>&lsquo;<samp>no</samp>&rsquo;</dt>
  898. <dd><p>Don&rsquo;t insert NOPs.
  899. </p>
  900. </dd>
  901. <dt>&lsquo;<samp>pad</samp>&rsquo;</dt>
  902. <dd><p>Pad with NOPs any dispatch group that has vacant issue slots,
  903. according to the scheduler&rsquo;s grouping.
  904. </p>
  905. </dd>
  906. <dt>&lsquo;<samp>regroup_exact</samp>&rsquo;</dt>
  907. <dd><p>Insert NOPs to force costly dependent insns into
  908. separate groups. Insert exactly as many NOPs as needed to force an insn
  909. to a new group, according to the estimated processor grouping.
  910. </p>
  911. </dd>
  912. <dt><var>number</var></dt>
  913. <dd><p>Insert NOPs to force costly dependent insns into
  914. separate groups. Insert <var>number</var> NOPs to force an insn to a new group.
  915. </p></dd>
  916. </dl>
  917. </dd>
  918. <dt><code>-mcall-sysv</code></dt>
  919. <dd><a name="index-mcall_002dsysv"></a>
  920. <p>On System V.4 and embedded PowerPC systems compile code using calling
  921. conventions that adhere to the March 1995 draft of the System V
  922. Application Binary Interface, PowerPC processor supplement. This is the
  923. default unless you configured GCC using &lsquo;<samp>powerpc-*-eabiaix</samp>&rsquo;.
  924. </p>
  925. </dd>
  926. <dt><code>-mcall-sysv-eabi</code></dt>
  927. <dt><code>-mcall-eabi</code></dt>
  928. <dd><a name="index-mcall_002dsysv_002deabi"></a>
  929. <a name="index-mcall_002deabi"></a>
  930. <p>Specify both <samp>-mcall-sysv</samp> and <samp>-meabi</samp> options.
  931. </p>
  932. </dd>
  933. <dt><code>-mcall-sysv-noeabi</code></dt>
  934. <dd><a name="index-mcall_002dsysv_002dnoeabi"></a>
  935. <p>Specify both <samp>-mcall-sysv</samp> and <samp>-mno-eabi</samp> options.
  936. </p>
  937. </dd>
  938. <dt><code>-mcall-aixdesc</code></dt>
  939. <dd><a name="index-m"></a>
  940. <p>On System V.4 and embedded PowerPC systems compile code for the AIX
  941. operating system.
  942. </p>
  943. </dd>
  944. <dt><code>-mcall-linux</code></dt>
  945. <dd><a name="index-mcall_002dlinux"></a>
  946. <p>On System V.4 and embedded PowerPC systems compile code for the
  947. Linux-based GNU system.
  948. </p>
  949. </dd>
  950. <dt><code>-mcall-freebsd</code></dt>
  951. <dd><a name="index-mcall_002dfreebsd"></a>
  952. <p>On System V.4 and embedded PowerPC systems compile code for the
  953. FreeBSD operating system.
  954. </p>
  955. </dd>
  956. <dt><code>-mcall-netbsd</code></dt>
  957. <dd><a name="index-mcall_002dnetbsd"></a>
  958. <p>On System V.4 and embedded PowerPC systems compile code for the
  959. NetBSD operating system.
  960. </p>
  961. </dd>
  962. <dt><code>-mcall-openbsd</code></dt>
  963. <dd><a name="index-mcall_002dnetbsd-1"></a>
  964. <p>On System V.4 and embedded PowerPC systems compile code for the
  965. OpenBSD operating system.
  966. </p>
  967. </dd>
  968. <dt><code>-maix-struct-return</code></dt>
  969. <dd><a name="index-maix_002dstruct_002dreturn"></a>
  970. <p>Return all structures in memory (as specified by the AIX ABI).
  971. </p>
  972. </dd>
  973. <dt><code>-msvr4-struct-return</code></dt>
  974. <dd><a name="index-msvr4_002dstruct_002dreturn"></a>
  975. <p>Return structures smaller than 8 bytes in registers (as specified by the
  976. SVR4 ABI).
  977. </p>
  978. </dd>
  979. <dt><code>-mabi=<var>abi-type</var></code></dt>
  980. <dd><a name="index-mabi-3"></a>
  981. <p>Extend the current ABI with a particular extension, or remove such extension.
  982. Valid values are &lsquo;<samp>altivec</samp>&rsquo;, &lsquo;<samp>no-altivec</samp>&rsquo;, &lsquo;<samp>spe</samp>&rsquo;,
  983. &lsquo;<samp>no-spe</samp>&rsquo;, &lsquo;<samp>ibmlongdouble</samp>&rsquo;, &lsquo;<samp>ieeelongdouble</samp>&rsquo;,
  984. &lsquo;<samp>elfv1</samp>&rsquo;, &lsquo;<samp>elfv2</samp>&rsquo;.
  985. </p>
  986. </dd>
  987. <dt><code>-mabi=spe</code></dt>
  988. <dd><a name="index-mabi_003dspe"></a>
  989. <p>Extend the current ABI with SPE ABI extensions. This does not change
  990. the default ABI, instead it adds the SPE ABI extensions to the current
  991. ABI.
  992. </p>
  993. </dd>
  994. <dt><code>-mabi=no-spe</code></dt>
  995. <dd><a name="index-mabi_003dno_002dspe"></a>
  996. <p>Disable Book-E SPE ABI extensions for the current ABI.
  997. </p>
  998. </dd>
  999. <dt><code>-mabi=ibmlongdouble</code></dt>
  1000. <dd><a name="index-mabi_003dibmlongdouble"></a>
  1001. <p>Change the current ABI to use IBM extended-precision long double.
  1002. This is a PowerPC 32-bit SYSV ABI option. Requires <samp>-mlong-double-128</samp>
  1003. to be enabled.
  1004. </p>
  1005. </dd>
  1006. <dt><code>-mabi=ieeelongdouble</code></dt>
  1007. <dd><a name="index-mabi_003dieeelongdouble"></a>
  1008. <p>Change the current ABI to use IEEE extended-precision long double.
  1009. This is a PowerPC 32-bit Linux ABI option. Requires <samp>-mlong-double-128</samp>
  1010. to be enabled.
  1011. </p>
  1012. </dd>
  1013. <dt><code>-mabi=elfv1</code></dt>
  1014. <dd><a name="index-mabi_003delfv1"></a>
  1015. <p>Change the current ABI to use the ELFv1 ABI.
  1016. This is the default ABI for big-endian PowerPC 64-bit Linux.
  1017. Overriding the default ABI requires special system support and is
  1018. likely to fail in spectacular ways.
  1019. </p>
  1020. </dd>
  1021. <dt><code>-mabi=elfv2</code></dt>
  1022. <dd><a name="index-mabi_003delfv2"></a>
  1023. <p>Change the current ABI to use the ELFv2 ABI.
  1024. This is the default ABI for little-endian PowerPC 64-bit Linux.
  1025. Overriding the default ABI requires special system support and is
  1026. likely to fail in spectacular ways.
  1027. </p>
  1028. </dd>
  1029. <dt><code>-mgnu-attribute</code></dt>
  1030. <dt><code>-mno-gnu-attribute</code></dt>
  1031. <dd><a name="index-mgnu_002dattribute"></a>
  1032. <a name="index-mno_002dgnu_002dattribute"></a>
  1033. <p>Emit .gnu_attribute assembly directives to set tag/value pairs in a
  1034. .gnu.attributes section that specify ABI variations in function
  1035. parameters or return values.
  1036. </p>
  1037. </dd>
  1038. <dt><code>-mprototype</code></dt>
  1039. <dt><code>-mno-prototype</code></dt>
  1040. <dd><a name="index-mprototype"></a>
  1041. <a name="index-mno_002dprototype"></a>
  1042. <p>On System V.4 and embedded PowerPC systems assume that all calls to
  1043. variable argument functions are properly prototyped. Otherwise, the
  1044. compiler must insert an instruction before every non-prototyped call to
  1045. set or clear bit 6 of the condition code register (<code>CR</code>) to
  1046. indicate whether floating-point values are passed in the floating-point
  1047. registers in case the function takes variable arguments. With
  1048. <samp>-mprototype</samp>, only calls to prototyped variable argument functions
  1049. set or clear the bit.
  1050. </p>
  1051. </dd>
  1052. <dt><code>-msim</code></dt>
  1053. <dd><a name="index-msim-8"></a>
  1054. <p>On embedded PowerPC systems, assume that the startup module is called
  1055. <samp>sim-crt0.o</samp> and that the standard C libraries are <samp>libsim.a</samp> and
  1056. <samp>libc.a</samp>. This is the default for &lsquo;<samp>powerpc-*-eabisim</samp>&rsquo;
  1057. configurations.
  1058. </p>
  1059. </dd>
  1060. <dt><code>-mmvme</code></dt>
  1061. <dd><a name="index-mmvme"></a>
  1062. <p>On embedded PowerPC systems, assume that the startup module is called
  1063. <samp>crt0.o</samp> and the standard C libraries are <samp>libmvme.a</samp> and
  1064. <samp>libc.a</samp>.
  1065. </p>
  1066. </dd>
  1067. <dt><code>-mads</code></dt>
  1068. <dd><a name="index-mads"></a>
  1069. <p>On embedded PowerPC systems, assume that the startup module is called
  1070. <samp>crt0.o</samp> and the standard C libraries are <samp>libads.a</samp> and
  1071. <samp>libc.a</samp>.
  1072. </p>
  1073. </dd>
  1074. <dt><code>-myellowknife</code></dt>
  1075. <dd><a name="index-myellowknife"></a>
  1076. <p>On embedded PowerPC systems, assume that the startup module is called
  1077. <samp>crt0.o</samp> and the standard C libraries are <samp>libyk.a</samp> and
  1078. <samp>libc.a</samp>.
  1079. </p>
  1080. </dd>
  1081. <dt><code>-mvxworks</code></dt>
  1082. <dd><a name="index-mvxworks"></a>
  1083. <p>On System V.4 and embedded PowerPC systems, specify that you are
  1084. compiling for a VxWorks system.
  1085. </p>
  1086. </dd>
  1087. <dt><code>-memb</code></dt>
  1088. <dd><a name="index-memb"></a>
  1089. <p>On embedded PowerPC systems, set the <code>PPC_EMB</code> bit in the ELF flags
  1090. header to indicate that &lsquo;<samp>eabi</samp>&rsquo; extended relocations are used.
  1091. </p>
  1092. </dd>
  1093. <dt><code>-meabi</code></dt>
  1094. <dt><code>-mno-eabi</code></dt>
  1095. <dd><a name="index-meabi"></a>
  1096. <a name="index-mno_002deabi"></a>
  1097. <p>On System V.4 and embedded PowerPC systems do (do not) adhere to the
  1098. Embedded Applications Binary Interface (EABI), which is a set of
  1099. modifications to the System V.4 specifications. Selecting <samp>-meabi</samp>
  1100. means that the stack is aligned to an 8-byte boundary, a function
  1101. <code>__eabi</code> is called from <code>main</code> to set up the EABI
  1102. environment, and the <samp>-msdata</samp> option can use both <code>r2</code> and
  1103. <code>r13</code> to point to two separate small data areas. Selecting
  1104. <samp>-mno-eabi</samp> means that the stack is aligned to a 16-byte boundary,
  1105. no EABI initialization function is called from <code>main</code>, and the
  1106. <samp>-msdata</samp> option only uses <code>r13</code> to point to a single
  1107. small data area. The <samp>-meabi</samp> option is on by default if you
  1108. configured GCC using one of the &lsquo;<samp>powerpc*-*-eabi*</samp>&rsquo; options.
  1109. </p>
  1110. </dd>
  1111. <dt><code>-msdata=eabi</code></dt>
  1112. <dd><a name="index-msdata_003deabi"></a>
  1113. <p>On System V.4 and embedded PowerPC systems, put small initialized
  1114. <code>const</code> global and static data in the <code>.sdata2</code> section, which
  1115. is pointed to by register <code>r2</code>. Put small initialized
  1116. non-<code>const</code> global and static data in the <code>.sdata</code> section,
  1117. which is pointed to by register <code>r13</code>. Put small uninitialized
  1118. global and static data in the <code>.sbss</code> section, which is adjacent to
  1119. the <code>.sdata</code> section. The <samp>-msdata=eabi</samp> option is
  1120. incompatible with the <samp>-mrelocatable</samp> option. The
  1121. <samp>-msdata=eabi</samp> option also sets the <samp>-memb</samp> option.
  1122. </p>
  1123. </dd>
  1124. <dt><code>-msdata=sysv</code></dt>
  1125. <dd><a name="index-msdata_003dsysv"></a>
  1126. <p>On System V.4 and embedded PowerPC systems, put small global and static
  1127. data in the <code>.sdata</code> section, which is pointed to by register
  1128. <code>r13</code>. Put small uninitialized global and static data in the
  1129. <code>.sbss</code> section, which is adjacent to the <code>.sdata</code> section.
  1130. The <samp>-msdata=sysv</samp> option is incompatible with the
  1131. <samp>-mrelocatable</samp> option.
  1132. </p>
  1133. </dd>
  1134. <dt><code>-msdata=default</code></dt>
  1135. <dt><code>-msdata</code></dt>
  1136. <dd><a name="index-msdata_003ddefault-1"></a>
  1137. <a name="index-msdata-1"></a>
  1138. <p>On System V.4 and embedded PowerPC systems, if <samp>-meabi</samp> is used,
  1139. compile code the same as <samp>-msdata=eabi</samp>, otherwise compile code the
  1140. same as <samp>-msdata=sysv</samp>.
  1141. </p>
  1142. </dd>
  1143. <dt><code>-msdata=data</code></dt>
  1144. <dd><a name="index-msdata_003ddata"></a>
  1145. <p>On System V.4 and embedded PowerPC systems, put small global
  1146. data in the <code>.sdata</code> section. Put small uninitialized global
  1147. data in the <code>.sbss</code> section. Do not use register <code>r13</code>
  1148. to address small data however. This is the default behavior unless
  1149. other <samp>-msdata</samp> options are used.
  1150. </p>
  1151. </dd>
  1152. <dt><code>-msdata=none</code></dt>
  1153. <dt><code>-mno-sdata</code></dt>
  1154. <dd><a name="index-msdata_003dnone-2"></a>
  1155. <a name="index-mno_002dsdata-2"></a>
  1156. <p>On embedded PowerPC systems, put all initialized global and static data
  1157. in the <code>.data</code> section, and all uninitialized data in the
  1158. <code>.bss</code> section.
  1159. </p>
  1160. </dd>
  1161. <dt><code>-mreadonly-in-sdata</code></dt>
  1162. <dt><code>-mreadonly-in-sdata</code></dt>
  1163. <dd><a name="index-mreadonly_002din_002dsdata"></a>
  1164. <a name="index-mno_002dreadonly_002din_002dsdata"></a>
  1165. <p>Put read-only objects in the <code>.sdata</code> section as well. This is the
  1166. default.
  1167. </p>
  1168. </dd>
  1169. <dt><code>-mblock-move-inline-limit=<var>num</var></code></dt>
  1170. <dd><a name="index-mblock_002dmove_002dinline_002dlimit"></a>
  1171. <p>Inline all block moves (such as calls to <code>memcpy</code> or structure
  1172. copies) less than or equal to <var>num</var> bytes. The minimum value for
  1173. <var>num</var> is 32 bytes on 32-bit targets and 64 bytes on 64-bit
  1174. targets. The default value is target-specific.
  1175. </p>
  1176. </dd>
  1177. <dt><code>-G <var>num</var></code></dt>
  1178. <dd><a name="index-G-3"></a>
  1179. <a name="index-smaller-data-references-_0028PowerPC_0029"></a>
  1180. <a name="index-_002esdata_002f_002esdata2-references-_0028PowerPC_0029"></a>
  1181. <p>On embedded PowerPC systems, put global and static items less than or
  1182. equal to <var>num</var> bytes into the small data or BSS sections instead of
  1183. the normal data or BSS section. By default, <var>num</var> is 8. The
  1184. <samp>-G <var>num</var></samp> switch is also passed to the linker.
  1185. All modules should be compiled with the same <samp>-G <var>num</var></samp> value.
  1186. </p>
  1187. </dd>
  1188. <dt><code>-mregnames</code></dt>
  1189. <dt><code>-mno-regnames</code></dt>
  1190. <dd><a name="index-mregnames"></a>
  1191. <a name="index-mno_002dregnames"></a>
  1192. <p>On System V.4 and embedded PowerPC systems do (do not) emit register
  1193. names in the assembly language output using symbolic forms.
  1194. </p>
  1195. </dd>
  1196. <dt><code>-mlongcall</code></dt>
  1197. <dt><code>-mno-longcall</code></dt>
  1198. <dd><a name="index-mlongcall"></a>
  1199. <a name="index-mno_002dlongcall"></a>
  1200. <p>By default assume that all calls are far away so that a longer and more
  1201. expensive calling sequence is required. This is required for calls
  1202. farther than 32 megabytes (33,554,432 bytes) from the current location.
  1203. A short call is generated if the compiler knows
  1204. the call cannot be that far away. This setting can be overridden by
  1205. the <code>shortcall</code> function attribute, or by <code>#pragma
  1206. longcall(0)</code>.
  1207. </p>
  1208. <p>Some linkers are capable of detecting out-of-range calls and generating
  1209. glue code on the fly. On these systems, long calls are unnecessary and
  1210. generate slower code. As of this writing, the AIX linker can do this,
  1211. as can the GNU linker for PowerPC/64. It is planned to add this feature
  1212. to the GNU linker for 32-bit PowerPC systems as well.
  1213. </p>
  1214. <p>On Darwin/PPC systems, <code>#pragma longcall</code> generates <code>jbsr
  1215. callee, L42</code>, plus a <em>branch island</em> (glue code). The two target
  1216. addresses represent the callee and the branch island. The
  1217. Darwin/PPC linker prefers the first address and generates a <code>bl
  1218. callee</code> if the PPC <code>bl</code> instruction reaches the callee directly;
  1219. otherwise, the linker generates <code>bl L42</code> to call the branch
  1220. island. The branch island is appended to the body of the
  1221. calling function; it computes the full 32-bit address of the callee
  1222. and jumps to it.
  1223. </p>
  1224. <p>On Mach-O (Darwin) systems, this option directs the compiler emit to
  1225. the glue for every direct call, and the Darwin linker decides whether
  1226. to use or discard it.
  1227. </p>
  1228. <p>In the future, GCC may ignore all longcall specifications
  1229. when the linker is known to generate glue.
  1230. </p>
  1231. </dd>
  1232. <dt><code>-mtls-markers</code></dt>
  1233. <dt><code>-mno-tls-markers</code></dt>
  1234. <dd><a name="index-mtls_002dmarkers"></a>
  1235. <a name="index-mno_002dtls_002dmarkers"></a>
  1236. <p>Mark (do not mark) calls to <code>__tls_get_addr</code> with a relocation
  1237. specifying the function argument. The relocation allows the linker to
  1238. reliably associate function call with argument setup instructions for
  1239. TLS optimization, which in turn allows GCC to better schedule the
  1240. sequence.
  1241. </p>
  1242. </dd>
  1243. <dt><code>-mrecip</code></dt>
  1244. <dt><code>-mno-recip</code></dt>
  1245. <dd><a name="index-mrecip"></a>
  1246. <p>This option enables use of the reciprocal estimate and
  1247. reciprocal square root estimate instructions with additional
  1248. Newton-Raphson steps to increase precision instead of doing a divide or
  1249. square root and divide for floating-point arguments. You should use
  1250. the <samp>-ffast-math</samp> option when using <samp>-mrecip</samp> (or at
  1251. least <samp>-funsafe-math-optimizations</samp>,
  1252. <samp>-ffinite-math-only</samp>, <samp>-freciprocal-math</samp> and
  1253. <samp>-fno-trapping-math</samp>). Note that while the throughput of the
  1254. sequence is generally higher than the throughput of the non-reciprocal
  1255. instruction, the precision of the sequence can be decreased by up to 2
  1256. ulp (i.e. the inverse of 1.0 equals 0.99999994) for reciprocal square
  1257. roots.
  1258. </p>
  1259. </dd>
  1260. <dt><code>-mrecip=<var>opt</var></code></dt>
  1261. <dd><a name="index-mrecip_003dopt"></a>
  1262. <p>This option controls which reciprocal estimate instructions
  1263. may be used. <var>opt</var> is a comma-separated list of options, which may
  1264. be preceded by a <code>!</code> to invert the option:
  1265. </p>
  1266. <dl compact="compact">
  1267. <dt>&lsquo;<samp>all</samp>&rsquo;</dt>
  1268. <dd><p>Enable all estimate instructions.
  1269. </p>
  1270. </dd>
  1271. <dt>&lsquo;<samp>default</samp>&rsquo;</dt>
  1272. <dd><p>Enable the default instructions, equivalent to <samp>-mrecip</samp>.
  1273. </p>
  1274. </dd>
  1275. <dt>&lsquo;<samp>none</samp>&rsquo;</dt>
  1276. <dd><p>Disable all estimate instructions, equivalent to <samp>-mno-recip</samp>.
  1277. </p>
  1278. </dd>
  1279. <dt>&lsquo;<samp>div</samp>&rsquo;</dt>
  1280. <dd><p>Enable the reciprocal approximation instructions for both
  1281. single and double precision.
  1282. </p>
  1283. </dd>
  1284. <dt>&lsquo;<samp>divf</samp>&rsquo;</dt>
  1285. <dd><p>Enable the single-precision reciprocal approximation instructions.
  1286. </p>
  1287. </dd>
  1288. <dt>&lsquo;<samp>divd</samp>&rsquo;</dt>
  1289. <dd><p>Enable the double-precision reciprocal approximation instructions.
  1290. </p>
  1291. </dd>
  1292. <dt>&lsquo;<samp>rsqrt</samp>&rsquo;</dt>
  1293. <dd><p>Enable the reciprocal square root approximation instructions for both
  1294. single and double precision.
  1295. </p>
  1296. </dd>
  1297. <dt>&lsquo;<samp>rsqrtf</samp>&rsquo;</dt>
  1298. <dd><p>Enable the single-precision reciprocal square root approximation instructions.
  1299. </p>
  1300. </dd>
  1301. <dt>&lsquo;<samp>rsqrtd</samp>&rsquo;</dt>
  1302. <dd><p>Enable the double-precision reciprocal square root approximation instructions.
  1303. </p>
  1304. </dd>
  1305. </dl>
  1306. <p>So, for example, <samp>-mrecip=all,!rsqrtd</samp> enables
  1307. all of the reciprocal estimate instructions, except for the
  1308. <code>FRSQRTE</code>, <code>XSRSQRTEDP</code>, and <code>XVRSQRTEDP</code> instructions
  1309. which handle the double-precision reciprocal square root calculations.
  1310. </p>
  1311. </dd>
  1312. <dt><code>-mrecip-precision</code></dt>
  1313. <dt><code>-mno-recip-precision</code></dt>
  1314. <dd><a name="index-mrecip_002dprecision"></a>
  1315. <p>Assume (do not assume) that the reciprocal estimate instructions
  1316. provide higher-precision estimates than is mandated by the PowerPC
  1317. ABI. Selecting <samp>-mcpu=power6</samp>, <samp>-mcpu=power7</samp> or
  1318. <samp>-mcpu=power8</samp> automatically selects <samp>-mrecip-precision</samp>.
  1319. The double-precision square root estimate instructions are not generated by
  1320. default on low-precision machines, since they do not provide an
  1321. estimate that converges after three steps.
  1322. </p>
  1323. </dd>
  1324. <dt><code>-mveclibabi=<var>type</var></code></dt>
  1325. <dd><a name="index-mveclibabi"></a>
  1326. <p>Specifies the ABI type to use for vectorizing intrinsics using an
  1327. external library. The only type supported at present is &lsquo;<samp>mass</samp>&rsquo;,
  1328. which specifies to use IBM&rsquo;s Mathematical Acceleration Subsystem
  1329. (MASS) libraries for vectorizing intrinsics using external libraries.
  1330. GCC currently emits calls to <code>acosd2</code>, <code>acosf4</code>,
  1331. <code>acoshd2</code>, <code>acoshf4</code>, <code>asind2</code>, <code>asinf4</code>,
  1332. <code>asinhd2</code>, <code>asinhf4</code>, <code>atan2d2</code>, <code>atan2f4</code>,
  1333. <code>atand2</code>, <code>atanf4</code>, <code>atanhd2</code>, <code>atanhf4</code>,
  1334. <code>cbrtd2</code>, <code>cbrtf4</code>, <code>cosd2</code>, <code>cosf4</code>,
  1335. <code>coshd2</code>, <code>coshf4</code>, <code>erfcd2</code>, <code>erfcf4</code>,
  1336. <code>erfd2</code>, <code>erff4</code>, <code>exp2d2</code>, <code>exp2f4</code>,
  1337. <code>expd2</code>, <code>expf4</code>, <code>expm1d2</code>, <code>expm1f4</code>,
  1338. <code>hypotd2</code>, <code>hypotf4</code>, <code>lgammad2</code>, <code>lgammaf4</code>,
  1339. <code>log10d2</code>, <code>log10f4</code>, <code>log1pd2</code>, <code>log1pf4</code>,
  1340. <code>log2d2</code>, <code>log2f4</code>, <code>logd2</code>, <code>logf4</code>,
  1341. <code>powd2</code>, <code>powf4</code>, <code>sind2</code>, <code>sinf4</code>, <code>sinhd2</code>,
  1342. <code>sinhf4</code>, <code>sqrtd2</code>, <code>sqrtf4</code>, <code>tand2</code>,
  1343. <code>tanf4</code>, <code>tanhd2</code>, and <code>tanhf4</code> when generating code
  1344. for power7. Both <samp>-ftree-vectorize</samp> and
  1345. <samp>-funsafe-math-optimizations</samp> must also be enabled. The MASS
  1346. libraries must be specified at link time.
  1347. </p>
  1348. </dd>
  1349. <dt><code>-mfriz</code></dt>
  1350. <dt><code>-mno-friz</code></dt>
  1351. <dd><a name="index-mfriz"></a>
  1352. <p>Generate (do not generate) the <code>friz</code> instruction when the
  1353. <samp>-funsafe-math-optimizations</samp> option is used to optimize
  1354. rounding of floating-point values to 64-bit integer and back to floating
  1355. point. The <code>friz</code> instruction does not return the same value if
  1356. the floating-point number is too large to fit in an integer.
  1357. </p>
  1358. </dd>
  1359. <dt><code>-mpointers-to-nested-functions</code></dt>
  1360. <dt><code>-mno-pointers-to-nested-functions</code></dt>
  1361. <dd><a name="index-mpointers_002dto_002dnested_002dfunctions"></a>
  1362. <p>Generate (do not generate) code to load up the static chain register
  1363. (<code>r11</code>) when calling through a pointer on AIX and 64-bit Linux
  1364. systems where a function pointer points to a 3-word descriptor giving
  1365. the function address, TOC value to be loaded in register <code>r2</code>, and
  1366. static chain value to be loaded in register <code>r11</code>. The
  1367. <samp>-mpointers-to-nested-functions</samp> is on by default. You cannot
  1368. call through pointers to nested functions or pointers
  1369. to functions compiled in other languages that use the static chain if
  1370. you use <samp>-mno-pointers-to-nested-functions</samp>.
  1371. </p>
  1372. </dd>
  1373. <dt><code>-msave-toc-indirect</code></dt>
  1374. <dt><code>-mno-save-toc-indirect</code></dt>
  1375. <dd><a name="index-msave_002dtoc_002dindirect"></a>
  1376. <p>Generate (do not generate) code to save the TOC value in the reserved
  1377. stack location in the function prologue if the function calls through
  1378. a pointer on AIX and 64-bit Linux systems. If the TOC value is not
  1379. saved in the prologue, it is saved just before the call through the
  1380. pointer. The <samp>-mno-save-toc-indirect</samp> option is the default.
  1381. </p>
  1382. </dd>
  1383. <dt><code>-mcompat-align-parm</code></dt>
  1384. <dt><code>-mno-compat-align-parm</code></dt>
  1385. <dd><a name="index-mcompat_002dalign_002dparm"></a>
  1386. <p>Generate (do not generate) code to pass structure parameters with a
  1387. maximum alignment of 64 bits, for compatibility with older versions
  1388. of GCC.
  1389. </p>
  1390. <p>Older versions of GCC (prior to 4.9.0) incorrectly did not align a
  1391. structure parameter on a 128-bit boundary when that structure contained
  1392. a member requiring 128-bit alignment. This is corrected in more
  1393. recent versions of GCC. This option may be used to generate code
  1394. that is compatible with functions compiled with older versions of
  1395. GCC.
  1396. </p>
  1397. <p>The <samp>-mno-compat-align-parm</samp> option is the default.
  1398. </p>
  1399. </dd>
  1400. <dt><code>-mstack-protector-guard=<var>guard</var></code></dt>
  1401. <dt><code>-mstack-protector-guard-reg=<var>reg</var></code></dt>
  1402. <dt><code>-mstack-protector-guard-offset=<var>offset</var></code></dt>
  1403. <dd><a name="index-mstack_002dprotector_002dguard"></a>
  1404. <a name="index-mstack_002dprotector_002dguard_002dreg"></a>
  1405. <a name="index-mstack_002dprotector_002dguard_002doffset"></a>
  1406. <p>Generate stack protection code using canary at <var>guard</var>. Supported
  1407. locations are &lsquo;<samp>global</samp>&rsquo; for global canary or &lsquo;<samp>tls</samp>&rsquo; for per-thread
  1408. canary in the TLS block (the default with GNU libc version 2.4 or later).
  1409. </p>
  1410. <p>With the latter choice the options
  1411. <samp>-mstack-protector-guard-reg=<var>reg</var></samp> and
  1412. <samp>-mstack-protector-guard-offset=<var>offset</var></samp> furthermore specify
  1413. which register to use as base register for reading the canary, and from what
  1414. offset from that base register. The default for those is as specified in the
  1415. relevant ABI.
  1416. </p></dd>
  1417. </dl>
  1418. <hr>
  1419. <div class="header">
  1420. <p>
  1421. Next: <a href="RX-Options.html#RX-Options" accesskey="n" rel="next">RX Options</a>, Previous: <a href="RL78-Options.html#RL78-Options" accesskey="p" rel="prev">RL78 Options</a>, Up: <a href="Submodel-Options.html#Submodel-Options" accesskey="u" rel="up">Submodel Options</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
  1422. </div>
  1423. </body>
  1424. </html>