# Data processing

The Hexagon processor provides operations for
processing scalar and vector data. Instructions operate
on fixed-point or floating-point data. The
fixed-point operations support scalar and vector data in a range of
sizes. The floating-point operations support single-precision data.

This chapter presents an overview of the operations provided by the
following Hexagon processor instruction classes:

- XTYPE - General-purpose data operations
- ALU32 - Arithmetic/logical operations on 32-bit data

## Data types

The Hexagon processor provides operations for processing the
following data types.

### Fixed-point data

The Hexagon processor provides operations to process 8-, 16-, 32-, or
64-bit fixed-point data. The data is either integer or fractional,
and in signed or unsigned format.

#### Scalar operations

The Hexagon processor includes the following scalar operations on
fixed-point data:

- Multiplication of 16-bit, 32-bit, and complex data
- Addition and subtraction of 16-, 32-, and 64-bit data (with and
without saturation)
- Logical operations on 32-bit and 64-bit data (AND, OR, XOR, NOT)
- Shifts on 32-bit and 64-bit data (arithmetic and logical)
- Min/max, negation, absolute value, parity, norm, swizzle
- Compares of 8-, 16-, 32-, and 64-bit data
- Sign and zero extension (8- and 16-bit to 32-bit, 32-bit to 64-bit)
- Bit manipulation
- Predicate operations

#### Vector operations

The Hexagon processor includes the following vector operations on
fixed-point data:

- Multiplication (halfwords, word by half, vector reduce, dual
multiply)
- Addition and subtraction of word and halfword data
- Shifts on word and halfword data (arithmetic and logical)
- Min/max, average, negative average, absolute difference, absolute
value
- Compares of word, halfword, and byte data
- Reduce, sum of absolute differences on unsigned bytes
- Special-purpose data arrangement (such as pack, splat, shuffle,
align, saturate, splice, truncate, complex conjugate, complex rotate,
zero extend)

Note

Certain vector operations support automatic scaling,
saturation, and rounding.

For example, the following instruction performs a vector operation:

R1:0 += vrmpyh(R3:2,R5:4)
    Copy to clipboard

It is defined to perform the following operations in one cycle:

R1:0 += ((R2.L * R4.L) + (R2.H * R4.H) + (R3.L * R5.L) + (R3.H * R5.H))
    Copy to clipboard

[Vector instruction example](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#v79-vector-instruction-example) shows a schematic of this instruction type.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export pic_vrmpyh.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="5.46in" height="3.85229in" viewbox="0 0 393.12 277.365" xml:space="preserve" color-interpolation-filters="sRGB" class="st10"><title>pic_addh</title><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>		<v:ud v:nameu="msvConvertTheme"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-1 .st2 { fill: #2a2aea; font-family: Times New Roman; font-size: 0.833336em }
.svg-1 .st3 { fill: #2a2aea; font-family: Times New Roman; font-size: 1.50037em; font-weight: bold }
.svg-1 .st4 { stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-1 .st5 { fill: #2a2aea; font-family: Calibri; font-size: 0.833336em }
.svg-1 .st6 { fill: #2a2aea; font-family: Arial; font-size: 0.666664em }
.svg-1 .st7 { fill: #ffffff; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-1 .st8 { marker-end: url("#mrkr13-37"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-1 .st9 { fill: #2a2aea; fill-opacity: 1; stroke: #2a2aea; stroke-opacity: 1; stroke-width: 0.08695652173913 }
.svg-1 .st10 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-37" class="st9" v:arrowtype="13" v:arrowsize="2" v:setback="34.5" refx="-34.5" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-11.5,-11.5) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<v:userdefs>		<v:ud v:nameu="SchemeName" v:val="VT4(Black &#38; White)"></v:ud>	</v:userdefs>	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(315.879,-245.745)">		<title>Sheet.1</title>		<desc>Rss</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="17.6203" cy="271.388" width="35.25" height="11.9549"></v:textrect>		<path d="M35.24 265.41 L0 265.41 L0 277.36 L35.24 277.36 L35.24 265.41" class="st1"></path>		<text x="10.39" y="274.39" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rss</text>		</g>	<g id="shape2-5" v:mid="2" v:groupcontext="shape" transform="translate(127.092,-146.745)">		<title>Sheet.2</title>		<desc>*</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="8.51398" cy="266.562" width="17.03" height="21.6053"></v:textrect>		<path d="M17.03 255.76 L0 255.76 L0 277.36 L17.03 277.36 L17.03 255.76" class="st1"></path>		<text x="4.01" y="271.96" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>*</text>		</g>	<g id="shape3-9" v:mid="3" v:groupcontext="shape" transform="translate(352.5,-27.12)">		<title>Sheet.3</title>		<path d="M0 223.36 L0 277.36" class="st4"></path>	</g>	<g id="shape4-12" v:mid="4" v:groupcontext="shape" transform="translate(316.5,-27.12)">		<title>Sheet.4</title>		<path d="M0 277.36 L36 277.36" class="st4"></path>	</g>	<g id="shape5-15" v:mid="5" v:groupcontext="shape" transform="translate(113.42,-74.1839)">		<title>Sheet.5</title>		<desc>Add</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="56.9749" cy="267.053" width="113.95" height="20.625"></v:textrect>		<path d="M0 256.74 L0 277.36 L113.95 277.36 L113.95 256.74 L0 256.74" class="st4"></path>		<text x="48.83" y="270.05" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Add</text>		</g>	<g id="shape6-19" v:mid="6" v:groupcontext="shape" transform="translate(123.132,-149.739)">		<title>Sheet.6</title>		<path d="M11.99 253.36 C5.38 253.36 0 258.75 0 265.36 C-0 271.99 5.38 277.36 11.99 277.36 C18.61 277.36 23.98 271.99					 23.98 265.36 C23.98 258.75 18.61 253.36 11.99 253.36" class="st4"></path>	</g>	<g id="shape7-22" v:mid="7" v:groupcontext="shape" transform="translate(136.274,-130.15)">		<title>Sheet.7</title>		<path d="M13.5 269.11 L0 277.36" class="st4"></path>	</g>	<g id="shape8-25" v:mid="8" v:groupcontext="shape" transform="translate(140.549,-113.838)">		<title>Sheet.8</title>		<desc>32</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="11.4756" cy="260.583" width="22.96" height="33.5639"></v:textrect>		<path d="M22.95 243.8 L0 243.8 L0 277.36 L22.95 277.36 L22.95 243.8" class="st1"></path>		<text x="7.03" y="262.98" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>32</text>		</g>	<g id="shape9-29" v:mid="9" v:groupcontext="shape" transform="translate(28.5,-18.12)">		<title>Rectangle</title>		<desc>64-bit register pair</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="144" cy="268.365" width="288" height="18"></v:textrect>		<rect x="0" y="259.365" width="288" height="18" class="st7"></rect>		<text x="106.18" y="271.37" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>64-bit register pair</text>		</g>	<g id="shape11-32" v:mid="11" v:groupcontext="shape" transform="translate(449.865,205.245) rotate(90)">		<title>Sheet.11</title>		<path d="M0 277.36 L27.72 277.36" class="st8"></path>	</g>	<g id="shape13-38" v:mid="13" v:groupcontext="shape" transform="translate(162.12,-241.245)">		<title>Rectangle.46</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="259.365" width="72" height="18" class="st7"></rect>	</g>	<g id="shape14-40" v:mid="14" v:groupcontext="shape" transform="translate(234.12,-241.245)">		<title>Rectangle.14</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="259.365" width="72" height="18" class="st7"></rect>	</g>	<g id="shape15-42" v:mid="15" v:groupcontext="shape" transform="translate(18.12,-241.245)">		<title>Rectangle.43</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="259.365" width="72" height="18" class="st7"></rect>	</g>	<g id="shape16-44" v:mid="16" v:groupcontext="shape" transform="translate(90.12,-241.245)">		<title>Rectangle.48</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="259.365" width="72" height="18" class="st7"></rect>	</g>	<g id="shape17-46" v:mid="17" v:groupcontext="shape" transform="translate(315.879,-214.245)">		<title>Sheet.17</title>		<desc>Rtt</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="17.6203" cy="271.388" width="35.25" height="11.9549"></v:textrect>		<path d="M35.24 265.41 L0 265.41 L0 277.36 L35.24 277.36 L35.24 265.41" class="st1"></path>		<text x="11.51" y="274.39" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rtt</text>		</g>	<g id="shape18-50" v:mid="18" v:groupcontext="shape" transform="translate(162.12,-209.745)">		<title>Rectangle.4</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="259.365" width="72" height="18" class="st7"></rect>	</g>	<g id="shape19-52" v:mid="19" v:groupcontext="shape" transform="translate(234.12,-209.745)">		<title>Rectangle.6</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="259.365" width="72" height="18" class="st7"></rect>	</g>	<g id="shape20-54" v:mid="20" v:groupcontext="shape" transform="translate(18.12,-209.745)">		<title>Rectangle.11</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="259.365" width="72" height="18" class="st7"></rect>	</g>	<g id="shape21-56" v:mid="21" v:groupcontext="shape" transform="translate(90.12,-209.745)">		<title>Rectangle.12</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="259.365" width="72" height="18" class="st7"></rect>	</g>	<g id="shape22-58" v:mid="22" v:groupcontext="shape" transform="translate(331.476,33.8689) rotate(89.535)">		<title>Sheet.22</title>		<path d="M0 277.36 L59.22 277.36" class="st8"></path>	</g>	<g id="shape23-63" v:mid="23" v:groupcontext="shape" transform="translate(403.476,33.8689) rotate(89.535)">		<title>Sheet.23</title>		<path d="M0 277.36 L59.22 277.36" class="st8"></path>	</g>	<g id="shape24-68" v:mid="24" v:groupcontext="shape" transform="translate(475.485,36.12) rotate(90)">		<title>Sheet.24</title>		<path d="M0 277.36 L59.22 277.36" class="st8"></path>	</g>	<g id="shape25-73" v:mid="25" v:groupcontext="shape" transform="translate(547.485,36.12) rotate(90)">		<title>Sheet.25</title>		<path d="M0 277.36 L59.22 277.36" class="st8"></path>	</g>	<g id="shape26-78" v:mid="26" v:groupcontext="shape" transform="translate(421.485,67.62) rotate(90)">		<title>Sheet.26</title>		<path d="M0 277.36 L27.72 277.36" class="st8"></path>	</g>	<g id="shape27-83" v:mid="27" v:groupcontext="shape" transform="translate(349.485,67.62) rotate(90)">		<title>Sheet.27</title>		<path d="M0 277.36 L27.72 277.36" class="st8"></path>	</g>	<g id="shape28-88" v:mid="28" v:groupcontext="shape" transform="translate(493.485,67.62) rotate(90)">		<title>Sheet.28</title>		<path d="M0 277.36 L27.72 277.36" class="st8"></path>	</g>	<g id="shape29-93" v:mid="29" v:groupcontext="shape" transform="translate(565.485,67.62) rotate(90)">		<title>Sheet.29</title>		<path d="M0 277.36 L27.72 277.36" class="st8"></path>	</g>	<g id="shape30-98" v:mid="30" v:groupcontext="shape" transform="translate(381.539,0.311876) rotate(62.6766)">		<title>Sheet.30</title>		<path d="M0 277.36 L53.55 277.36" class="st8"></path>	</g>	<g id="shape31-103" v:mid="31" v:groupcontext="shape" transform="translate(199.092,-148.251)">		<title>Sheet.31</title>		<desc>*</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="8.51398" cy="266.562" width="17.03" height="21.6053"></v:textrect>		<path d="M17.03 255.76 L0 255.76 L0 277.36 L17.03 277.36 L17.03 255.76" class="st1"></path>		<text x="4.01" y="271.96" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>*</text>		</g>	<g id="shape32-107" v:mid="32" v:groupcontext="shape" transform="translate(195.132,-151.245)">		<title>Sheet.32</title>		<path d="M11.99 253.36 C5.38 253.36 0 258.75 0 265.36 C-0 271.99 5.38 277.36 11.99 277.36 C18.61 277.36 23.98 271.99					 23.98 265.36 C23.98 258.75 18.61 253.36 11.99 253.36" class="st4"></path>	</g>	<g id="shape33-110" v:mid="33" v:groupcontext="shape" transform="translate(195,-131.369)">		<title>Sheet.33</title>		<path d="M13.5 269.11 L0 277.36" class="st4"></path>	</g>	<g id="shape34-113" v:mid="34" v:groupcontext="shape" transform="translate(199.274,-115.056)">		<title>Sheet.34</title>		<desc>32</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="11.4756" cy="260.583" width="22.96" height="33.5639"></v:textrect>		<path d="M22.95 243.8 L0 243.8 L0 277.36 L22.95 277.36 L22.95 243.8" class="st1"></path>		<text x="7.03" y="262.98" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>32</text>		</g>	<g id="shape36-117" v:mid="36" v:groupcontext="shape" transform="translate(473.187,204.475) rotate(106.409)">		<title>Sheet.36</title>		<path d="M0 277.36 L50.55 277.36" class="st8"></path>	</g>	<g id="shape37-122" v:mid="37" v:groupcontext="shape" transform="translate(271.092,-148.251)">		<title>Sheet.37</title>		<desc>*</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="8.51398" cy="266.562" width="17.03" height="21.6053"></v:textrect>		<path d="M17.03 255.76 L0 255.76 L0 277.36 L17.03 277.36 L17.03 255.76" class="st1"></path>		<text x="4.01" y="271.96" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>*</text>		</g>	<g id="shape38-126" v:mid="38" v:groupcontext="shape" transform="translate(267.132,-151.245)">		<title>Sheet.38</title>		<path d="M11.99 253.36 C5.38 253.36 0 258.75 0 265.36 C-0 271.99 5.38 277.36 11.99 277.36 C18.61 277.36 23.98 271.99					 23.98 265.36 C23.98 258.75 18.61 253.36 11.99 253.36" class="st4"></path>	</g>	<g id="shape39-129" v:mid="39" v:groupcontext="shape" transform="translate(31.2949,283.993) rotate(-120)">		<title>Sheet.39</title>		<path d="M13.5 269.11 L0 277.36" class="st4"></path>	</g>	<g id="shape40-132" v:mid="40" v:groupcontext="shape" transform="translate(262.5,-119.556)">		<title>Sheet.40</title>		<desc>32</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="11.4756" cy="260.583" width="22.96" height="33.5639"></v:textrect>		<path d="M22.95 243.8 L0 243.8 L0 277.36 L22.95 277.36 L22.95 243.8" class="st1"></path>		<text x="7.03" y="262.98" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>32</text>		</g>	<g id="shape42-136" v:mid="42" v:groupcontext="shape" transform="translate(466.454,330.662) rotate(137.514)">		<title>Sheet.42</title>		<path d="M0 277.36 L75.28 277.36" class="st8"></path>	</g>	<g id="shape43-141" v:mid="43" v:groupcontext="shape" transform="translate(55.092,-148.251)">		<title>Sheet.43</title>		<desc>*</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="8.51398" cy="266.562" width="17.03" height="21.6053"></v:textrect>		<path d="M17.03 255.76 L0 255.76 L0 277.36 L17.03 277.36 L17.03 255.76" class="st1"></path>		<text x="4.01" y="271.96" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>*</text>		</g>	<g id="shape44-145" v:mid="44" v:groupcontext="shape" transform="translate(51.1318,-151.245)">		<title>Sheet.44</title>		<path d="M11.99 253.36 C5.38 253.36 0 258.75 0 265.36 C-0 271.99 5.38 277.36 11.99 277.36 C18.61 277.36 23.98 271.99					 23.98 265.36 C23.98 258.75 18.61 253.36 11.99 253.36" class="st4"></path>	</g>	<g id="shape45-148" v:mid="45" v:groupcontext="shape" transform="translate(69,-134.65)">		<title>Sheet.45</title>		<path d="M13.5 269.11 L0 277.36" class="st4"></path>	</g>	<g id="shape46-151" v:mid="46" v:groupcontext="shape" transform="translate(75.5244,-120.495)">		<title>Sheet.46</title>		<desc>32</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="11.4756" cy="260.583" width="22.96" height="33.5639"></v:textrect>		<path d="M22.95 243.8 L0 243.8 L0 277.36 L22.95 277.36 L22.95 243.8" class="st1"></path>		<text x="7.03" y="262.98" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>32</text>		</g>	<g id="shape48-155" v:mid="48" v:groupcontext="shape" transform="translate(245.956,-82.4521) rotate(41.2381)">		<title>Sheet.48</title>		<path d="M0 277.36 L77.33 277.36" class="st8"></path>	</g>	<g id="shape53-160" v:mid="53" v:groupcontext="shape" transform="translate(347.774,-56.9325)">		<title>Sheet.53</title>		<path d="M13.5 269.11 L0 277.36" class="st4"></path>	</g>	<g id="shape54-163" v:mid="54" v:groupcontext="shape" transform="translate(352.049,-40.62)">		<title>Sheet.54</title>		<desc>64</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="11.4756" cy="260.583" width="22.96" height="33.5639"></v:textrect>		<path d="M22.95 243.8 L0 243.8 L0 277.36 L22.95 277.36 L22.95 243.8" class="st1"></path>		<text x="7.03" y="262.98" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>64</text>		</g>	<g id="shape55-167" v:mid="55" v:groupcontext="shape" transform="translate(316.5,-30.1425)">		<title>Sheet.55</title>		<desc>Rdd</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="17.6203" cy="271.388" width="35.25" height="11.9549"></v:textrect>		<path d="M35.24 265.41 L0 265.41 L0 277.36 L35.24 277.36 L35.24 265.41" class="st1"></path>		<text x="9.29" y="274.39" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rdd</text>		</g>	<g id="shape10-171" v:mid="10" v:groupcontext="shape" transform="translate(352.5,473.61) rotate(180)">		<title>Sheet.10</title>		<path d="M0 277.36 L116.85 277.36" class="st8"></path>	</g></g>
</svg>

**Vector instruction example**

### Floating-point data

The Hexagon processor provides operations to process 32-bit
floating-point numbers. The numbers are stored in IEEE
single-precision floating-point format.

Per the IEEE standard, certain floating-point values are defined to
represent positive or negative infinity, as well as Not-a-Number
(NaN), which represents values that have no mathematical meaning.

Floating-point numbers can be held in a general register.

The Hexagon processor includes the following operations on
floating-point data:

- Addition and subtraction
- Multiplication (with optional scaling)
- Min/max/compare
- Reciprocal/square root approximation
- Format conversion

### Complex data

The Hexagon processor provides operations to process 32-bit or 64-bit
complex data.

Complex numbers include a signed real portion and a signed imaginary
portion. Given two complex numbers (a + bi) and (c + di), the complex
multiply operations compute both the real portion (ac - bd) and the
imaginary portion (ad + bc) in a single instruction.

Complex numbers can be packed in a general register or register pair.
When packed, the imaginary portion occupies the most-significant
portion of the register or register pair.

### Vector data

The Hexagon processor provides operations to process 64-bit vector
data.

Vector data types pack multiple data items—bytes, halfwords, or
words—into 64-bit registers.

Eight 8-bit bytes can be packed into a 64-bit register.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export fig_vector_byte_op.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="4.93738in" height="2.20139in" viewbox="0 0 355.491 158.5" xml:space="preserve" color-interpolation-filters="sRGB" class="st6"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvConvertTheme"></v:ud>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-2 .st1 { stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st2 { fill: #2a2aea; font-family: Arial; font-size: 0.75em }
.svg-2 .st3 { fill: none; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st4 { marker-end: url("#mrkr13-20"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st5 { fill: #2a2aea; fill-opacity: 1; stroke: #2a2aea; stroke-opacity: 1; stroke-width: 0.28409090909091 }
.svg-2 .st6 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-20" class="st5" v:arrowtype="13" v:arrowsize="2" v:setback="10.56" refx="-10.56" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-3.52,-3.52) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<v:userdefs>		<v:ud v:nameu="SchemeName" v:val="VT4(Default)"></v:ud>	</v:userdefs>	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="0" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(308.911,-126.5)">		<title>Sheet.1</title>		<desc>Rss</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="14.04" cy="152.523" width="28.09" height="11.9549"></v:textrect>		<path d="M28.08 146.55 L0 146.55 L0 158.5 L28.08 158.5 L28.08 146.55" class="st1"></path>		<text x="6.29" y="155.22" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rss</text>		</g>	<g id="shape2-5" v:mid="2" v:groupcontext="shape" transform="translate(20.1312,-122)">		<title>Rectangle.74</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape3-7" v:mid="3" v:groupcontext="shape" transform="translate(311.791,-103.659)">		<title>Sheet.3</title>		<desc>Rtt</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="10.8" cy="153.1" width="21.61" height="10.8"></v:textrect>		<path d="M21.6 147.7 L0 147.7 L0 158.5 L21.6 158.5 L21.6 147.7" class="st1"></path>		<text x="5.05" y="155.8" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rtt</text>		</g>	<g id="shape4-11" v:mid="4" v:groupcontext="shape" transform="translate(308.191,-20.8587)">		<title>Sheet.4</title>		<desc>Rdd</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="12.6" cy="151.3" width="25.21" height="14.4"></v:textrect>		<path d="M25.2 144.1 L0 144.1 L0 158.5 L25.2 158.5 L25.2 144.1" class="st1"></path>		<text x="4.34" y="154" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rdd</text>		</g>	<g id="shape5-15" v:mid="5" v:groupcontext="shape" transform="translate(196.631,104) rotate(90)">		<title>Sheet.5</title>		<path d="M0 158.5 L7.44 158.5" class="st4"></path>	</g>	<g id="shape6-21" v:mid="6" v:groupcontext="shape" transform="translate(56.1312,-122)">		<title>Rectangle.32</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape7-23" v:mid="7" v:groupcontext="shape" transform="translate(92.1312,-122)">		<title>Rectangle.6</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape8-25" v:mid="8" v:groupcontext="shape" transform="translate(128.131,-122)">		<title>Rectangle.33</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape9-27" v:mid="9" v:groupcontext="shape" transform="translate(164.131,-122)">		<title>Rectangle.3</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape10-29" v:mid="10" v:groupcontext="shape" transform="translate(200.131,-122)">		<title>Rectangle.4</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape11-31" v:mid="11" v:groupcontext="shape" transform="translate(236.131,-122)">		<title>Rectangle.34</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape12-33" v:mid="12" v:groupcontext="shape" transform="translate(272.131,-122)">		<title>Rectangle.35</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape13-35" v:mid="13" v:groupcontext="shape" transform="translate(20.1312,-99.5)">		<title>Rectangle.8</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape14-37" v:mid="14" v:groupcontext="shape" transform="translate(56.1312,-99.5)">		<title>Rectangle.9</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape15-39" v:mid="15" v:groupcontext="shape" transform="translate(92.1312,-99.5)">		<title>Rectangle.10</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape16-41" v:mid="16" v:groupcontext="shape" transform="translate(128.131,-99.5)">		<title>Rectangle.11</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape17-43" v:mid="17" v:groupcontext="shape" transform="translate(164.131,-99.5)">		<title>Rectangle.36</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape18-45" v:mid="18" v:groupcontext="shape" transform="translate(200.131,-99.5)">		<title>Rectangle.37</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape19-47" v:mid="19" v:groupcontext="shape" transform="translate(236.131,-99.5)">		<title>Rectangle.38</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape20-49" v:mid="20" v:groupcontext="shape" transform="translate(272.131,-99.5)">		<title>Rectangle.39</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape21-51" v:mid="21" v:groupcontext="shape" transform="translate(205.631,59) rotate(90)">		<title>Sheet.21</title>		<path d="M0 158.5 L20.94 158.5" class="st4"></path>	</g>	<g id="shape22-56" v:mid="22" v:groupcontext="shape" transform="translate(187.631,36.5) rotate(90)">		<title>Sheet.22</title>		<path d="M0 158.5 L43.44 158.5" class="st4"></path>	</g>	<g id="shape23-61" v:mid="23" v:groupcontext="shape" transform="translate(20.1312,-54.5)">		<title>Rounded rectangle</title>		<desc>Op</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18" cy="151.75" width="36" height="13.5"></v:textrect>		<path d="M29.25 158.5 A6.75005 6.75005 -180 0 0 36 151.75 A6.75005 6.75005 -180 0 0 29.25 145 L6.75 145 A6.75005 6.75005					 -180 0 0 0 151.75 A6.75005 6.75005 -180 0 0 6.75 158.5 L29.25 158.5 Z" class="st3"></path>		<text x="12" y="154.45" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>		</g>	<g id="shape24-64" v:mid="24" v:groupcontext="shape" transform="translate(232.631,104) rotate(90)">		<title>Sheet.24</title>		<path d="M0 158.5 L7.44 158.5" class="st4"></path>	</g>	<g id="shape25-69" v:mid="25" v:groupcontext="shape" transform="translate(241.631,59) rotate(90)">		<title>Sheet.25</title>		<path d="M0 158.5 L20.94 158.5" class="st4"></path>	</g>	<g id="shape26-74" v:mid="26" v:groupcontext="shape" transform="translate(223.631,36.5) rotate(90)">		<title>Sheet.26</title>		<path d="M0 158.5 L43.44 158.5" class="st4"></path>	</g>	<g id="shape27-79" v:mid="27" v:groupcontext="shape" transform="translate(56.1312,-54.5)">		<title>Rounded rectangle.16</title>		<desc>Op</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18" cy="151.75" width="36" height="13.5"></v:textrect>		<path d="M29.25 158.5 A6.75005 6.75005 -180 0 0 36 151.75 A6.75005 6.75005 -180 0 0 29.25 145 L6.75 145 A6.75005 6.75005					 -180 0 0 0 151.75 A6.75005 6.75005 -180 0 0 6.75 158.5 L29.25 158.5 Z" class="st3"></path>		<text x="12" y="154.45" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>		</g>	<g id="shape28-82" v:mid="28" v:groupcontext="shape" transform="translate(268.631,104) rotate(90)">		<title>Sheet.28</title>		<path d="M0 158.5 L7.44 158.5" class="st4"></path>	</g>	<g id="shape29-87" v:mid="29" v:groupcontext="shape" transform="translate(277.631,59) rotate(90)">		<title>Sheet.29</title>		<path d="M0 158.5 L20.94 158.5" class="st4"></path>	</g>	<g id="shape30-92" v:mid="30" v:groupcontext="shape" transform="translate(259.631,36.5) rotate(90)">		<title>Sheet.30</title>		<path d="M0 158.5 L43.44 158.5" class="st4"></path>	</g>	<g id="shape31-97" v:mid="31" v:groupcontext="shape" transform="translate(92.1312,-54.5)">		<title>Rounded rectangle.21</title>		<desc>Op</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18" cy="151.75" width="36" height="13.5"></v:textrect>		<path d="M29.25 158.5 A6.75005 6.75005 -180 0 0 36 151.75 A6.75005 6.75005 -180 0 0 29.25 145 L6.75 145 A6.75005 6.75005					 -180 0 0 0 151.75 A6.75005 6.75005 -180 0 0 6.75 158.5 L29.25 158.5 Z" class="st3"></path>		<text x="12" y="154.45" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>		</g>	<g id="shape32-100" v:mid="32" v:groupcontext="shape" transform="translate(304.631,104) rotate(90)">		<title>Sheet.32</title>		<path d="M0 158.5 L7.44 158.5" class="st4"></path>	</g>	<g id="shape33-105" v:mid="33" v:groupcontext="shape" transform="translate(313.631,59) rotate(90)">		<title>Sheet.33</title>		<path d="M0 158.5 L20.94 158.5" class="st4"></path>	</g>	<g id="shape34-110" v:mid="34" v:groupcontext="shape" transform="translate(295.631,36.5) rotate(90)">		<title>Sheet.34</title>		<path d="M0 158.5 L43.44 158.5" class="st4"></path>	</g>	<g id="shape35-115" v:mid="35" v:groupcontext="shape" transform="translate(128.131,-54.5)">		<title>Rounded rectangle.30</title>		<desc>Op</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18" cy="151.75" width="36" height="13.5"></v:textrect>		<path d="M29.25 158.5 A6.75005 6.75005 -180 0 0 36 151.75 A6.75005 6.75005 -180 0 0 29.25 145 L6.75 145 A6.75005 6.75005					 -180 0 0 0 151.75 A6.75005 6.75005 -180 0 0 6.75 158.5 L29.25 158.5 Z" class="st3"></path>		<text x="12" y="154.45" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>		</g>	<g id="shape36-118" v:mid="36" v:groupcontext="shape" transform="translate(340.631,104) rotate(90)">		<title>Sheet.36</title>		<path d="M0 158.5 L7.44 158.5" class="st4"></path>	</g>	<g id="shape37-123" v:mid="37" v:groupcontext="shape" transform="translate(349.631,59) rotate(90)">		<title>Sheet.37</title>		<path d="M0 158.5 L20.94 158.5" class="st4"></path>	</g>	<g id="shape38-128" v:mid="38" v:groupcontext="shape" transform="translate(331.631,36.5) rotate(90)">		<title>Sheet.38</title>		<path d="M0 158.5 L43.44 158.5" class="st4"></path>	</g>	<g id="shape39-133" v:mid="39" v:groupcontext="shape" transform="translate(164.131,-54.5)">		<title>Rounded rectangle.44</title>		<desc>Op</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18" cy="151.75" width="36" height="13.5"></v:textrect>		<path d="M29.25 158.5 A6.75005 6.75005 -180 0 0 36 151.75 A6.75005 6.75005 -180 0 0 29.25 145 L6.75 145 A6.75005 6.75005					 -180 0 0 0 151.75 A6.75005 6.75005 -180 0 0 6.75 158.5 L29.25 158.5 Z" class="st3"></path>		<text x="12" y="154.45" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>		</g>	<g id="shape40-136" v:mid="40" v:groupcontext="shape" transform="translate(376.631,104) rotate(90)">		<title>Sheet.40</title>		<path d="M0 158.5 L7.44 158.5" class="st4"></path>	</g>	<g id="shape41-141" v:mid="41" v:groupcontext="shape" transform="translate(385.631,59) rotate(90)">		<title>Sheet.41</title>		<path d="M0 158.5 L20.94 158.5" class="st4"></path>	</g>	<g id="shape42-146" v:mid="42" v:groupcontext="shape" transform="translate(367.631,36.5) rotate(90)">		<title>Sheet.42</title>		<path d="M0 158.5 L43.44 158.5" class="st4"></path>	</g>	<g id="shape43-151" v:mid="43" v:groupcontext="shape" transform="translate(200.131,-54.5)">		<title>Rounded rectangle.48</title>		<desc>Op</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18" cy="151.75" width="36" height="13.5"></v:textrect>		<path d="M29.25 158.5 A6.75005 6.75005 -180 0 0 36 151.75 A6.75005 6.75005 -180 0 0 29.25 145 L6.75 145 A6.75005 6.75005					 -180 0 0 0 151.75 A6.75005 6.75005 -180 0 0 6.75 158.5 L29.25 158.5 Z" class="st3"></path>		<text x="12" y="154.45" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>		</g>	<g id="shape44-154" v:mid="44" v:groupcontext="shape" transform="translate(412.631,104) rotate(90)">		<title>Sheet.44</title>		<path d="M0 158.5 L7.44 158.5" class="st4"></path>	</g>	<g id="shape45-159" v:mid="45" v:groupcontext="shape" transform="translate(421.631,59) rotate(90)">		<title>Sheet.45</title>		<path d="M0 158.5 L20.94 158.5" class="st4"></path>	</g>	<g id="shape46-164" v:mid="46" v:groupcontext="shape" transform="translate(403.631,36.5) rotate(90)">		<title>Sheet.46</title>		<path d="M0 158.5 L43.44 158.5" class="st4"></path>	</g>	<g id="shape47-169" v:mid="47" v:groupcontext="shape" transform="translate(236.131,-54.5)">		<title>Rounded rectangle.52</title>		<desc>Op</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18" cy="151.75" width="36" height="13.5"></v:textrect>		<path d="M29.25 158.5 A6.75005 6.75005 -180 0 0 36 151.75 A6.75005 6.75005 -180 0 0 29.25 145 L6.75 145 A6.75005 6.75005					 -180 0 0 0 151.75 A6.75005 6.75005 -180 0 0 6.75 158.5 L29.25 158.5 Z" class="st3"></path>		<text x="12" y="154.45" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>		</g>	<g id="shape48-172" v:mid="48" v:groupcontext="shape" transform="translate(448.631,104) rotate(90)">		<title>Sheet.48</title>		<path d="M0 158.5 L7.44 158.5" class="st4"></path>	</g>	<g id="shape49-177" v:mid="49" v:groupcontext="shape" transform="translate(457.631,59) rotate(90)">		<title>Sheet.49</title>		<path d="M0 158.5 L20.94 158.5" class="st4"></path>	</g>	<g id="shape50-182" v:mid="50" v:groupcontext="shape" transform="translate(439.631,36.5) rotate(90)">		<title>Sheet.50</title>		<path d="M0 158.5 L43.44 158.5" class="st4"></path>	</g>	<g id="shape51-187" v:mid="51" v:groupcontext="shape" transform="translate(272.131,-54.5)">		<title>Rounded rectangle.56</title>		<desc>Op</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="18" cy="151.75" width="36" height="13.5"></v:textrect>		<path d="M29.25 158.5 A6.75005 6.75005 -180 0 0 36 151.75 A6.75005 6.75005 -180 0 0 29.25 145 L6.75 145 A6.75005 6.75005					 -180 0 0 0 151.75 A6.75005 6.75005 -180 0 0 6.75 158.5 L29.25 158.5 Z" class="st3"></path>		<text x="12" y="154.45" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>		</g>	<g id="shape52-190" v:mid="52" v:groupcontext="shape" transform="translate(20.1312,-18.5)">		<title>Rectangle.24</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape53-192" v:mid="53" v:groupcontext="shape" transform="translate(56.1312,-18.5)">		<title>Rectangle.25</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape54-194" v:mid="54" v:groupcontext="shape" transform="translate(92.1312,-18.5)">		<title>Rectangle.26</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape55-196" v:mid="55" v:groupcontext="shape" transform="translate(128.131,-18.5)">		<title>Rectangle.27</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape56-198" v:mid="56" v:groupcontext="shape" transform="translate(164.131,-18.5)">		<title>Rectangle.56</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape57-200" v:mid="57" v:groupcontext="shape" transform="translate(200.131,-18.5)">		<title>Rectangle.57</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape58-202" v:mid="58" v:groupcontext="shape" transform="translate(236.131,-18.5)">		<title>Rectangle.58</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g>	<g id="shape59-204" v:mid="59" v:groupcontext="shape" transform="translate(272.131,-18.5)">		<title>Rectangle.60</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<rect x="0" y="140.5" width="36" height="18" class="st3"></rect>	</g></g>
</svg>

**Vector byte operation example**

Four 16-bit halfword values can be packed in a single 64-bit register
pair.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export fig_vector_halfword_op.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="5.12139in" height="2.37833in" viewbox="0 0 368.74 171.24" xml:space="preserve" color-interpolation-filters="sRGB" class="st6"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvConvertTheme"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-3 .st1 { fill: #ffffff; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-3 .st2 { marker-end: url("#mrkr13-23"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-3 .st3 { fill: #2a2aea; fill-opacity: 1; stroke: #2a2aea; stroke-opacity: 1; stroke-width: 0.28409090909091 }
.svg-3 .st4 { stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-3 .st5 { fill: #2a2aea; font-family: Arial; font-size: 0.75em }
.svg-3 .st6 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-23" class="st3" v:arrowtype="13" v:arrowsize="2" v:setback="10.56" refx="-10.56" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-3.52,-3.52) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="group32-1" transform="translate(18.12,-18.12)" v:mid="32" v:groupcontext="group">		<title>Sheet.32</title>		<g id="shape1-2" v:mid="1" v:groupcontext="shape" transform="translate(144,-117)">			<title>Rectangle.45</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="153.24" width="72" height="18" class="st1"></rect>		</g>		<g id="shape2-4" v:mid="2" v:groupcontext="shape" transform="translate(216,-117)">			<title>Rectangle.46</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="153.24" width="72" height="18" class="st1"></rect>		</g>		<g id="shape3-6" v:mid="3" v:groupcontext="shape" transform="translate(0,-117)">			<title>Rectangle.47</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="153.24" width="72" height="18" class="st1"></rect>		</g>		<g id="shape4-8" v:mid="4" v:groupcontext="shape" transform="translate(72,-117)">			<title>Rectangle.48</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="153.24" width="72" height="18" class="st1"></rect>		</g>		<g id="shape5-10" v:mid="5" v:groupcontext="shape" transform="translate(144,-85.5)">			<title>Rectangle.50</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="153.24" width="72" height="18" class="st1"></rect>		</g>		<g id="shape6-12" v:mid="6" v:groupcontext="shape" transform="translate(216,-85.5)">			<title>Rectangle.51</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="153.24" width="72" height="18" class="st1"></rect>		</g>		<g id="shape7-14" v:mid="7" v:groupcontext="shape" transform="translate(0,-85.5)">			<title>Rectangle.52</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="153.24" width="72" height="18" class="st1"></rect>		</g>		<g id="shape8-16" v:mid="8" v:groupcontext="shape" transform="translate(72,-85.5)">			<title>Rectangle.12</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="153.24" width="72" height="18" class="st1"></rect>		</g>		<g id="shape9-18" v:mid="9" v:groupcontext="shape" transform="translate(199.365,54.24) rotate(90)">			<title>Sheet.9</title>			<path d="M0 171.24 L47.94 171.24" class="st2"></path>		</g>		<g id="shape10-24" v:mid="10" v:groupcontext="shape" transform="translate(270.24,54.24) rotate(90)">			<title>Sheet.10</title>			<path d="M0 171.24 L47.94 171.24" class="st2"></path>		</g>		<g id="shape11-29" v:mid="11" v:groupcontext="shape" transform="translate(342.24,54.24) rotate(90)">			<title>Sheet.11</title>			<path d="M0 171.24 L47.94 171.24" class="st2"></path>		</g>		<g id="shape12-34" v:mid="12" v:groupcontext="shape" transform="translate(415.365,54.24) rotate(90)">			<title>Sheet.12</title>			<path d="M0 171.24 L47.94 171.24" class="st2"></path>		</g>		<g id="shape13-39" v:mid="13" v:groupcontext="shape" transform="translate(297.24,85.74) rotate(90)">			<title>Sheet.13</title>			<path d="M0 171.24 L16.44 171.24" class="st2"></path>		</g>		<g id="shape14-44" v:mid="14" v:groupcontext="shape" transform="translate(225.24,85.74) rotate(90)">			<title>Sheet.14</title>			<path d="M0 171.24 L16.44 171.24" class="st2"></path>		</g>		<g id="shape15-49" v:mid="15" v:groupcontext="shape" transform="translate(369.24,85.74) rotate(90)">			<title>Sheet.15</title>			<path d="M0 171.24 L16.44 171.24" class="st2"></path>		</g>		<g id="shape16-54" v:mid="16" v:groupcontext="shape" transform="translate(441.24,85.74) rotate(90)">			<title>Sheet.16</title>			<path d="M0 171.24 L16.44 171.24" class="st2"></path>		</g>		<g id="shape17-59" v:mid="17" v:groupcontext="shape" transform="translate(287.69,0)">			<title>Sheet.17</title>			<desc>Rdd</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="11.25" cy="162.24" width="22.5" height="18"></v:textrect>			<path d="M22.5 153.24 L0 153.24 L0 171.24 L22.5 171.24 L22.5 153.24" class="st4"></path>			<text x="2.99" y="164.94" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rdd</text>			</g>		<g id="shape18-63" v:mid="18" v:groupcontext="shape" transform="translate(144,-1.42109E-13)">			<title>Rectangle.23</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="153.24" width="72" height="18" class="st1"></rect>		</g>		<g id="shape19-65" v:mid="19" v:groupcontext="shape" transform="translate(216,-1.42109E-13)">			<title>Rectangle.132</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="153.24" width="72" height="18" class="st1"></rect>		</g>		<g id="shape20-67" v:mid="20" v:groupcontext="shape">			<title>Rectangle.133</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="153.24" width="72" height="18" class="st1"></rect>		</g>		<g id="shape21-69" v:mid="21" v:groupcontext="shape" transform="translate(72,-1.42109E-13)">			<title>Rectangle.134</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="153.24" width="72" height="18" class="st1"></rect>		</g>		<g id="shape22-71" v:mid="22" v:groupcontext="shape" transform="translate(283.74,130.74) rotate(90)">			<title>Sheet.22</title>			<path d="M0 171.24 L11.94 171.24" class="st2"></path>		</g>		<g id="shape23-76" v:mid="23" v:groupcontext="shape" transform="translate(355.74,130.927) rotate(90)">			<title>Sheet.23</title>			<path d="M0 171.24 L11.75 171.24" class="st2"></path>		</g>		<g id="shape24-81" v:mid="24" v:groupcontext="shape" transform="translate(427.74,130.927) rotate(90)">			<title>Sheet.24</title>			<path d="M0 171.24 L11.75 171.24" class="st2"></path>		</g>		<g id="shape25-86" v:mid="25" v:groupcontext="shape" transform="translate(211.74,130.74) rotate(90)">			<title>Sheet.25</title>			<path d="M0 171.24 L11.94 171.24" class="st2"></path>		</g>		<g id="shape26-91" v:mid="26" v:groupcontext="shape" transform="translate(9,-40.5)">			<title>Rounded rectangle.139</title>			<desc>Op</desc>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="31.5" cy="162.24" width="63" height="18"></v:textrect>			<path d="M54 171.24 A9.00007 9.00007 -180 0 0 63 162.24 A9.00007 9.00007 -180 0 0 54 153.24 L9 153.24 A9.00007 9.00007						 -180 0 0 0 162.24 A9.00007 9.00007 -180 0 0 9 171.24 L54 171.24 Z" class="st1"></path>			<text x="25.5" y="164.94" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>			</g>		<g id="shape27-94" v:mid="27" v:groupcontext="shape" transform="translate(287.69,-123.045)">			<title>Sheet.27</title>			<desc>Rss</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="15.75" cy="165.263" width="31.5" height="11.9549"></v:textrect>			<path d="M31.5 159.29 L0 159.29 L0 171.24 L31.5 171.24 L31.5 159.29" class="st4"></path>			<text x="8" y="167.96" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rss</text>			</g>		<g id="shape28-98" v:mid="28" v:groupcontext="shape" transform="translate(287.69,-90)">			<title>Sheet.28</title>			<desc>Rtt</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="13.5" cy="165.263" width="27" height="11.9549"></v:textrect>			<path d="M27 159.29 L0 159.29 L0 171.24 L27 171.24 L27 159.29" class="st4"></path>			<text x="7.75" y="167.96" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rtt</text>			</g>		<g id="shape29-102" v:mid="29" v:groupcontext="shape" transform="translate(81,-40.5)">			<title>Rounded rectangle.117</title>			<desc>Op</desc>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="31.5" cy="162.24" width="63" height="18"></v:textrect>			<path d="M54 171.24 A9.00007 9.00007 -180 0 0 63 162.24 A9.00007 9.00007 -180 0 0 54 153.24 L9 153.24 A9.00007 9.00007						 -180 0 0 0 162.24 A9.00007 9.00007 -180 0 0 9 171.24 L54 171.24 Z" class="st1"></path>			<text x="25.5" y="164.94" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>			</g>		<g id="shape30-105" v:mid="30" v:groupcontext="shape" transform="translate(153,-40.3125)">			<title>Rounded rectangle.140</title>			<desc>Op</desc>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="31.5" cy="162.24" width="63" height="18"></v:textrect>			<path d="M54 171.24 A9.00007 9.00007 -180 0 0 63 162.24 A9.00007 9.00007 -180 0 0 54 153.24 L9 153.24 A9.00007 9.00007						 -180 0 0 0 162.24 A9.00007 9.00007 -180 0 0 9 171.24 L54 171.24 Z" class="st1"></path>			<text x="25.5" y="164.94" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>			</g>		<g id="shape31-108" v:mid="31" v:groupcontext="shape" transform="translate(225,-40.3125)">			<title>Rounded rectangle.141</title>			<desc>Op</desc>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="31.5" cy="162.24" width="63" height="18"></v:textrect>			<path d="M54 171.24 A9.00007 9.00007 -180 0 0 63 162.24 A9.00007 9.00007 -180 0 0 54 153.24 L9 153.24 A9.00007 9.00007						 -180 0 0 0 162.24 A9.00007 9.00007 -180 0 0 9 171.24 L54 171.24 Z" class="st1"></path>			<text x="25.5" y="164.94" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>			</g>	</g></g>
</svg>

**Vector halfword operation example**

Two 32-bit word values can be packed in a single 64-bit register
pair.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export fig_vector_word_op.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="5.13097in" height="2.38889in" viewbox="0 0 369.43 172" xml:space="preserve" color-interpolation-filters="sRGB" class="st6"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvConvertTheme"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-4 .st1 { fill: #ffffff; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-4 .st2 { marker-end: url("#mrkr13-15"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-4 .st3 { fill: #2a2aea; fill-opacity: 1; stroke: #2a2aea; stroke-opacity: 1; stroke-width: 0.28409090909091 }
.svg-4 .st4 { stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-4 .st5 { fill: #2a2aea; font-family: Arial; font-size: 0.75em }
.svg-4 .st6 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-15" class="st3" v:arrowtype="13" v:arrowsize="2" v:setback="10.56" refx="-10.56" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-3.52,-3.52) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="group2-1" transform="translate(18.5,-18.5)" v:mid="2" v:groupcontext="group">		<title>Sheet.2</title>		<g id="shape1-2" v:mid="1" v:groupcontext="shape" transform="translate(144.31,-117)">			<title>Rectangle.45</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="154" width="143.69" height="18" class="st1"></rect>		</g>		<g id="shape4-4" v:mid="4" v:groupcontext="shape" transform="translate(0,-117)">			<title>Rectangle.48</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="154" width="144.31" height="18" class="st1"></rect>		</g>		<g id="shape5-6" v:mid="5" v:groupcontext="shape" transform="translate(144,-85.5)">			<title>Rectangle.50</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="154" width="144" height="18" class="st1"></rect>		</g>		<g id="shape8-8" v:mid="8" v:groupcontext="shape" transform="translate(0,-85.5)">			<title>Rectangle.12</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="154" width="144.31" height="18" class="st1"></rect>		</g>		<g id="shape10-10" v:mid="10" v:groupcontext="shape" transform="translate(230.5,55) rotate(90)">			<title>Sheet.10</title>			<path d="M0 172 L47.94 172" class="st2"></path>		</g>		<g id="shape12-16" v:mid="12" v:groupcontext="shape" transform="translate(375.625,55) rotate(90)">			<title>Sheet.12</title>			<path d="M0 172 L47.94 172" class="st2"></path>		</g>		<g id="shape13-21" v:mid="13" v:groupcontext="shape" transform="translate(257.5,86.5) rotate(90)">			<title>Sheet.13</title>			<path d="M0 172 L16.44 172" class="st2"></path>		</g>		<g id="shape16-26" v:mid="16" v:groupcontext="shape" transform="translate(401.5,86.5) rotate(90)">			<title>Sheet.16</title>			<path d="M0 172 L16.44 172" class="st2"></path>		</g>		<g id="shape17-31" v:mid="17" v:groupcontext="shape" transform="translate(288,-4.5)">			<title>Sheet.17</title>			<desc>Rdd</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="15.75" cy="165.25" width="31.5" height="13.5"></v:textrect>			<path d="M31.5 158.5 L0 158.5 L0 172 L31.5 172 L31.5 158.5" class="st4"></path>			<text x="7.49" y="167.95" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rdd</text>			</g>		<g id="shape18-35" v:mid="18" v:groupcontext="shape" transform="translate(144.31,-1.42109E-13)">			<title>Rectangle.23</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="154" width="143.69" height="18" class="st1"></rect>		</g>		<g id="shape21-37" v:mid="21" v:groupcontext="shape">			<title>Rectangle.134</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="154" width="144.31" height="18" class="st1"></rect>		</g>		<g id="shape22-39" v:mid="22" v:groupcontext="shape" transform="translate(244,131.5) rotate(90)">			<title>Sheet.22</title>			<path d="M0 172 L11.94 172" class="st2"></path>		</g>		<g id="shape24-44" v:mid="24" v:groupcontext="shape" transform="translate(388,131.687) rotate(90)">			<title>Sheet.24</title>			<path d="M0 172 L11.75 172" class="st2"></path>		</g>		<g id="shape27-49" v:mid="27" v:groupcontext="shape" transform="translate(288,-123.045)">			<title>Sheet.27</title>			<desc>Rss</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="15.75" cy="166.023" width="31.5" height="11.9549"></v:textrect>			<path d="M31.5 160.05 L0 160.05 L0 172 L31.5 172 L31.5 160.05" class="st4"></path>			<text x="8" y="168.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rss</text>			</g>		<g id="shape28-53" v:mid="28" v:groupcontext="shape" transform="translate(288,-90)">			<title>Sheet.28</title>			<desc>Rtt</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="11.25" cy="166.023" width="22.5" height="11.9549"></v:textrect>			<path d="M22.5 160.05 L0 160.05 L0 172 L22.5 172 L22.5 160.05" class="st4"></path>			<text x="5.5" y="168.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rtt</text>			</g>		<g id="shape29-57" v:mid="29" v:groupcontext="shape" transform="translate(40.5,-40.5)">			<title>Rounded rectangle.117</title>			<desc>Op</desc>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="31.5" cy="163" width="63" height="18"></v:textrect>			<path d="M54 172 A9.00007 9.00007 -180 0 0 63 163 A9.00007 9.00007 -180 0 0 54 154 L9 154 A9.00007 9.00007 -180 0						 0 0 163 A9.00007 9.00007 -180 0 0 9 172 L54 172 Z" class="st1"></path>			<text x="25.5" y="165.7" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>			</g>		<g id="shape31-60" v:mid="31" v:groupcontext="shape" transform="translate(184.5,-40.3125)">			<title>Rounded rectangle.141</title>			<desc>Op</desc>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="31.5" cy="163" width="63" height="18"></v:textrect>			<path d="M54 172 A9.00007 9.00007 -180 0 0 63 163 A9.00007 9.00007 -180 0 0 54 154 L9 154 A9.00007 9.00007 -180 0						 0 0 163 A9.00007 9.00007 -180 0 0 9 172 L54 172 Z" class="st1"></path>			<text x="25.5" y="165.7" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Op</text>			</g>	</g></g>
</svg>

**Vector word operation example**

## Instruction options

Some instructions support optional scaling, saturation, and rounding.
There are no mode bits controlling these options - instead, the
instruction syntax explicitly specifies the options.

### Fractional scaling

In fractional data format, word length and radix point position
determine the range of the fixed-point fractional values.

The `:<<1` specifies fractional scaling. For example:

R3:2 = cmpy(R0,R1):<<1:sat
    Copy to clipboard

When two fractional numbers are multiplied, the product must be
scaled to restore the original fractional data format. The Hexagon
processor allows specification of the fractional scaling of the
product in the instruction for shifts of 0 and 1. Perform a shift of
1 for Q1.15 numbers. Perform a shift of 0 for integer multiplication.

### Saturation

Certain instructions are available in saturating form. If a
saturating arithmetic instruction has a result that is smaller than
the minimum value, the result is set to the minimum value. Similarly,
if the operation has a result that is greater than the maximum value,
the result is set to the maximum value.

Saturation is specified in an instruction by adding the `:sat`
option. For example:

R2 = abs(R1):sat
    Copy to clipboard

When a saturating operation saturates to the maximum or minimum value,
hardware sets the overflow (OVF) bit in the [user status register](https://docs.qualcomm.com/doc/80-N2040-60/topic/registers.html#v79-prm-user-status-register).
It remains set until explicitly cleared by a control register transfer to USR. For
vector-type saturating operations, saturation for any individual elements of the vector
sets USR.OVF.

### Arithmetic rounding

Certain signed multiply instructions support optional arithmetic
rounding also known as biased rounding. The arithmetic rounding
operation takes a double precision fractional value and adds 0x8000
to the low 16 bits.

The `:rnd` option specifies rounding. For example:

R2 = mpy(R1.h,R2.h):rnd
    Copy to clipboard

Note

Arithmetic rounding can accumulate numerical errors,
especially when the number to round is exactly 0.5. This occurs most
frequently when dividing by two or averaging.

### Convergent rounding

To address the problem of error accumulation in convergent rounding, the
Hexagon processor includes four instructions that support positive and
negative averaging with a convergent rounding option. The `:crnd` option
specifies roudning. For example:

R3:2 = vnavgh(R1:0,R5:4):crnd:sat
    Copy to clipboard

Convergent rounding computes (A + B) or (A - B) for the signed average
and negative average respectively. If the two least significant bits
after the addition/subtraction are 11, a rounding constant of 1 is added,
otherwise a 0 is added. The result is then shifted right by one bit.
Convergent rounding accumulates less error than arithmetic rounding.

### Scaling for divide and square-root

On the Hexagon processor, floating point divide and square-root
operations are implemented in software using library functions. To
enable the efficient implementation of these operations, the
processor supports special variants of the multiply-accumulate
instruction, named scale fused multiply add (FMA).

Scale FMA supports optional scaling of the product generated by the
floating-point fused multiply-add instruction.

The `:scale` option and a predicate register operand specifies scaling.
For example:

R3 += sfmpy(R0,R1,P2):scale
    Copy to clipboard

For single precision, the scaling factor is two raised to the power
specified by the contents of the predicate register (which is treated
as an 8-bit two’s complement value). For double precision, the
predicate register value is doubled before use as a power of two.

Note

Do not use scale FMA instructions outside of divide and
square-root library routines. No guarantee is provided that future
versions of the Hexagon processor implements these instructions using
the same semantics. Future versions assume only that compatibility
for scale FMA is limited to the needs of divide and square-root
library routines.

## XTYPE operations

The XTYPE instruction class includes most of the data-processing
operations performed by the Hexagon processor. These operations are
categorized by their operation type.

### ALU

[XTYPE ALU](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#xtype-alu) operations modify 8-, 16-, 32-, and 64-bit
data. These operations include:

- Add and subtract with and without saturation
- Add and subtract with accumulate
- Absolute value
- Logical operations
- Min, max, negate instructions
- Register transfers of 64-bit data
- Word to doubleword sign extension
- Comparisons

### Bit manipulation

[XTYPE bit](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#xtype-bit) manipulation operations modify bit fields
in a register or register pair. These operations include:

- Bit field insert
- Bit field signed and unsigned extract
- Count leading and trailing bits
- Compare bitmasks
- Set/clear/toggle bit
- Test bit operation
- Interleave/deinterleave bits
- Bit reverse
- Split bit field
- Masked parity and linear feedback shift
- Table index formation

### Complex

[XTYPE complex](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#xtype-complex) operations manipulate complex
numbers. These operations include:

- Complex add and subtract
- Complex multiply with optional round and pack
- Vector complex multiply
- Vector complex conjugate
- Vector complex rotate
- Vector reduce complex multiply real or imaginary

### Floating point

[XTYPE FP](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#xtype-fp) operations manipulate single-precision
floating point numbers. These operations include:

- Addition and subtraction
- Multiplication (with optional scaling)
- Min/max/compare
- Format conversion

The Hexagon floating-point operations are defined to support the IEEE
floating-point standard. However, certain IEEE-required operations,
such as divide and square root, are not supported directly. Instead,
special instructions are defined to support the implementation of the
required operations as library routines. These instructions include:

- A special version of the fused multiply-add instruction designed
specifically for use in library routines.
- Reciprocal/square root approximations which compute the approximate
initial values used in reciprocal and reciprocal-square-root
routines.
- Extreme value assistance which adjusts input values if they cannot
produce correct results using convergence algorithms.

Note

The special floating-point instructions are not intended
for use directly in user code; use the special floating-point
instructions only in the floating point library.

#### Format conversion

The floating-point conversion instructions sfmake and dfmake convert
an unsigned 10-bit immediate value into the corresponding
floating-point value.

The immediate value must be encoded so that bits [5:0] contain the
significand, and bits [9:6] contain the exponent. The exponent value is added
to the initial exponent value (bias - 6).

For example, to generate the single-precision floating point value
2.0, bits [5:0] must be set to 0, and bits [9:6] set to 7. Performing
the sfmake operation on this immediate value yields the floating
point value 0x40000000, which is 2.0.

Note

The conversion instructions are designed to handle common
floating point values, including most integers and many basic
fractions (1/2, 3/4, and so on).

#### Rounding

The Hexagon [User status register](https://docs.qualcomm.com/doc/80-N2040-60/topic/registers.html#v79-prm-user-status-register) includes
the FPRND field, which specifies the IEEE-defined floating-point
rounding mode.

#### Exceptions

The Hexagon user status register includes five status fields, which
work as sticky flags for the five IEEE-defined exception conditions:
inexact, overflow, underflow, divide by zero, and invalid. A sticky
flag is set when the corresponding exception occurs, and remains set
until explicitly cleared.

The user status register also includes five mode fields that enable
or disable the floating-point exceptions. For every instruction packet
containing a floating-point operation, if a floating-point sticky
flag and the corresponding exception-enable bit are both set, a
floating-point exception is generated. After the packet commits, the
Hexagon processor takes the exception.

Note

Non-floating-point instructions never generate a
floating-point exception, regardless of the state of the sticky flag and
exception -enable bits.

### Multiply

Multiply operations support fixed-point multiplication, including
both single- and double- precision multiplication, and polynomial
multiplication.

#### Single precision

In single-precision arithmetic, a 16-bit value is multiplied by
another 16-bit value. These operands can come from the high portion
or low portion of any register. Depending on the instruction, the
result of the 16 x 16 operation can optionally be accumulated,
saturated, rounded, or shifted left by 0 bits to 1 bits.

The instruction set supports operations on any combination of signed
and unsigned data.

[Single-precision multiply options](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#v79-tbl-single-precision-multiply-options) summarizes the options available for 16
x 16 single precision multiplications. The symbols used in the table
are as follows:

- SS: Perform signed x signed multiply
- UU: Perform unsigned x unsigned multiply
- SU: Perform signed x unsigned multiply
- A+: Result added to accumulator
- A-: Result subtracted from accumulator
- 0: Result not added to accumulator

Single-precision multiply options

| **Multiply** | **Result** | **Sign** | **Accumulate** | **Sat** | **Rnd** | **Scale** |
| --- | --- | --- | --- | --- | --- | --- |
| 16 x 16 | 32 | SS | A+, A- | Yes | No | 0-1 |
| 16 x 16 | 32 | SS | 0 | Yes | Yes | 0-1 |
| 16 x 16 | 64 | SS | A+, A- | No | No | 0-1 |
| 16 x 16 | 64 | SS | 0 | No | Yes | 0-1 |
| 16 x 16 | 32 | UU | A+, A-, 0 | No | No | 0-1 |
| 16 x 16 | 64 | UU | A+, A-, 0 | No | No | 0-1 |
| 16 x 16 | 32 | SU | A+, 0 | Yes | No | 0-1 |

#### Double precision

Double precision instructions are available for both 32 x 32 and 32 x
16 multiplication:

- For 32 x 32 multiplication the result is either 64 bits or 32 bits.
The 32-bit result is either the high or low portion of the 64-bit
product.
- For 32 x 16 multiplication the result is always taken as the upper 32
bits. The operands are either signed or unsigned.

Double precision multiply options

| **Multiply** | **Result** | **Sign** | **Accumulate** | **Sat** | **Rnd** | **Scale** |
| --- | --- | --- | --- | --- | --- | --- |
| 32 x 32 | 64 | SS, UU | A+, A-, 0 | No | No | 0 |
| 32 x 32 | 32 (upper) | SS, UU | 0 | No | Yes | 0 |
| 32 x 32 | 32 (low) | SS, UU | A+, 0 | No | No | 0 |
| 32 x 16 | 32 (upper) | SS, UU | A+, 0 | Yes | Yes | 0-1 |
| 32 x 32 | 32 (upper) | SU | 0 | No | No | 0 |

#### Polynomial

Polynomial [XTYPE MPY](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#xtype-mpy) instructions are available for
both words and vector halfwords.

These instructions are useful for many algorithms including scramble
code generation, cryptographic algorithms, convolutional, and Reed
Solomon code.

### Permute

[XTYPE perm](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#xtype-perm) operations perform operations on vector
data that includes arithmetic, format conversion, and rearrangement
of vector elements. The following types of conversions are supported:

- Swizzle bytes
- Vector shuffle
- Vector align
- Vector saturate and pack
- Vector splat bytes
- Vector splice
- Vector sign extend halfwords
- Vector zero extend bytes
- Vector zero extend halfwords
- Scalar saturate to byte, halfword, word
- Vector pack high and low halfwords
- Vector round and pack
- Vector splat halfwords

### Predicate

[XTYPE PRED](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#xtype-pred) operations modify predicate source data.
Available categories of instructions include:

- Vector mask generation
- Predicate transfers
- Viterbi packing

### Shift

Scalar [XTYPE SHIFT](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#xtype-shift) operations perform 32 and
64-bit shifts followed by an optional addition/subtraction or logical
operation. <cite>64-bit shift and add/sub/logical &lt;v79-fig-64-bit-shift-and-add-sub-logical&gt;</cite> shows the general
operation.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export fig_shifter.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="5.25861in" height="3.50694in" viewbox="0 0 378.62 252.5" xml:space="preserve" color-interpolation-filters="sRGB" class="st9"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvConvertTheme"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-5 .st1 { stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-5 .st2 { fill: #2a2aea; font-family: Arial; font-size: 0.75em }
.svg-5 .st3 { fill: #ffffff; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-5 .st4 { fill: none; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-5 .st5 { marker-end: url("#mrkr13-21"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-5 .st6 { fill: #2a2aea; fill-opacity: 1; stroke: #2a2aea; stroke-opacity: 1; stroke-width: 0.28409090909091 }
.svg-5 .st7 { font-size: 1em }
.svg-5 .st8 { stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-5 .st9 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-21" class="st6" v:arrowtype="13" v:arrowsize="2" v:setback="10.56" refx="-10.56" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-3.52,-3.52) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="group19-1" transform="translate(18.62,-18)" v:mid="19" v:groupcontext="group">		<title>Sheet.19</title>		<g id="shape1-2" v:mid="1" v:groupcontext="shape" transform="translate(296.88,-202.5)">			<title>Sheet.1</title>			<desc>Rss</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="13.5" cy="246.523" width="27" height="11.9549"></v:textrect>			<path d="M27 240.55 L0 240.55 L0 252.5 L27 252.5 L27 240.55" class="st1"></path>			<text x="5.75" y="249.22" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rss</text>			</g>		<g id="shape2-6" v:mid="2" v:groupcontext="shape" transform="translate(153,-198)">			<title>Rectangle.45</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<rect x="0" y="234.5" width="144" height="18" class="st3"></rect>		</g>		<g id="shape3-8" v:mid="3" v:groupcontext="shape" transform="translate(9,-198)">			<title>Rectangle.47</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<rect x="0" y="234.5" width="288" height="18" class="st4"></rect>		</g>		<g id="shape4-10" v:mid="4" v:groupcontext="shape" transform="translate(296.88,-171)">			<title>Sheet.4</title>			<desc># / Rt</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="13.5" cy="246.523" width="27" height="11.9549"></v:textrect>			<path d="M27 240.55 L0 240.55 L0 252.5 L27 252.5 L27 240.55" class="st1"></path>			<text x="2.75" y="249.22" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist># / Rt</text>			</g>		<g id="shape5-14" v:mid="5" v:groupcontext="shape" transform="translate(225,-166.5)">			<title>Rectangle.51</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<rect x="0" y="234.5" width="72" height="18" class="st4"></rect>		</g>		<g id="shape6-16" v:mid="6" v:groupcontext="shape" transform="translate(405.5,54.5) rotate(90)">			<title>Sheet.6</title>			<path d="M0 252.5 L74.94 252.5" class="st5"></path>		</g>		<g id="shape7-22" v:mid="7" v:groupcontext="shape" transform="translate(471.093,226.062) rotate(123.69)">			<title>Sheet.7</title>			<path d="M0 252.5 L54.34 252.5" class="st5"></path>		</g>		<g id="shape8-27" v:mid="8" v:groupcontext="shape" transform="translate(252.759,-138.023)">			<title>Sheet.8</title>			<desc>Shift amount</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="17.6203" cy="246.523" width="35.25" height="11.9549"></v:textrect>			<path d="M35.24 240.55 L0 240.55 L0 252.5 L35.24 252.5 L35.24 240.55" class="st1"></path>			<text x="8.62" y="243.82" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Shift <tspan x="2.61" dy="1.2em" class="st7">amount</tspan></text>			</g>		<g id="shape9-32" v:mid="9" v:groupcontext="shape" transform="translate(297.759,-9)">			<title>Sheet.9</title>			<desc>Rxx</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="13.0603" cy="243.5" width="26.13" height="18"></v:textrect>			<path d="M26.12 234.5 L0 234.5 L0 252.5 L26.12 252.5 L26.12 234.5" class="st1"></path>			<text x="5.31" y="246.2" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rxx</text>			</g>		<g id="shape10-36" v:mid="10" v:groupcontext="shape" transform="translate(-0.12,-9)">			<title>Rectangle.16</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<rect x="0" y="234.5" width="288" height="18" class="st4"></rect>		</g>		<g id="shape11-38" v:mid="11" v:groupcontext="shape" transform="translate(58.5,-94.5)">			<title>Rounded rectangle</title>			<desc>64-bit shifter</desc>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="94.5" cy="243.5" width="189" height="18"></v:textrect>			<path d="M180 252.5 A9.00007 9.00007 -180 0 0 189 243.5 A9.00007 9.00007 -180 0 0 180 234.5 L9 234.5 A9.00007 9.00007						 -180 0 0 0 243.5 A9.00007 9.00007 -180 0 0 9 252.5 L180 252.5 Z" class="st4"></path>			<text x="69.74" y="246.2" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>64-bit shifter</text>			</g>		<g id="shape12-41" v:mid="12" v:groupcontext="shape" transform="translate(58.5,-54)">			<title>Rounded rectangle.20</title>			<desc>64-bit add/sub/logical</desc>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="94.5" cy="243.5" width="189" height="18"></v:textrect>			<path d="M180 252.5 A9.00007 9.00007 -180 0 0 189 243.5 A9.00007 9.00007 -180 0 0 180 234.5 L9 234.5 A9.00007 9.00007						 -180 0 0 0 243.5 A9.00007 9.00007 -180 0 0 9 252.5 L180 252.5 Z" class="st4"></path>			<text x="51.97" y="246.2" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>64-bit add/sub/logical</text>			</g>		<g id="shape13-44" v:mid="13" v:groupcontext="shape" transform="translate(405.5,158) rotate(90)">			<title>Sheet.13</title>			<path d="M0 252.5 L11.94 252.5" class="st5"></path>		</g>		<g id="shape14-49" v:mid="14" v:groupcontext="shape" transform="translate(437,164.187) rotate(90)">			<title>Sheet.14</title>			<path d="M0 252.5 L5.75 252.5" class="st5"></path>		</g>		<g id="shape15-54" v:mid="15" v:groupcontext="shape" transform="translate(184.5,-88.3125)">			<title>Sheet.15</title>			<path d="M0 252.5 L112.5 252.5" class="st8"></path>		</g>		<g id="shape16-57" v:mid="16" v:groupcontext="shape" transform="translate(549.5,164.187) rotate(90)">			<title>Sheet.16</title>			<path d="M0 252.5 L70.31 252.5" class="st8"></path>		</g>		<g id="shape17-60" v:mid="17" v:groupcontext="shape" transform="translate(287.88,-18)">			<title>Sheet.17</title>			<path d="M0 252.5 L9.12 252.5" class="st8"></path>		</g>		<g id="shape18-63" v:mid="18" v:groupcontext="shape" transform="translate(405.5,198.5) rotate(90)">			<title>Sheet.18</title>			<path d="M0 252.5 L16.44 252.5" class="st5"></path>		</g>	</g></g>
</svg>

**64-bit shift and add/sub/logical**

Four shift types are supported:

- ASR: Arithmetic shift right
- ASL: Arithmetic shift left
- LSR: Logical shift right
- LSL: Logical shift left

When arithmetic right shifts are performed, the sign bit is shifted
in, whereas logical right shifts shift in zeros. Left shifts always
shift in zeros.

In register-based shifts, the Rt[6:0] register holds the number of bits
to shift and is a signed two’s complement number. If this value is positive,
the instruction opcode tells the direction of shift (right or left).
If this value is negative, the shift direction indicated by the opcode is reversed.

Some shifts are available with saturation and rounding options.

## ALU32 operations

The [ALU32](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#alu32) instruction class includes general
arithmetic/logical operations on 32-bit data:

- Add, subtract, negate without saturation on 32-bit data
- Logical operations such as AND, OR, XOR, AND with immediate, and OR
with immediate
- Scalar 32-bit compares
- Combine halfwords, combine words, combine with immediates, shift
halfwords, and Mux
- Conditional add, combine, logical, subtract, and transfer.
- NOP
- Sign and zero-extend bytes and halfwords
- Transfer immediates and registers
- Vector add, subtract, and average halfwords

Note

ALU32 instructions can execute on any slot
([resource constraints](https://docs.qualcomm.com/doc/80-N2040-60/topic/instructions.html#v79-prm-resource-constraints)).

[Conditional execution](https://docs.qualcomm.com/doc/80-N2040-60/topic/conditional-execution.html) describes the conditional execution and
compare instructions.

## Vector operations

Vector operations support arithmetic operations on vectors of bytes,
halfwords, and words.

The vector operations belong to the XTYPE instruction class (except
for vector add, subtract, and average halfwords, which are ALU32).

### Vector byte operations

The vector byte operations process packed vectors of signed or
unsigned bytes. They include the following operations:

- Vector add and subtract signed or unsigned bytes
- Vector min and max signed or unsigned bytes
- Vector compare signed or unsigned bytes
- Vector average unsigned bytes
- Vector reduce add unsigned bytes
- Vector sum of absolute differences unsigned bytes

### Vector halfword operations

The vector halfword operations process packed 16-bit halfwords. They
include the following operations:

- Vector add and subtract halfwords
- Vector average halfwords
- Vector compare halfwords
- Vector min and max halfwords
- Vector shift halfwords
- Vector dual multiply
- Vector dual multiply with round and pack
- Vector multiply even halfwords with an optional round and pack
- Vector multiply halfwords
- Vector reduce multiply halfwords

For example, [vector halfword shift right](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#v79-fig-vector-halfword-shift-right)
shows the operation of the vector arithmetic shift right halfword (vasrh)
instruction. In this instruction, each 16-bit half-word shifts right
by the amount specified in a register or an immediate
value. Because the shift is arithmetic, the bits shifted in are copies of
the sign bit.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export fig_vector_halfword_shift.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="5.60298in" height="2.66625in" viewbox="0 0 403.415 191.97" xml:space="preserve" color-interpolation-filters="sRGB" class="st9"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvConvertTheme"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-6 .st1 { fill: #f8f8f8; fill-opacity: 0.42; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.72 }
.svg-6 .st2 { fill: #ffffff; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-6 .st3 { fill: #000000; font-family: Arial; font-size: 0.75em }
.svg-6 .st4 { stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-6 .st5 { fill: #c0c0c0; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-6 .st6 { marker-end: url("#mrkr13-30"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-6 .st7 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.08695652173913 }
.svg-6 .st8 { marker-start: url("#mrkr5-43"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-6 .st9 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-30" class="st7" v:arrowtype="13" v:arrowsize="2" v:setback="34.5" refx="-34.5" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-11.5,-11.5) "></use>	</marker>	<g id="lend5">		<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"></path>	</g>	<marker id="mrkr5-43" class="st7" v:arrowtype="5" v:arrowsize="2" v:setback="18.625" refx="18.625" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend5" transform="scale(11.5) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="shape42-1" v:mid="42" v:groupcontext="shape" transform="translate(18.36,-18.36)">		<title>Sheet.42</title>		<rect x="0" y="36.72" width="360" height="155.25" class="st1"></rect>	</g>	<g id="group41-3" transform="translate(26.7833,-32.31)" v:mid="41" v:groupcontext="group">		<title>Sheet.41</title>		<g id="shape1-4" v:mid="1" v:groupcontext="shape" transform="translate(236.25,-117)">			<title>Rectangle.46</title>			<desc>Shift amount</desc>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="36" cy="182.97" width="72" height="18"></v:textrect>			<rect x="0" y="173.97" width="72" height="18" class="st2"></rect>			<text x="10.74" y="185.67" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Shift amount</text>			</g>		<g id="shape2-7" v:mid="2" v:groupcontext="shape" transform="translate(51.75,-85.5)">			<title>Rectangle.52</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="24.75" height="18" class="st2"></rect>		</g>		<g id="shape3-9" v:mid="3" v:groupcontext="shape" transform="translate(306.577,5.68434E-14)">			<title>Sheet.3</title>			<desc>Rdd</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="13.5" cy="185.993" width="27" height="11.9549"></v:textrect>			<path d="M27 180.02 L0 180.02 L0 191.97 L27 191.97 L27 180.02" class="st4"></path>			<text x="5.24" y="188.69" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rdd</text>			</g>		<g id="shape4-13" v:mid="4" v:groupcontext="shape" transform="translate(4.87972,2.84217E-14)">			<title>Rectangle.133</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="72" height="18" class="st2"></rect>		</g>		<g id="shape5-15" v:mid="5" v:groupcontext="shape" transform="translate(311.077,-120.135)">			<title>Sheet.5</title>			<desc>Rt / #u4</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="18" cy="185.993" width="36" height="11.9549"></v:textrect>			<path d="M36 180.02 L0 180.02 L0 191.97 L36 191.97 L36 180.02" class="st4"></path>			<text x="2.24" y="188.69" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rt / #u4</text>			</g>		<g id="shape6-19" v:mid="6" v:groupcontext="shape" transform="translate(306.577,-90)">			<title>Sheet.6</title>			<desc>Rss</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="12.9375" cy="185.993" width="25.88" height="11.9549"></v:textrect>			<path d="M25.87 180.02 L0 180.02 L0 191.97 L25.87 191.97 L25.87 180.02" class="st4"></path>			<text x="5.19" y="188.69" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rss</text>			</g>		<g id="shape7-23" v:mid="7" v:groupcontext="shape" transform="translate(2.25,-85.5)">			<title>Rectangle.10</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="49.5" height="18" class="st5"></rect>		</g>		<g id="shape8-25" v:mid="8" v:groupcontext="shape" transform="translate(182.604,40.7056) rotate(69.9661)">			<title>Sheet.8</title>			<path d="M0 191.97 L63.97 191.97" class="st6"></path>		</g>		<g id="shape9-31" v:mid="9" v:groupcontext="shape" transform="translate(27,2.84217E-14)">			<title>Rectangle.12</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="49.5" height="18" class="st5"></rect>		</g>		<g id="shape10-33" v:mid="10" v:groupcontext="shape" transform="translate(232.104,40.3306) rotate(69.9661)">			<title>Sheet.10</title>			<path d="M0 191.97 L63.97 191.97" class="st6"></path>		</g>		<g id="shape11-38" v:mid="11" v:groupcontext="shape" transform="translate(4.87972,-13.5)">			<title>Sheet.11</title>			<path d="M4.47 191.97 L4.83 191.97 L22.12 191.97" class="st8"></path>		</g>		<g id="shape12-44" v:mid="12" v:groupcontext="shape" transform="translate(0,-1.54506)">			<title>Sheet.12</title>			<desc>s/z ext</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="16.0384" cy="185.993" width="32.08" height="11.9549"></v:textrect>			<path d="M32.08 180.02 L0 180.02 L0 191.97 L32.08 191.97 L32.08 180.02" class="st4"></path>			<text x="3.03" y="188.69" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>s/z ext</text>			</g>		<g id="shape13-48" v:mid="13" v:groupcontext="shape" transform="translate(50.6392,-88.5225)">			<title>Sheet.13</title>			<desc>lost</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="13.2188" cy="185.993" width="26.44" height="11.9549"></v:textrect>			<path d="M26.44 180.02 L0 180.02 L0 191.97 L26.44 191.97 L26.44 180.02" class="st4"></path>			<text x="6.22" y="188.69" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>lost</text>			</g>		<g id="shape14-52" v:mid="14" v:groupcontext="shape" transform="translate(128.63,-85.5)">			<title>Rectangle.5</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="24.75" height="18" class="st2"></rect>		</g>		<g id="shape15-54" v:mid="15" v:groupcontext="shape" transform="translate(81.7594,2.84217E-14)">			<title>Rectangle.6</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="72" height="18" class="st2"></rect>		</g>		<g id="shape16-56" v:mid="16" v:groupcontext="shape" transform="translate(81.3797,-85.5)">			<title>Rectangle.8</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="47.25" height="18" class="st5"></rect>		</g>		<g id="shape17-58" v:mid="17" v:groupcontext="shape" transform="translate(263.599,46.0659) rotate(71.6601)">			<title>Sheet.17</title>			<path d="M0 191.97 L63.23 191.97" class="st6"></path>		</g>		<g id="shape18-63" v:mid="18" v:groupcontext="shape" transform="translate(103.88,2.84217E-14)">			<title>Rectangle.19</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="49.5" height="18" class="st5"></rect>		</g>		<g id="shape19-65" v:mid="19" v:groupcontext="shape" transform="translate(308.984,40.3306) rotate(69.9661)">			<title>Sheet.19</title>			<path d="M0 191.97 L63.97 191.97" class="st6"></path>		</g>		<g id="shape20-70" v:mid="20" v:groupcontext="shape" transform="translate(81.7594,-13.5)">			<title>Sheet.20</title>			<path d="M4.47 191.97 L4.83 191.97 L22.12 191.97" class="st8"></path>		</g>		<g id="shape21-75" v:mid="21" v:groupcontext="shape" transform="translate(76.8797,-1.54506)">			<title>Sheet.21</title>			<desc>s/z ext</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="17.6203" cy="185.993" width="35.25" height="11.9549"></v:textrect>			<path d="M35.24 180.02 L0 180.02 L0 191.97 L35.24 191.97 L35.24 180.02" class="st4"></path>			<text x="4.62" y="188.69" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>s/z ext</text>			</g>		<g id="shape22-79" v:mid="22" v:groupcontext="shape" transform="translate(126.759,-88.5225)">			<title>Sheet.22</title>			<desc>lost</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="13.9711" cy="185.993" width="27.95" height="11.9549"></v:textrect>			<path d="M27.94 180.02 L0 180.02 L0 191.97 L27.94 191.97 L27.94 180.02" class="st4"></path>			<text x="6.97" y="188.69" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>lost</text>			</g>		<g id="shape23-83" v:mid="23" v:groupcontext="shape" transform="translate(204.75,-85.5)">			<title>Rectangle.23</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="24.75" height="18" class="st2"></rect>		</g>		<g id="shape24-85" v:mid="24" v:groupcontext="shape" transform="translate(157.88,2.84217E-14)">			<title>Rectangle.24</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="72" height="18" class="st2"></rect>		</g>		<g id="shape25-87" v:mid="25" v:groupcontext="shape" transform="translate(157.5,-85.5)">			<title>Rectangle.25</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="47.25" height="18" class="st5"></rect>		</g>		<g id="shape26-89" v:mid="26" v:groupcontext="shape" transform="translate(339.719,46.0659) rotate(71.6601)">			<title>Sheet.26</title>			<path d="M0 191.97 L63.23 191.97" class="st6"></path>		</g>		<g id="shape27-94" v:mid="27" v:groupcontext="shape" transform="translate(180,2.84217E-14)">			<title>Rectangle.35</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="49.5" height="18" class="st5"></rect>		</g>		<g id="shape28-96" v:mid="28" v:groupcontext="shape" transform="translate(385.104,40.3306) rotate(69.9661)">			<title>Sheet.28</title>			<path d="M0 191.97 L63.97 191.97" class="st6"></path>		</g>		<g id="shape29-101" v:mid="29" v:groupcontext="shape" transform="translate(157.88,-13.5)">			<title>Sheet.29</title>			<path d="M4.47 191.97 L4.83 191.97 L22.12 191.97" class="st8"></path>		</g>		<g id="shape30-106" v:mid="30" v:groupcontext="shape" transform="translate(153,-1.54506)">			<title>Sheet.30</title>			<desc>s/z ext</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="17.6203" cy="185.993" width="35.25" height="11.9549"></v:textrect>			<path d="M35.24 180.02 L0 180.02 L0 191.97 L35.24 191.97 L35.24 180.02" class="st4"></path>			<text x="4.62" y="188.69" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>s/z ext</text>			</g>		<g id="shape31-110" v:mid="31" v:groupcontext="shape" transform="translate(203.077,-88.5225)">			<title>Sheet.31</title>			<desc>lost</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="13.5" cy="185.993" width="27" height="11.9549"></v:textrect>			<path d="M27 180.02 L0 180.02 L0 191.97 L27 191.97 L27 180.02" class="st4"></path>			<text x="6.5" y="188.69" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>lost</text>			</g>		<g id="shape32-114" v:mid="32" v:groupcontext="shape" transform="translate(281.25,-85.5)">			<title>Rectangle.40</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="24.75" height="18" class="st2"></rect>		</g>		<g id="shape33-116" v:mid="33" v:groupcontext="shape" transform="translate(234.38,2.84217E-14)">			<title>Rectangle.33</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="72" height="18" class="st2"></rect>		</g>		<g id="shape34-118" v:mid="34" v:groupcontext="shape" transform="translate(234,-85.5)">			<title>Rectangle.34</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="47.25" height="18" class="st5"></rect>		</g>		<g id="shape35-120" v:mid="35" v:groupcontext="shape" transform="translate(416.219,46.0659) rotate(71.6601)">			<title>Sheet.35</title>			<path d="M0 191.97 L63.23 191.97" class="st6"></path>		</g>		<g id="shape36-125" v:mid="36" v:groupcontext="shape" transform="translate(256.5,2.84217E-14)">			<title>Rectangle.36</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>			</v:userdefs>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<rect x="0" y="173.97" width="49.5" height="18" class="st5"></rect>		</g>		<g id="shape37-127" v:mid="37" v:groupcontext="shape" transform="translate(461.604,40.3306) rotate(69.9661)">			<title>Sheet.37</title>			<path d="M0 191.97 L63.97 191.97" class="st6"></path>		</g>		<g id="shape38-132" v:mid="38" v:groupcontext="shape" transform="translate(234.38,-13.5)">			<title>Sheet.38</title>			<path d="M4.47 191.97 L4.83 191.97 L22.12 191.97" class="st8"></path>		</g>		<g id="shape39-137" v:mid="39" v:groupcontext="shape" transform="translate(229.5,-1.54506)">			<title>Sheet.39</title>			<desc>s/z ext</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="17.6203" cy="185.993" width="35.25" height="11.9549"></v:textrect>			<path d="M35.24 180.02 L0 180.02 L0 191.97 L35.24 191.97 L35.24 180.02" class="st4"></path>			<text x="4.62" y="188.69" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>s/z ext</text>			</g>		<g id="shape40-141" v:mid="40" v:groupcontext="shape" transform="translate(279.577,-88.5225)">			<title>Sheet.40</title>			<desc>lost</desc>			<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>			<v:textrect cx="15.4616" cy="185.993" width="30.93" height="11.9549"></v:textrect>			<path d="M30.92 180.02 L0 180.02 L0 191.97 L30.92 191.97 L30.92 180.02" class="st4"></path>			<text x="8.46" y="188.69" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>lost</text>			</g>	</g></g>
</svg>

### Vector word operations

The vector word operations process packed vectors of two words. They
include the following operations:

- Vector add and subtract words
- Vector average words
- Vector compare words
- Vector min and max words
- Vector shift words with optional truncate and pack

For more information on vector operations, see
[ALU32](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#alu32-alu) and
[XTYPE ALU](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#xtype-alu).

## CR operations

The [CR](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#cr) instruction class includes operations that access
the [control registers](https://docs.qualcomm.com/doc/80-N2040-60/topic/registers.html#v79-prm-control-registers).

Control register transfer instructions

| **Syntax** | **Operation** |
| --- | --- |
| Rd = Cs Cd = Rs | Move control register to / from a general register. |
| Rdd = Css Cdd = Rss | Move control register pair to / from a general register pair. |

Note

In register-pair transfers, control registers must be
specified using their numeric alias names - see
[control registers](https://docs.qualcomm.com/doc/80-N2040-60/topic/registers.html#v79-prm-control-registers) for details.

Note

PC is not a valid destination register.

## Compound operations

The instruction set includes a number of instructions that perform
multiple logical or arithmetic operations in a single instruction.
They include the following operations:

- AND/OR with inverted input
- Compound logical register
- Compound logical predicate
- Compound add-subtract with immediates
- Compound shift-operation with immediates (arithmetic or logical)
- Multiply-add with immediates

For example:

Rd=add(Rs,add(Ru,#s6))
    Copy to clipboard

For more information, see [XTYPE ALU](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#xtype-alu).

## Special operations

The instruction set includes a number of special-purpose instructions
to support specific applications.

### IP Internet checksum

Key features of the Internet checksum[\[1\]](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#dpf1) include:

- The checksum can be summed in any order
- Carries can be accumulated using an accumulator larger than size
being added, and added back in at any time

Using standard data-processing instructions, the Internet checksum
can be computed at eight bytes per cycle in the main loop, by loading
words and accumulating into doublewords. After the loop, the upper
word is added to the lower word; the upper halfword is added to the
lower halfword, and any carries are added back in.

The Hexagon processor supports a dedicated
[Vector reduce add halfwords](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#vector-reduce-add-halfwords) (vradduh) instruction
that computes the Internet checksum at a rate of 16 bytes per cycle.

The vradduh instruction accepts the halfwords of the two input
vectors, adds them together, and places the result in a 32-bit
destination register. This operation can both compute the sum of 16
bytes of input while preserving the carries, and accumulate carries
at the end of computation.

Note

This operation uses the maximum load bandwidth available in
the Hexagon processor.

**Code example**

.text
    .global fast_ip_check
    // Assumes that data is 8-byte aligned
    // Assumes thatdata is padded at least 16 bytes after words with 0's.
    // Input R0 points to data
    // Input R1 is thelength of data
    // Returns IP checksum in R0
    fast_ip_check:
    {
      R1 = lsr(R1,#4) // 16-byte chunks, rounded down, +1
      R9:8 = combine(#0,#0)
      R3:2 = combine(#0,#0)
    }
    {
      loop0(1f,R1)
      R7:6 = memd(R0+#8)
      R5:4 = memd(R0++#16)
    }
    .falign
    1:
    {
      R7:6 = memd(R0+#8)
      R5:4 = memd(R0++#16)
      R2 = vradduh(R5:4,R7:6) // Accumulate 8 halfwords
      R8 = vradduh(R3:2,R9:8) // Accumulate carries
    }:endloop0
    // Drain pipeline
    {
      R2 = vradduh(R5:4,R7:6)
      R8 = vradduh(R3:2,R9:8)
      R5:4 = combine(#0,#0)
    }
    {
      R8 = vradduh(R3:2,R9:8)
      R1 = #0
    }
    // Might have some carries to add back in
    {
      R0 = vradduh(R5:4,R9:8)
    }
    // Possible for one more to pop out
    {
      R0 = vradduh(R5:4,R1:0)
    }
    {
      R0 = not(R0)
      jumpr LR
    }
    Copy to clipboard

### Software-defined radio

The Hexagon processor includes six special-purpose instructions that
support the implementation of software-defined radio. The
instructions greatly accelerate the following algorithms.

#### Rake despreading

A fundamental operation in despreading is the PN multiply operation.
In this operation, the received complex chips are compared against a
pseudorandom sequence of Quadrature Amplitude Modulation (QAM)
constellation points and accumulated.

[Vector reduce complex rotate](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#v79-fig-vector-reduce-complex-rotate)
shows the vrcrotate instruction that performs this operation. The products
are summed to form a soft 32-bit complex symbol. The instruction has both
accumulating and non-accumulating versions.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export pic_vcrotate.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="4.84336in" height="4.95849in" viewbox="0 0 348.722 357.011" xml:space="preserve" color-interpolation-filters="sRGB" class="st8"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvConvertTheme"></v:ud>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-7 .st1 { fill: none; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.2 }
.svg-7 .st2 { fill: #2a2aea; font-family: Arial; font-size: 0.75em }
.svg-7 .st3 { stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.2 }
.svg-7 .st4 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.2 }
.svg-7 .st5 { marker-end: url("#mrkr13-70"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.2 }
.svg-7 .st6 { fill: #2a2aea; fill-opacity: 1; stroke: #2a2aea; stroke-opacity: 1; stroke-width: 0.32258064516129 }
.svg-7 .st7 { marker-start: url("#mrkr13-272"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.2 }
.svg-7 .st8 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-70" class="st6" v:arrowtype="13" v:arrowsize="2" v:setback="9.3" refx="-9.3" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-3.1,-3.1) "></use>	</marker>	<marker id="mrkr13-272" class="st6" v:arrowtype="13" v:arrowsize="2" v:setback="9" refx="9" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(3.1) "></use>	</marker></defs><g v:mid="5" v:index="1" v:groupcontext="foregroundPage">	<title>Page-1</title>	<v:pageproperties v:drawingscale="0.0393701" v:pagescale="0.0393701" v:drawingunits="24" v:shadowoffsetx="8.50394" v:shadowoffsety="-8.50394"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape18-1" v:mid="18" v:groupcontext="shape" transform="translate(200.657,-299.241)">		<title>Rectangle.18</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="334.334" width="7.08661" height="22.6772" class="st1"></rect>	</g>	<g id="shape22-3" v:mid="22" v:groupcontext="shape" transform="translate(94.5472,-299.241)">		<title>Rectangle.22</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="334.334" width="85.0394" height="22.6772" class="st1"></rect>	</g>	<g id="shape26-5" v:mid="26" v:groupcontext="shape" transform="translate(230.421,-185.855)">		<title>Rectangle.26</title>		<desc>Re0</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="14.1732" cy="345.672" width="28.35" height="22.6772"></v:textrect>		<rect x="0" y="334.334" width="28.3465" height="22.6772" class="st1"></rect>		<text x="5.92" y="348.37" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Re0</text>		</g>	<g id="shape27-8" v:mid="27" v:groupcontext="shape" transform="translate(202.075,-185.855)">		<title>Rectangle.27</title>		<desc>Im0</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="14.1732" cy="345.672" width="28.35" height="22.6772"></v:textrect>		<rect x="0" y="334.334" width="28.3465" height="22.6772" class="st1"></rect>		<text x="6.67" y="348.37" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Im0</text>		</g>	<g id="shape28-11" v:mid="28" v:groupcontext="shape" transform="translate(173.728,-185.855)">		<title>Rectangle.28</title>		<desc>Re1</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="14.1732" cy="345.672" width="28.35" height="22.6772"></v:textrect>		<rect x="0" y="334.334" width="28.3465" height="22.6772" class="st1"></rect>		<text x="5.92" y="348.37" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Re1</text>		</g>	<g id="shape29-14" v:mid="29" v:groupcontext="shape" transform="translate(145.382,-185.855)">		<title>Rectangle.29</title>		<desc>Im1</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="14.1732" cy="345.672" width="28.35" height="22.6772"></v:textrect>		<rect x="0" y="334.334" width="28.3465" height="22.6772" class="st1"></rect>		<text x="6.67" y="348.37" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Im1</text>		</g>	<g id="shape30-17" v:mid="30" v:groupcontext="shape" transform="translate(117.035,-185.855)">		<title>Rectangle.30</title>		<desc>Re2</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="14.1732" cy="345.672" width="28.35" height="22.6772"></v:textrect>		<rect x="0" y="334.334" width="28.3465" height="22.6772" class="st1"></rect>		<text x="5.92" y="348.37" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Re2</text>		</g>	<g id="shape31-20" v:mid="31" v:groupcontext="shape" transform="translate(88.689,-185.855)">		<title>Rectangle.31</title>		<desc>Im2</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="14.1732" cy="345.672" width="28.35" height="22.6772"></v:textrect>		<rect x="0" y="334.334" width="28.3465" height="22.6772" class="st1"></rect>		<text x="6.67" y="348.37" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Im2</text>		</g>	<g id="shape32-23" v:mid="32" v:groupcontext="shape" transform="translate(60.3425,-185.855)">		<title>Rectangle.32</title>		<desc>Re3</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="14.1732" cy="345.672" width="28.35" height="22.6772"></v:textrect>		<rect x="0" y="334.334" width="28.3465" height="22.6772" class="st1"></rect>		<text x="5.92" y="348.37" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Re3</text>		</g>	<g id="shape33-26" v:mid="33" v:groupcontext="shape" transform="translate(31.9961,-185.855)">		<title>Rectangle.33</title>		<desc>Im3</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="14.1732" cy="345.672" width="28.35" height="22.6772"></v:textrect>		<rect x="0" y="334.334" width="28.3465" height="22.6772" class="st1"></rect>		<text x="6.67" y="348.37" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Im3</text>		</g>	<g id="shape37-29" v:mid="37" v:groupcontext="shape" v:layermember="0" transform="translate(197.187,-299.241)">		<title>Dynamic connector.37</title>		<path d="M7.01 357.01 L7.16 407.03" class="st3"></path>	</g>	<g id="shape19-32" v:mid="19" v:groupcontext="shape" transform="translate(193.571,-299.241)">		<title>Rectangle.19</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="334.334" width="7.08661" height="22.6772" class="st1"></rect>	</g>	<g id="shape20-34" v:mid="20" v:groupcontext="shape" transform="translate(186.484,-299.241)">		<title>Rectangle.20</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="334.334" width="7.08661" height="22.6772" class="st1"></rect>	</g>	<g id="shape59-36" v:mid="59" v:groupcontext="shape" transform="translate(26.3268,-18.6107)">		<title>Rectangle.59</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="334.334" width="226.772" height="22.6772" class="st1"></rect>	</g>	<g id="shape61-38" v:mid="61" v:groupcontext="shape" transform="translate(172.752,-302.579)">		<title>Sheet.61</title>		<desc>Rt</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="52" cy="349.011" width="104" height="16"></v:textrect>		<rect x="0" y="341.011" width="104" height="16" class="st4"></rect>		<text x="47.5" y="351.71" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rt</text>		</g>	<g id="shape62-41" v:mid="62" v:groupcontext="shape" v:layermember="0" transform="translate(132.626,-41.2878)">		<title>Dynamic connector.62</title>		<path d="M7.09 357.01 L7.09 379.69" class="st3"></path>	</g>	<g id="shape63-44" v:mid="63" v:groupcontext="shape" transform="translate(31.0197,-21.9492)">		<title>Sheet.63</title>		<desc>I</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="52" cy="349.011" width="104" height="16"></v:textrect>		<rect x="0" y="341.011" width="104" height="16" class="st4"></rect>		<text x="50.75" y="351.71" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>I</text>		</g>	<g id="shape64-47" v:mid="64" v:groupcontext="shape" transform="translate(143.429,-21.9492)">		<title>Sheet.64</title>		<desc>R</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="52" cy="349.011" width="104" height="16"></v:textrect>		<rect x="0" y="341.011" width="104" height="16" class="st4"></rect>		<text x="48.75" y="351.71" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>R</text>		</g>	<g id="shape65-50" v:mid="65" v:groupcontext="shape" transform="translate(251.146,-18.6)">		<title>Sheet.65</title>		<desc>Rxx</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="12.9606" cy="349.011" width="25.93" height="16"></v:textrect>		<rect x="0" y="341.011" width="25.9213" height="16" class="st4"></rect>		<text x="5.21" y="351.71" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rxx</text>		</g>	<g id="shape153-53" v:mid="153" v:groupcontext="shape" transform="translate(20.6888,-322.411)">		<title>Sheet.153</title>		<desc>Rxx += vrcrotate(Rss,Rt,#0)</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="65.8346" cy="349.011" width="131.67" height="16"></v:textrect>		<rect x="0" y="341.011" width="131.669" height="16" class="st4"></rect>		<text x="10.07" y="351.71" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rxx += vrcrotate(Rss,Rt,#0)</text>		</g>	<g id="group66-56" transform="translate(49.1614,-129.162)" v:mid="66" v:groupcontext="group">		<title>Sheet.66</title>		<g id="shape67-57" v:mid="67" v:groupcontext="shape" transform="translate(8.4252,-8.50394)">			<title>Center drag circle</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>			</v:userdefs>			<path d="M-14.17 357.01 A14.1732 14.1732 0 0 1 14.17 357.01 A14.1732 14.1732 0 1 1 -14.17 357.01 Z" class="st1"></path>		</g>	</g>	<g id="shape98-59" v:mid="98" v:groupcontext="shape" transform="translate(207.744,-241.421)">		<title>Rounded rectangle.98</title>		<desc>mux</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="19.8425" cy="349.363" width="39.69" height="15.2953"></v:textrect>		<path d="M32.04 357.01 A7.6477 7.6477 -180 0 0 39.69 349.36 A7.6477 7.6477 -180 0 0 32.04 341.72 L7.65 341.72 A7.6477					 7.6477 -180 0 0 0 349.36 A7.6477 7.6477 -180 0 0 7.65 357.01 L32.04 357.01 Z" class="st1"></path>		<text x="11.34" y="352.06" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>mux</text>		</g>	<g id="shape100-62" v:mid="100" v:groupcontext="shape" transform="translate(571.598,94.6259) rotate(90)">		<title>Sheet.100</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape101-65" v:mid="101" v:groupcontext="shape" transform="translate(584.598,115.582) rotate(89.9986)">		<title>Sheet.101</title>		<path d="M0 357.01 L78.42 357.01" class="st5"></path>	</g>	<g id="shape103-71" v:mid="103" v:groupcontext="shape" transform="translate(578.968,94.6259) rotate(90)">		<title>Sheet.103</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape104-74" v:mid="104" v:groupcontext="shape" transform="translate(587.472,94.6259) rotate(90)">		<title>Sheet.104</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape105-77" v:mid="105" v:groupcontext="shape" transform="translate(594.842,94.6259) rotate(90)">		<title>Sheet.105</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape106-80" v:mid="106" v:groupcontext="shape" transform="translate(200.752,-262.385)">		<title>Rounded rectangle.106</title>		<desc>1 j -1 -j</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="24" cy="351.789" width="48.01" height="10.4434"></v:textrect>		<rect x="0" y="346.568" width="48" height="10.4434" class="st4"></rect>		<text x="9" y="354.49" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1  j  -1 -j</text>		</g>	<g id="shape25-83" v:mid="25" v:groupcontext="shape" transform="translate(592.235,252.416) rotate(103.156)">		<title>Sheet.25</title>		<path d="M0 357.01 L26.66 357.01" class="st5"></path>	</g>	<g id="shape38-88" v:mid="38" v:groupcontext="shape" transform="translate(191.208,464.571) rotate(-177.345)">		<title>Sheet.38</title>		<path d="M0 357.01 L3.4 357.01" class="st3"></path>	</g>	<g id="shape35-91" v:mid="35" v:groupcontext="shape" transform="translate(179.587,-299.241)">		<title>Rectangle.35</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="334.334" width="7.08661" height="22.6772" class="st1"></rect>	</g>	<g id="shape21-93" v:mid="21" v:groupcontext="shape" v:layermember="0" transform="translate(197.114,-299.241)">		<title>Dynamic connector.21</title>		<path d="M0 357.01 L0 383.35 L-57.4 383.35 L-57.4 408.03" class="st3"></path>	</g>	<g id="shape23-96" v:mid="23" v:groupcontext="shape" transform="translate(144.705,-240.52)">		<title>Rounded rectangle.23</title>		<desc>mux</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="19.8425" cy="349.363" width="39.69" height="15.2953"></v:textrect>		<path d="M32.04 357.01 A7.6477 7.6477 -180 0 0 39.69 349.36 A7.6477 7.6477 -180 0 0 32.04 341.72 L7.65 341.72 A7.6477					 7.6477 -180 0 0 0 349.36 A7.6477 7.6477 -180 0 0 7.65 357.01 L32.04 357.01 Z" class="st1"></path>		<text x="11.34" y="352.06" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>mux</text>		</g>	<g id="shape42-99" v:mid="42" v:groupcontext="shape" transform="translate(508.558,95.5261) rotate(90)">		<title>Sheet.42</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape75-102" v:mid="75" v:groupcontext="shape" transform="translate(521.558,116.93) rotate(90.0705)">		<title>Sheet.75</title>		<path d="M0 357.01 L77.54 357.01" class="st5"></path>	</g>	<g id="shape76-107" v:mid="76" v:groupcontext="shape" transform="translate(515.928,95.5261) rotate(90)">		<title>Sheet.76</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape77-110" v:mid="77" v:groupcontext="shape" transform="translate(524.432,95.5261) rotate(90)">		<title>Sheet.77</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape78-113" v:mid="78" v:groupcontext="shape" transform="translate(531.802,95.5261) rotate(90)">		<title>Sheet.78</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape79-116" v:mid="79" v:groupcontext="shape" transform="translate(137.713,-261.485)">		<title>Rounded rectangle.79</title>		<desc>1 j -1 -j</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="24" cy="351.789" width="48.01" height="10.4434"></v:textrect>		<rect x="0" y="346.568" width="48" height="10.4434" class="st4"></rect>		<text x="9" y="354.49" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1  j  -1 -j</text>		</g>	<g id="shape80-119" v:mid="80" v:groupcontext="shape" transform="translate(141.205,465.837) rotate(-179.438)">		<title>Sheet.80</title>		<path d="M0 357.01 L4.99 357.01" class="st3"></path>	</g>	<g id="shape81-122" v:mid="81" v:groupcontext="shape" v:layermember="0" transform="translate(190.028,-299.241)">		<title>Dynamic connector.81</title>		<path d="M0 357.01 L0 375.15 L-105.87 375.15 L-105.87 408.1" class="st3"></path>	</g>	<g id="shape82-125" v:mid="82" v:groupcontext="shape" transform="translate(88.6577,-242.388)">		<title>Rounded rectangle.82</title>		<desc>mux</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="19.8425" cy="349.363" width="39.69" height="15.2953"></v:textrect>		<path d="M32.04 357.01 A7.6477 7.6477 -180 0 0 39.69 349.36 A7.6477 7.6477 -180 0 0 32.04 341.72 L7.65 341.72 A7.6477					 7.6477 -180 0 0 0 349.36 A7.6477 7.6477 -180 0 0 7.65 357.01 L32.04 357.01 Z" class="st1"></path>		<text x="11.34" y="352.06" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>mux</text>		</g>	<g id="shape83-128" v:mid="83" v:groupcontext="shape" transform="translate(452.511,93.6587) rotate(90)">		<title>Sheet.83</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape84-131" v:mid="84" v:groupcontext="shape" transform="translate(465.511,114.482) rotate(89.9774)">		<title>Sheet.84</title>		<path d="M0 357.01 L79.39 357.01" class="st5"></path>	</g>	<g id="shape85-136" v:mid="85" v:groupcontext="shape" transform="translate(459.881,93.6587) rotate(90)">		<title>Sheet.85</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape86-139" v:mid="86" v:groupcontext="shape" transform="translate(468.385,93.6587) rotate(90)">		<title>Sheet.86</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape87-142" v:mid="87" v:groupcontext="shape" transform="translate(475.755,93.6587) rotate(90)">		<title>Sheet.87</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape88-145" v:mid="88" v:groupcontext="shape" transform="translate(81.6655,-263.352)">		<title>Rounded rectangle.88</title>		<desc>1 j -1 -j</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="24" cy="351.789" width="48.01" height="10.4434"></v:textrect>		<rect x="0" y="346.568" width="48" height="10.4434" class="st4"></rect>		<text x="9" y="354.49" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1  j  -1 -j</text>		</g>	<g id="shape89-148" v:mid="89" v:groupcontext="shape" transform="translate(88.6577,465.872) rotate(180)">		<title>Sheet.89</title>		<path d="M0 357.01 L4.5 357.01" class="st3"></path>	</g>	<g id="shape74-151" v:mid="74" v:groupcontext="shape" transform="translate(36.1535,-242.321)">		<title>Rounded rectangle.74</title>		<desc>mux</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(10):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="19.8425" cy="349.363" width="39.69" height="15.2953"></v:textrect>		<path d="M32.04 357.01 A7.6477 7.6477 -180 0 0 39.69 349.36 A7.6477 7.6477 -180 0 0 32.04 341.72 L7.65 341.72 A7.6477					 7.6477 -180 0 0 0 349.36 A7.6477 7.6477 -180 0 0 7.65 357.01 L32.04 357.01 Z" class="st1"></path>		<text x="11.34" y="352.06" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>mux</text>		</g>	<g id="shape90-154" v:mid="90" v:groupcontext="shape" transform="translate(400.007,93.7257) rotate(90)">		<title>Sheet.90</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape91-157" v:mid="91" v:groupcontext="shape" transform="translate(412.983,110.518) rotate(89.3304)">		<title>Sheet.91</title>		<path d="M0 357.01 L79.34 357.01" class="st5"></path>	</g>	<g id="shape92-162" v:mid="92" v:groupcontext="shape" transform="translate(407.377,93.7257) rotate(90)">		<title>Sheet.92</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape93-165" v:mid="93" v:groupcontext="shape" transform="translate(415.881,93.7257) rotate(90)">		<title>Sheet.93</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape94-168" v:mid="94" v:groupcontext="shape" transform="translate(423.251,93.7257) rotate(90)">		<title>Sheet.94</title>		<path d="M0 357.01 L5.67 357.01" class="st3"></path>	</g>	<g id="shape95-171" v:mid="95" v:groupcontext="shape" transform="translate(29.1614,-263.285)">		<title>Rounded rectangle.95</title>		<desc>1 j -1 -j</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="24" cy="351.789" width="48.01" height="10.4434"></v:textrect>		<rect x="0" y="346.568" width="48" height="10.4434" class="st4"></rect>		<text x="9" y="354.49" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1  j  -1 -j</text>		</g>	<g id="shape96-174" v:mid="96" v:groupcontext="shape" transform="translate(36.1535,464.054) rotate(180)">		<title>Sheet.96</title>		<path d="M0 357.01 L4.5 357.01" class="st3"></path>	</g>	<g id="shape97-177" v:mid="97" v:groupcontext="shape" v:layermember="0" transform="translate(183.13,-299.241)">		<title>Dynamic connector.97</title>		<path d="M0 357.01 L0 368.35 L-151.48 368.35 L-151.48 406.28" class="st3"></path>	</g>	<g id="shape162-180" v:mid="162" v:groupcontext="shape" transform="translate(558.063,85.323) rotate(76.0886)">		<title>Sheet.162</title>		<path d="M0 357.01 L25.84 357.01" class="st5"></path>	</g>	<g id="shape163-185" v:mid="163" v:groupcontext="shape" transform="translate(520.61,294.124) rotate(110.147)">		<title>Sheet.163</title>		<path d="M0 357.01 L27.07 357.01" class="st5"></path>	</g>	<g id="shape164-190" v:mid="164" v:groupcontext="shape" transform="translate(505.116,115.509) rotate(81.0327)">		<title>Sheet.164</title>		<path d="M0 357.01 L25.2 357.01" class="st5"></path>	</g>	<g id="shape165-195" v:mid="165" v:groupcontext="shape" transform="translate(460.345,309.454) rotate(112.791)">		<title>Sheet.165</title>		<path d="M0 357.01 L28.1 357.01" class="st5"></path>	</g>	<g id="shape166-200" v:mid="166" v:groupcontext="shape" transform="translate(444.765,102.802) rotate(78.9619)">		<title>Sheet.166</title>		<path d="M0 357.01 L25.43 357.01" class="st5"></path>	</g>	<g id="shape167-205" v:mid="167" v:groupcontext="shape" transform="translate(420.491,259.234) rotate(104.283)">		<title>Sheet.167</title>		<path d="M0 357.01 L26.28 357.01" class="st5"></path>	</g>	<g id="shape168-210" v:mid="168" v:groupcontext="shape" transform="translate(384.433,75.4122) rotate(74.4439)">		<title>Sheet.168</title>		<path d="M0 357.01 L26.12 357.01" class="st5"></path>	</g>	<g id="shape34-215" v:mid="34" v:groupcontext="shape" transform="translate(82.9409,-80.9729)">		<title>Center drag circle</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<path d="M-14.17 357.01 A14.1732 14.1732 0 0 1 14.17 357.01 A14.1732 14.1732 0 1 1 -14.17 357.01 Z" class="st1"></path>	</g>	<g id="shape51-217" v:mid="51" v:groupcontext="shape" transform="translate(394.083,108.728) rotate(69.5639)">		<title>Sheet.51</title>		<path d="M0 357.01 L24.68 357.01" class="st5"></path>	</g>	<g id="shape52-222" v:mid="52" v:groupcontext="shape" transform="translate(404.892,423.686) rotate(122.366)">		<title>Sheet.52</title>		<path d="M0 357.01 L23.66 357.01" class="st5"></path>	</g>	<g id="shape53-227" v:mid="53" v:groupcontext="shape" transform="translate(319.166,549.378) rotate(153.05)">		<title>Sheet.53</title>		<path d="M0 357.01 L62.83 357.01" class="st5"></path>	</g>	<g id="shape54-232" v:mid="54" v:groupcontext="shape" transform="translate(323.866,572.525) rotate(163.014)">		<title>Sheet.54</title>		<path d="M0 357.01 L118.81 357.01" class="st5"></path>	</g>	<g id="shape55-237" v:mid="55" v:groupcontext="shape" transform="translate(176.055,-108.916) rotate(17.9481)">		<title>Sheet.55</title>		<path d="M0 357.01 L118.71 357.01" class="st5"></path>	</g>	<g id="shape56-242" v:mid="56" v:groupcontext="shape" transform="translate(245.849,-98.9346) rotate(21.7705)">		<title>Sheet.56</title>		<path d="M0 357.01 L76.65 357.01" class="st5"></path>	</g>	<g id="shape57-247" v:mid="57" v:groupcontext="shape" transform="translate(405.693,-32.342) rotate(41.9032)">		<title>Sheet.57</title>		<path d="M0 357.01 L33.73 357.01" class="st5"></path>	</g>	<g id="shape58-252" v:mid="58" v:groupcontext="shape" transform="translate(528.539,429.744) rotate(123.403)">		<title>Sheet.58</title>		<path d="M0 357.01 L27.28 357.01" class="st5"></path>	</g>	<g id="shape169-257" v:mid="169" v:groupcontext="shape" transform="translate(439.897,288.401) rotate(89.7095)">		<title>Sheet.169</title>		<path d="M0 357.01 L14.35 357.01" class="st5"></path>	</g>	<g id="shape170-262" v:mid="170" v:groupcontext="shape" transform="translate(559.034,290.879) rotate(89.8796)">		<title>Sheet.170</title>		<path d="M0 357.01 L12.93 357.01" class="st5"></path>	</g>	<g id="shape171-267" v:mid="171" v:groupcontext="shape" v:layermember="0" transform="translate(68.8532,-82.527)">		<title>Dynamic connector.171</title>		<path d="M-10.8 357.01 L-11.16 357.01 L-28.35 357.01 L-28.35 398.25" class="st7"></path>	</g>	<g id="shape172-273" v:mid="172" v:groupcontext="shape" v:layermember="0" transform="translate(187.908,-79.9823)">		<title>Dynamic connector.172</title>		<path d="M-10.8 357.01 L-11.16 357.01 L-26.65 357.01 L-26.65 395.71" class="st7"></path>	</g>	<g id="shape173-278" v:mid="173" v:groupcontext="shape" transform="translate(226.122,-189.193)">		<title>Sheet.173</title>		<desc>Rss</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="52" cy="349.011" width="104" height="16"></v:textrect>		<rect x="0" y="341.011" width="104" height="16" class="st4"></rect>		<text x="44.25" y="351.71" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rss</text>		</g>	<g id="shape1-281" v:mid="1" v:groupcontext="shape" transform="translate(74.7047,-73.0882)">		<title>Rectangle.1</title>		<desc>+</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="8.50394" cy="350.208" width="17.01" height="13.6063"></v:textrect>		<rect x="0" y="343.405" width="17.0079" height="13.6063" class="st4"></rect>		<text x="5.88" y="352.91" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>+</text>		</g>	<g id="shape2-284" v:mid="2" v:groupcontext="shape" transform="translate(202.075,-79.2198)">		<title>Center drag circle.2</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<path d="M-14.17 357.01 A14.1732 14.1732 0 0 1 14.17 357.01 A14.1732 14.1732 0 1 1 -14.17 357.01 Z" class="st1"></path>	</g>	<g id="shape3-286" v:mid="3" v:groupcontext="shape" transform="translate(193.839,-71.3351)">		<title>Rectangle.3</title>		<desc>+</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="8.50394" cy="350.208" width="17.01" height="13.6063"></v:textrect>		<rect x="0" y="343.405" width="17.0079" height="13.6063" class="st4"></rect>		<text x="5.88" y="352.91" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>+</text>		</g>	<g id="shape4-289" v:mid="4" v:groupcontext="shape" transform="translate(49.366,-127.135)">		<title>Rectangle.4</title>		<desc>*</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="8.50394" cy="352.927" width="17.01" height="8.16815"></v:textrect>		<rect x="0" y="348.843" width="17.0079" height="8.16815" class="st4"></rect>		<text x="6.75" y="355.63" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>*</text>		</g>	<g id="group5-292" transform="translate(100.201,-130.175)" v:mid="5" v:groupcontext="group">		<title>Sheet.5</title>		<g id="shape6-293" v:mid="6" v:groupcontext="shape" transform="translate(8.4252,-8.50394)">			<title>Center drag circle</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>			</v:userdefs>			<path d="M-14.17 357.01 A14.1732 14.1732 0 0 1 14.17 357.01 A14.1732 14.1732 0 1 1 -14.17 357.01 Z" class="st1"></path>		</g>	</g>	<g id="shape7-295" v:mid="7" v:groupcontext="shape" transform="translate(100.405,-128.149)">		<title>Rectangle.7</title>		<desc>*</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="8.50394" cy="352.927" width="17.01" height="8.16815"></v:textrect>		<rect x="0" y="348.843" width="17.0079" height="8.16815" class="st4"></rect>		<text x="6.75" y="355.63" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>*</text>		</g>	<g id="group8-298" transform="translate(155.271,-128.647)" v:mid="8" v:groupcontext="group">		<title>Sheet.8</title>		<g id="shape9-299" v:mid="9" v:groupcontext="shape" transform="translate(8.4252,-8.50394)">			<title>Center drag circle</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>			</v:userdefs>			<path d="M-14.17 357.01 A14.1732 14.1732 0 0 1 14.17 357.01 A14.1732 14.1732 0 1 1 -14.17 357.01 Z" class="st1"></path>		</g>	</g>	<g id="shape10-301" v:mid="10" v:groupcontext="shape" transform="translate(155.476,-126.621)">		<title>Rectangle.10</title>		<desc>*</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="8.50394" cy="352.927" width="17.01" height="8.16815"></v:textrect>		<rect x="0" y="348.843" width="17.0079" height="8.16815" class="st4"></rect>		<text x="6.75" y="355.63" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>*</text>		</g>	<g id="group11-304" transform="translate(218.768,-129.66)" v:mid="11" v:groupcontext="group">		<title>Sheet.11</title>		<g id="shape12-305" v:mid="12" v:groupcontext="shape" transform="translate(8.4252,-8.50394)">			<title>Center drag circle</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>			</v:userdefs>			<path d="M-14.17 357.01 A14.1732 14.1732 0 0 1 14.17 357.01 A14.1732 14.1732 0 1 1 -14.17 357.01 Z" class="st1"></path>		</g>	</g>	<g id="shape13-307" v:mid="13" v:groupcontext="shape" transform="translate(218.972,-127.634)">		<title>Rectangle.13</title>		<desc>*</desc>		<v:textblock v:margins="rect(4,4,4,4)" v:tabspace="42.5197"></v:textblock>		<v:textrect cx="8.50394" cy="352.927" width="17.01" height="8.16815"></v:textrect>		<rect x="0" y="348.843" width="17.0079" height="8.16815" class="st4"></rect>		<text x="6.75" y="355.63" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>*</text>		</g></g>
</svg>

**Vector reduce complex rotate**

For more information on the vrcrotate instruction, see
[Vector reduce complex rotate](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#vector-reduce-complex-rotate).

Note

Using this instruction, the Hexagon processor can process
5.3 chips per cycle, and a 12-finger WCDMA user requires only 15 MHz.

#### Polynomial operations

The polynomial multiply instructions support the following
operations:

- Scramble code generation (at a rate of eight symbols per cycle for WCDMA)
- Cryptographic algorithms (such as elliptic curve)
- CRCs (at a rate of 21 bits per cycle)
- Convolutional encoding
- Reed-Solomon codes

The four versions of this instruction support 32 x 32 and vector 16 x 16
multiplication both with and without accumulation, as shown in
[Polynomial multiply](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#v79-fig-polynomial-multiply).

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export fig_polynomial_ops.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="6.02631in" height="4.10951in" viewbox="0 0 433.894 295.885" xml:space="preserve" color-interpolation-filters="sRGB" class="st9"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>		<v:ud v:nameu="msvConvertTheme"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-8 .st1 { fill: none; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.2 }
.svg-8 .st2 { marker-end: url("#mrkr13-10"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.2 }
.svg-8 .st3 { fill: #2a2aea; fill-opacity: 1; stroke: #2a2aea; stroke-opacity: 1; stroke-width: 0.32258064516129 }
.svg-8 .st4 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.2 }
.svg-8 .st5 { fill: #2a2aea; font-family: Arial; font-size: 0.75em }
.svg-8 .st6 { marker-end: url("#mrkr13-45"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.2 }
.svg-8 .st7 { font-size: 1em }
.svg-8 .st8 { stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.2 }
.svg-8 .st9 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-10" class="st3" v:arrowtype="13" v:arrowsize="2" v:setback="9.3" refx="-9.3" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-3.1,-3.1) "></use>	</marker>	<marker id="mrkr13-45" class="st3" v:arrowtype="13" v:arrowsize="2" v:setback="0" refx="-0" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-3.1,-3.1) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<v:userdefs>		<v:ud v:nameu="SchemeName" v:val="VT4(Default)"></v:ud>	</v:userdefs>	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="0" v:shadowoffsetx="8.50394" v:shadowoffsety="-8.50394"></v:pageproperties>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(59.3261,-217.26)">		<title>Rectangle</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="274.165" width="108.603" height="21.7206" class="st1"></rect>	</g>	<g id="shape2-3" v:mid="2" v:groupcontext="shape" transform="translate(59.3261,-179.249)">		<title>Rectangle.2</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="274.165" width="108.603" height="21.7206" class="st1"></rect>	</g>	<g id="shape3-5" v:mid="3" v:groupcontext="shape" v:layermember="0" transform="translate(120.789,-217.26)">		<title>Dynamic connector</title>		<path d="M-7.16 295.89 L-7.23 348.47" class="st2"></path>	</g>	<g id="group4-11" transform="translate(112.27,-133.093)" v:mid="4" v:groupcontext="group">		<title>Sheet.4</title>		<g id="shape5-12" v:mid="5" v:groupcontext="shape" transform="translate(8.06979,-8.14521)">			<title>Center drag circle</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>			</v:userdefs>			<path d="M-13.58 295.89 A13.5754 13.5754 0 0 1 13.58 295.89 A13.5754 13.5754 0 1 1 -13.58 295.89 Z" class="st1"></path>		</g>		<g id="shape6-14" v:mid="6" v:groupcontext="shape" transform="translate(8.06979,-8.14521)">			<title>Center drag circle.5</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>			</v:userdefs>			<path d="M-4.75 295.89 A4.75137 4.75137 0 0 1 4.75 295.89 A4.75137 4.75137 0 1 1 -4.75 295.89 Z" class="st1"></path>		</g>		<g id="shape7-16" v:mid="7" v:groupcontext="shape" transform="translate(1.35229,-3.58735)">			<title>Sheet.7</title>			<desc>*</desc>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="6.71226" cy="293.811" width="13.43" height="4.14802"></v:textrect>			<rect x="0" y="291.737" width="13.4245" height="4.14802" class="st4"></rect>			<text x="4.96" y="296.51" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>*</text>			</g>	</g>	<g id="shape8-19" v:mid="8" v:groupcontext="shape" transform="translate(39.0234,-220.458)">		<title>Sheet.8</title>		<desc>Rs</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="9.69883" cy="288.223" width="19.4" height="15.3251"></v:textrect>		<rect x="0" y="280.56" width="19.3977" height="15.3251" class="st4"></rect>		<text x="4.2" y="290.92" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rs</text>		</g>	<g id="shape9-22" v:mid="9" v:groupcontext="shape" transform="translate(37.5452,-182.447)">		<title>Sheet.9</title>		<desc>Rt</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="10.9206" cy="288.223" width="21.85" height="15.3251"></v:textrect>		<rect x="0" y="280.56" width="21.8412" height="15.3251" class="st4"></rect>		<text x="6.42" y="290.92" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rt</text>		</g>	<g id="shape10-25" v:mid="10" v:groupcontext="shape" v:layermember="0" transform="translate(120.003,-179.249)">		<title>Dynamic connector.8</title>		<path d="M7.2 295.89 L7.2 311.02" class="st2"></path>	</g>	<g id="shape11-30" v:mid="11" v:groupcontext="shape" transform="translate(18.6,-39.4227)">		<title>Rectangle.11</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="274.165" width="149.329" height="21.7206" class="st1"></rect>	</g>	<g id="shape12-32" v:mid="12" v:groupcontext="shape" v:layermember="0" transform="translate(127.448,-127.065)">		<title>Dynamic connector.12</title>		<path d="M-7.16 295.89 L-7.24 295.89 L-7.24 315.35" class="st2"></path>	</g>	<g id="shape13-37" v:mid="13" v:groupcontext="shape" transform="translate(45.8714,-76.0762)">		<title>Rounded rectangle</title>		<desc>XOR</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="54.3014" cy="285.704" width="108.61" height="20.363"></v:textrect>		<path d="M98.42 295.89 A10.1816 10.1816 -180 0 0 108.6 285.7 A10.1816 10.1816 -180 0 0 98.42 275.52 L10.18 275.52 A10.1816					 10.1816 -180 0 0 -0 285.7 A10.1816 10.1816 -180 0 0 10.18 295.89 L98.42 295.89 Z" class="st1"></path>		<text x="44.55" y="288.4" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>XOR</text>		</g>	<g id="shape14-40" v:mid="14" v:groupcontext="shape" v:layermember="0" transform="translate(98.1337,-76.0762)">		<title>Dynamic connector.14</title>		<path d="M2.04 295.89 L2.04 305.8 L12.36 305.8 L12.36 310.82" class="st6"></path>	</g>	<g id="shape15-46" v:mid="15" v:groupcontext="shape" v:layermember="0" transform="translate(55.9322,-61.1433)">		<title>Dynamic connector.15</title>		<path d="M0 295.89 L0 290.86 L-15.08 290.86 L-15.08 255.57 L23.82 255.57 L23.82 260.59" class="st6"></path>	</g>	<g id="shape16-51" v:mid="16" v:groupcontext="shape" transform="translate(51.9345,-134.933)">		<title>Sheet.16</title>		<desc>32 ´ 32 carryless polynomial multiply</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="26.64" cy="288.223" width="53.29" height="15.3251"></v:textrect>		<rect x="0" y="280.56" width="53.28" height="15.3251" class="st4"></rect>		<text x="12.63" y="274.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1" v:bulletsize="0.166667"></v:paragraph><v:tablist></v:tablist>32 ´ 32<v:newlinechar></v:newlinechar><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist><tspan x="8.64" dy="1.2em" class="st7">carryless<v:newlinechar></v:newlinechar><v:paragraph v:horizalign="1"></v:paragraph></tspan><tspan x="5.13" dy="1.2em" class="st7">polynomial </tspan><tspan x="11.39" dy="1.2em" class="st7">multiply</tspan></text>		</g>	<g id="shape17-57" v:mid="17" v:groupcontext="shape" transform="translate(77.8545,-21.48)">		<title>Sheet.17</title>		<desc>Rxx</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="13.1653" cy="290.125" width="26.34" height="11.52"></v:textrect>		<rect x="0" y="284.365" width="26.3306" height="11.52" class="st4"></rect>		<text x="5.42" y="292.83" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rxx</text>		</g>	<g id="shape18-60" v:mid="18" v:groupcontext="shape" transform="translate(321.428,-238.98)">		<title>Rectangle.114</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="274.165" width="54.3014" height="21.7206" class="st1"></rect>	</g>	<g id="shape19-62" v:mid="19" v:groupcontext="shape" transform="translate(321.428,-200.969)">		<title>Rectangle.115</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="274.165" width="54.3014" height="21.7206" class="st1"></rect>	</g>	<g id="shape20-64" v:mid="20" v:groupcontext="shape" v:layermember="0" transform="translate(341.28,-238.98)">		<title>Dynamic connector.116</title>		<path d="M7.1 295.89 L7.26 348.47" class="st2"></path>	</g>	<g id="group21-69" transform="translate(347.297,-154.813)" v:mid="21" v:groupcontext="group">		<title>Sheet.21</title>		<g id="shape22-70" v:mid="22" v:groupcontext="shape" transform="translate(8.06979,-8.14521)">			<title>Center drag circle</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>			</v:userdefs>			<path d="M-13.58 295.89 A13.5754 13.5754 0 0 1 13.58 295.89 A13.5754 13.5754 0 1 1 -13.58 295.89 Z" class="st1"></path>		</g>		<g id="shape23-72" v:mid="23" v:groupcontext="shape" transform="translate(8.06979,-8.14521)">			<title>Center drag circle.5</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>			</v:userdefs>			<path d="M-4.75 295.89 A4.75137 4.75137 0 0 1 4.75 295.89 A4.75137 4.75137 0 1 1 -4.75 295.89 Z" class="st1"></path>		</g>		<g id="shape24-74" v:mid="24" v:groupcontext="shape" transform="translate(1.27753,-2.91877)">			<title>Sheet.24</title>			<desc>*</desc>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="6.71226" cy="293.811" width="13.43" height="4.14802"></v:textrect>			<rect x="0" y="291.737" width="13.4245" height="4.14802" class="st4"></rect>			<text x="4.96" y="296.51" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>*</text>			</g>	</g>	<g id="shape25-77" v:mid="25" v:groupcontext="shape" transform="translate(246.01,-242.178)">		<title>Sheet.25</title>		<desc>Rs</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="9.69883" cy="288.223" width="19.4" height="15.3251"></v:textrect>		<rect x="0" y="280.56" width="19.3977" height="15.3251" class="st4"></rect>		<text x="4.2" y="290.92" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rs</text>		</g>	<g id="shape26-80" v:mid="26" v:groupcontext="shape" transform="translate(244.532,-204.167)">		<title>Sheet.26</title>		<desc>Rt</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="10.9206" cy="288.223" width="21.85" height="15.3251"></v:textrect>		<rect x="0" y="280.56" width="21.8412" height="15.3251" class="st4"></rect>		<text x="6.42" y="290.92" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rt</text>		</g>	<g id="shape27-83" v:mid="27" v:groupcontext="shape" v:layermember="0" transform="translate(369.054,-200.969)">		<title>Dynamic connector.123</title>		<path d="M-7.1 295.89 L-7.21 310.23" class="st2"></path>	</g>	<g id="shape28-88" v:mid="28" v:groupcontext="shape" transform="translate(185.856,-39.4227)">		<title>Rectangle.124</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="274.165" width="189.995" height="21.7206" class="st1"></rect>	</g>	<g id="shape29-90" v:mid="29" v:groupcontext="shape" v:layermember="0" transform="translate(362.407,-148.785)">		<title>Dynamic connector.125</title>		<path d="M-7.09 295.89 L-7.31 295.89 L-7.31 320.37" class="st2"></path>	</g>	<g id="shape30-95" v:mid="30" v:groupcontext="shape" transform="translate(331.203,-92.7739)">		<title>Rounded rectangle.126</title>		<desc>XOR</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="19.0055" cy="285.704" width="38.02" height="20.363"></v:textrect>		<path d="M27.83 295.89 A10.1816 10.1816 -180 0 0 38.01 285.7 A10.1816 10.1816 -180 0 0 27.83 275.52 L10.18 275.52 A10.1816					 10.1816 -180 0 0 -0 285.7 A10.1816 10.1816 -180 0 0 10.18 295.89 L27.83 295.89 Z" class="st1"></path>		<text x="9.25" y="288.4" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>XOR</text>		</g>	<g id="shape31-98" v:mid="31" v:groupcontext="shape" v:layermember="0" transform="translate(343.008,-92.7739)">		<title>Dynamic connector.127</title>		<path d="M7.2 295.89 L7.2 316.36" class="st2"></path>	</g>	<g id="shape32-103" v:mid="32" v:groupcontext="shape" v:layermember="0" transform="translate(329.574,-61.1433)">		<title>Dynamic connector.128</title>		<path d="M0 295.89 L46.65 295.89 A3 3 0 1 1 52.65 295.89 L59.73 295.89 L59.73 223.8 L28.52 223.8 A3 3 -180 0 0 22.52					 223.8 L19.01 223.8 L19.01 232.73" class="st2"></path>	</g>	<g id="shape33-108" v:mid="33" v:groupcontext="shape" transform="translate(363.316,-151.223)">		<title>Sheet.33</title>		<desc>16 ´ 16 carryless polynomial multiply</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="25.9893" cy="288.223" width="51.98" height="15.3251"></v:textrect>		<rect x="0" y="280.56" width="51.9785" height="15.3251" class="st4"></rect>		<text x="11.98" y="274.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>16 ´ 16<v:newlinechar></v:newlinechar><tspan x="7.99" dy="1.2em" class="st7">carryless<v:newlinechar></v:newlinechar></tspan><tspan x="4.48" dy="1.2em" class="st7">polynomial </tspan><tspan x="10.74" dy="1.2em" class="st7">multiply</tspan></text>		</g>	<g id="shape34-114" v:mid="34" v:groupcontext="shape" transform="translate(270.814,-18.6)">		<title>Sheet.34</title>		<desc>Rxx</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="15.94" cy="290.845" width="31.88" height="10.08"></v:textrect>		<rect x="0" y="285.805" width="31.8799" height="10.08" class="st4"></rect>		<text x="8.19" y="293.55" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rxx</text>		</g>	<g id="shape35-117" v:mid="35" v:groupcontext="shape" v:layermember="0" transform="translate(343.366,-92.7739)">		<title>Dynamic connector.131</title>		<path d="M0 295.89 L0 305.93 L-16.22 305.93 A3 3 -180 0 0 -22.22 305.93 L-37.94 305.93 A3 3 -180 0 0 -43.94 305.93 L-44.82					 305.93 A3 3 -180 0 0 -50.82 305.93 L-84.66 305.93 L-84.66 316.36" class="st2"></path>	</g>	<g id="shape36-122" v:mid="36" v:groupcontext="shape" v:layermember="0" transform="translate(245.406,-61.1433)">		<title>Dynamic connector.132</title>		<path d="M0 295.89 L0 233.87 L42 233.87 A3 3 0 1 1 48 233.87 L53.47 233.87 A3 3 0 1 1 59.47 233.87 L96.66 233.87 L96.66					 243.89" class="st6"></path>	</g>	<g id="shape37-127" v:mid="37" v:groupcontext="shape" transform="translate(267.127,-238.98)">		<title>Rectangle.133</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="274.165" width="54.3014" height="21.7206" class="st1"></rect>	</g>	<g id="shape38-129" v:mid="38" v:groupcontext="shape" transform="translate(267.127,-200.969)">		<title>Rectangle.134</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<rect x="0" y="274.165" width="54.3014" height="21.7206" class="st1"></rect>	</g>	<g id="shape39-131" v:mid="39" v:groupcontext="shape" v:layermember="0" transform="translate(286.979,-238.98)">		<title>Dynamic connector.135</title>		<path d="M7.1 295.89 L7.26 348.47" class="st2"></path>	</g>	<g id="group40-136" transform="translate(292.996,-154.813)" v:mid="40" v:groupcontext="group">		<title>Sheet.40</title>		<g id="shape41-137" v:mid="41" v:groupcontext="shape" transform="translate(8.06979,-8.14521)">			<title>Center drag circle</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>			</v:userdefs>			<path d="M-13.58 295.89 A13.5754 13.5754 0 0 1 13.58 295.89 A13.5754 13.5754 0 1 1 -13.58 295.89 Z" class="st1"></path>		</g>		<g id="shape42-139" v:mid="42" v:groupcontext="shape" transform="translate(8.06979,-8.14521)">			<title>Center drag circle.5</title>			<v:userdefs>				<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>			</v:userdefs>			<path d="M-4.75 295.89 A4.75137 4.75137 0 0 1 4.75 295.89 A4.75137 4.75137 0 1 1 -4.75 295.89 Z" class="st1"></path>		</g>		<g id="shape43-141" v:mid="43" v:groupcontext="shape" transform="translate(1.34667,-3.46679)">			<title>Sheet.43</title>			<desc>*</desc>			<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>			<v:textrect cx="6.71226" cy="293.811" width="13.43" height="4.14802"></v:textrect>			<rect x="0" y="291.737" width="13.4245" height="4.14802" class="st4"></rect>			<text x="4.96" y="296.51" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>*</text>			</g>	</g>	<g id="shape44-144" v:mid="44" v:groupcontext="shape" v:layermember="0" transform="translate(314.753,-200.969)">		<title>Dynamic connector.142</title>		<path d="M-7.1 295.89 L-7.21 310.23" class="st2"></path>	</g>	<g id="shape45-149" v:mid="45" v:groupcontext="shape" v:layermember="0" transform="translate(294.248,-148.785)">		<title>Dynamic connector.143</title>		<path d="M6.77 295.89 L7.63 295.89 L7.63 319.97" class="st2"></path>	</g>	<g id="shape46-154" v:mid="46" v:groupcontext="shape" transform="translate(282.874,-93.1811)">		<title>Rounded rectangle.144</title>		<desc>XOR</desc>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(12):26"></v:ud>		</v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="19.0055" cy="285.704" width="38.02" height="20.363"></v:textrect>		<path d="M27.83 295.89 A10.1816 10.1816 -180 0 0 38.01 285.7 A10.1816 10.1816 -180 0 0 27.83 275.52 L10.18 275.52 A10.1816					 10.1816 -180 0 0 -0 285.7 A10.1816 10.1816 -180 0 0 10.18 295.89 L27.83 295.89 Z" class="st1"></path>		<text x="9.25" y="288.4" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>XOR</text>		</g>	<g id="shape47-157" v:mid="47" v:groupcontext="shape" v:layermember="0" transform="translate(295.223,-93.1811)">		<title>Dynamic connector.145</title>		<path d="M7.2 295.89 L7.2 316.76" class="st2"></path>	</g>	<g id="shape48-162" v:mid="48" v:groupcontext="shape" v:layermember="0" transform="translate(325.491,-61.1433)">		<title>Dynamic connector.146</title>		<path d="M-1.35 295.89 L-1.35 236.14 L-13.05 236.14 L-13.05 243.48" class="st6"></path>	</g>	<g id="shape49-167" v:mid="49" v:groupcontext="shape" transform="translate(228.875,-158.494)">		<title>Sheet.49</title>		<desc>16 ´ 16 carryless polynomial multiply</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="28.8899" cy="288.223" width="57.78" height="15.3251"></v:textrect>		<rect x="0" y="280.56" width="57.7798" height="15.3251" class="st4"></rect>		<text x="14.88" y="274.72" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>16 ´ 16<v:newlinechar></v:newlinechar><tspan x="10.89" dy="1.2em" class="st7">carryless<v:newlinechar></v:newlinechar></tspan><tspan x="7.38" dy="1.2em" class="st7">polynomial </tspan><tspan x="13.64" dy="1.2em" class="st7">multiply</tspan></text>		</g>	<g id="shape50-173" v:mid="50" v:groupcontext="shape" v:layermember="0" transform="translate(295.545,-93.1811)">		<title>Dynamic connector.148</title>		<path d="M0 295.89 L0 312.25 L-33.83 312.25 A3 3 -180 0 0 -39.83 312.25 L-47.14 312.25 A3 3 -180 0 0 -53.14 312.25 L-85.43					 312.25 L-85.43 316.76" class="st2"></path>	</g>	<g id="shape51-178" v:mid="51" v:groupcontext="shape" v:layermember="0" transform="translate(196.535,-61.1433)">		<title>Dynamic connector.149</title>		<path d="M0 295.89 L0 226.5 L93.87 226.5 L93.87 232.32" class="st2"></path>	</g>	<g id="shape52-183" v:mid="52" v:groupcontext="shape" v:layermember="0" transform="translate(273.653,-61.1433)">		<title>Dynamic connector.150</title>		<path d="M7.2 295.89 L7.2 292.51 L25.77 292.51 A3 3 0 1 1 31.77 292.51 L47.49 292.51 A3 3 0 1 1 53.49 292.51 L73.55 292.51					 A3 3 0 1 1 79.55 292.51 L105.57 292.51 L105.57 320.98 L7.2 320.98 L7.2 317.61" class="st8"></path>	</g>	<g id="shape53-186" v:mid="53" v:groupcontext="shape" v:layermember="0" transform="translate(319.658,-61.1433)">		<title>Dynamic connector.151</title>		<path d="M7.2 295.89 L7.2 317.61" class="st8"></path>	</g>	<g id="shape54-189" v:mid="54" v:groupcontext="shape" v:layermember="0" transform="translate(227.346,-61.1433)">		<title>Dynamic connector.152</title>		<path d="M7.2 295.89 L7.2 317.61" class="st8"></path>	</g>	<g id="shape55-192" v:mid="55" v:groupcontext="shape" transform="translate(50.0145,-243.755)">		<title>Sheet.55</title>		<desc>Rxx += pmpyw(Rs,Rt)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="65.76" cy="288.223" width="131.52" height="15.3251"></v:textrect>		<rect x="0" y="280.56" width="131.52" height="15.3251" class="st4"></rect>		<text x="21.75" y="290.92" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rxx += pmpyw(Rs,Rt)</text>		</g>	<g id="shape56-195" v:mid="56" v:groupcontext="shape" transform="translate(260.432,-261.96)">		<title>Sheet.56</title>		<desc>Rxx += vpmpyh(Rs,Rt)</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="57.751" cy="288.223" width="115.51" height="15.3251"></v:textrect>		<rect x="0" y="280.56" width="115.502" height="15.3251" class="st4"></rect>		<text x="12.24" y="290.92" class="st5" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Rxx += vpmpyh(Rs,Rt)</text>		</g></g>
</svg>

**Polynomial multiply**

For more information on the pmpy instructions, see
[Polynomial multiply words](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#polynomial-multiply-words).

[[1](https://docs.qualcomm.com/doc/80-N2040-60/topic/data-processing.html#id2)]

See RFC 1071 [(http://www.faqs.org/rfcs/rfc1071.html)](http://www.faqs.org/rfcs/rfc1071.html%29)

Last Published: Jan 16, 2025

[Previous Topic
Instructions](https://docs.qualcomm.com/bundle/publicresource/80-N2040-60/topics/instructions.md) [Next Topic
Memory](https://docs.qualcomm.com/bundle/publicresource/80-N2040-60/topics/memory.md)