blob: 255a74d4f97c5e169e256472c76058ee25ab6c67 [file] [log] [blame]
<html lang="en">
<head>
<title>Xtensa Relaxation - Using as</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Using as">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Xtensa_002dDependent.html#Xtensa_002dDependent" title="Xtensa-Dependent">
<link rel="prev" href="Xtensa-Optimizations.html#Xtensa-Optimizations" title="Xtensa Optimizations">
<link rel="next" href="Xtensa-Directives.html#Xtensa-Directives" title="Xtensa Directives">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU Assembler "as".
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2006, 2007, 2008, 2009, 2010 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''.
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Xtensa-Relaxation"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Xtensa-Directives.html#Xtensa-Directives">Xtensa Directives</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Xtensa-Optimizations.html#Xtensa-Optimizations">Xtensa Optimizations</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Xtensa_002dDependent.html#Xtensa_002dDependent">Xtensa-Dependent</a>
<hr>
</div>
<h4 class="subsection">9.42.4 Xtensa Relaxation</h4>
<p><a name="index-relaxation-2024"></a>
When an instruction operand is outside the range allowed for that
particular instruction field, <samp><span class="command">as</span></samp> can transform the code
to use a functionally-equivalent instruction or sequence of
instructions. This process is known as <dfn>relaxation</dfn>. This is
typically done for branch instructions because the distance of the
branch targets is not known until assembly-time. The Xtensa assembler
offers branch relaxation and also extends this concept to function
calls, <code>MOVI</code> instructions and other instructions with immediate
fields.
<ul class="menu">
<li><a accesskey="1" href="Xtensa-Branch-Relaxation.html#Xtensa-Branch-Relaxation">Xtensa Branch Relaxation</a>: Relaxation of Branches.
<li><a accesskey="2" href="Xtensa-Call-Relaxation.html#Xtensa-Call-Relaxation">Xtensa Call Relaxation</a>: Relaxation of Function Calls.
<li><a accesskey="3" href="Xtensa-Immediate-Relaxation.html#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a>: Relaxation of other Immediate Fields.
</ul>
</body></html>