# Introduction

This document describes the Qualcomm® Hexagon™ Vector eXtensions
(HVX) instruction set architecture. These extensions are implemented
in an optional coprocessor. This document assumes that the reader is
familiar with the Hexagon architecture. For a full description of the
architecture, refer to the Qualcomm Hexagon Programmer’s Reference
Manual

## SIMD coprocessor

HVX instructions are primarily implemented in a single instruction
multiple data (SIMD) coprocessor block that includes vector
registers, vector compute elements, and dedicated memory. This
extends the baseline Hexagon architecture to enable high-performance
computer vision, image processing, or other workloads that can map to
SIMD parallel processing.

<?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-hexagon-core-simd.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="8.67014in" height="4.41847in" viewbox="0 0 624.25 318.13" xml:space="preserve" color-interpolation-filters="sRGB" class="st11"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvConvertTheme"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: none; stroke: #7030a0; stroke-dasharray: 7, 5; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st2 { fill: #2a2aea; font-family: Roboto; font-size: 1.00001em }
.svg-1 .st3 { fill: none; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st4 { fill: #2a2aea; font-family: Roboto; font-size: 0.833336em }
.svg-1 .st5 { font-size: 1em }
.svg-1 .st6 { marker-end: url("#mrkr4-63"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st7 { fill: #2a2aea; fill-opacity: 1; stroke: #2a2aea; stroke-opacity: 1; stroke-width: 0.40983606557377 }
.svg-1 .st8 { marker-end: url("#mrkr4-72"); marker-start: url("#mrkr4-70"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st9 { fill: #2a2aea; fill-opacity: 1; stroke: #2a2aea; stroke-opacity: 1; stroke-width: 0.35714285714286 }
.svg-1 .st10 { marker-end: url("#mrkr4-72"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st11 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="mrkr4-63" class="st7" v:arrowtype="4" v:arrowsize="0" v:setback="4.88" refx="-4.88" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-2.44,-2.44) "></use>	</marker>	<marker id="mrkr4-70" class="st9" v:arrowtype="4" v:arrowsize="1" v:setback="5.24" refx="5.24" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(2.8) "></use>	</marker>	<marker id="mrkr4-72" class="st9" v:arrowtype="4" v:arrowsize="1" v:setback="5.6" refx="-5.6" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-2.8,-2.8) "></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>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape3-1" v:mid="3" v:groupcontext="shape" transform="translate(18.5,-144.38)">		<title>Rectangle.15</title>		<desc>Hexagon core</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:verticalalign="0"></v:textblock>		<v:textrect cx="98.94" cy="240.505" width="197.88" height="155.25"></v:textrect>		<path d="M0 318.13 L197.88 318.13 L197.88 162.88 L0 162.88 L0 318.13 Z" class="st1"></path>		<text x="61.89" y="177.68" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Hexagon core</text>		</g>	<g id="shape4-4" v:mid="4" v:groupcontext="shape" transform="translate(242.375,-86)">		<title>Rectangle.4</title>		<desc>SIMD coprocessor</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:verticalalign="0"></v:textblock>		<v:textrect cx="181.687" cy="268.69" width="363.38" height="98.88"></v:textrect>		<path d="M0 318.13 L363.37 318.13 L363.37 219.25 L0 219.25 L0 318.13 Z" class="st1"></path>		<text x="253.8" y="234.05" class="st2" v:langid="1033"><v:paragraph v:indentright="7.2" v:horizalign="2"></v:paragraph><v:tablist></v:tablist>SIMD coprocessor</text>		</g>	<g id="shape5-7" v:mid="5" v:groupcontext="shape" transform="translate(56.75,-18.5)">		<title>Rectangle.18</title>		<desc>L2$/L2-TCM</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="240.75" cy="291.19" width="481.51" height="53.88"></v:textrect>		<path d="M0 318.13 L481.5 318.13 L481.5 264.25 L0 264.25 L0 318.13 Z" class="st1"></path>		<text x="207.33" y="294.79" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>L2$/L2-TCM</text>		</g>	<g id="shape7-10" v:mid="7" v:groupcontext="shape" transform="translate(29.63,-252.38)">		<title>Rectangle.41</title>		<desc>I$</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="83.31" cy="308.005" width="166.62" height="20.25"></v:textrect>		<rect x="0" y="297.88" width="166.62" height="20.25" class="st3"></rect>		<text x="79.14" y="311.01" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>I$</text>		</g>	<g id="shape75-13" v:mid="75" v:groupcontext="shape" transform="translate(29.63,-198.38)">		<title>Rectangle.75</title>		<desc>R0-R31 P0-P3</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="83.31" cy="299.567" width="166.62" height="37.125"></v:textrect>		<rect x="0" y="281.005" width="166.62" height="37.125" class="st3"></rect>		<text x="67.35" y="296.57" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>R0-R31<v:newlinechar></v:newlinechar><tspan x="70.01" dy="1.2em" class="st5">P0</tspan>-P3</text>		</g>	<g id="shape76-17" v:mid="76" v:groupcontext="shape" transform="translate(151.25,-178.13)">		<title>Rectangle.76</title>		<desc>S0</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="22.5" cy="308.005" width="45" height="20.25"></v:textrect>		<rect x="0" y="297.88" width="45" height="20.25" class="st3"></rect>		<text x="16.73" y="311.01" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>S0</text>		</g>	<g id="shape77-20" v:mid="77" v:groupcontext="shape" transform="translate(110.75,-157.88)">		<title>Rectangle.77</title>		<desc>D$</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="42.75" cy="308.005" width="85.5" height="20.25"></v:textrect>		<rect x="0" y="297.88" width="85.5" height="20.25" class="st3"></rect>		<text x="36.66" y="311.01" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>D$</text>		</g>	<g id="shape78-23" v:mid="78" v:groupcontext="shape" transform="translate(110.75,-178.13)">		<title>Rectangle.78</title>		<desc>S1</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="20.25" cy="308.005" width="40.5" height="20.25"></v:textrect>		<rect x="0" y="297.88" width="40.5" height="20.25" class="st3"></rect>		<text x="14.48" y="311.01" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>S1</text>		</g>	<g id="shape79-26" v:mid="79" v:groupcontext="shape" transform="translate(70.13,-178.13)">		<title>Rectangle.79</title>		<desc>S2</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="20.25" cy="308.005" width="40.5" height="20.25"></v:textrect>		<rect x="0" y="297.88" width="40.5" height="20.25" class="st3"></rect>		<text x="14.48" y="311.01" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>S2</text>		</g>	<g id="shape80-29" v:mid="80" v:groupcontext="shape" transform="translate(29.63,-178.13)">		<title>Rectangle.80</title>		<desc>S3</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="20.25" cy="308.005" width="40.5" height="20.25"></v:textrect>		<rect x="0" y="297.88" width="40.5" height="20.25" class="st3"></rect>		<text x="14.48" y="311.01" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>S3</text>		</g>	<g id="shape81-32" v:mid="81" v:groupcontext="shape" transform="translate(256.94,-131)">		<title>Rectangle.81</title>		<desc>R0-R31 P0-P3</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="83.31" cy="303.786" width="166.62" height="28.6875"></v:textrect>		<rect x="0" y="289.442" width="166.62" height="28.6875" class="st3"></rect>		<text x="67.35" y="300.79" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>R0-R31<v:newlinechar></v:newlinechar><tspan x="70.01" dy="1.2em" class="st5">P0</tspan>-P3</text>		</g>	<g id="shape82-36" v:mid="82" v:groupcontext="shape" transform="translate(378.56,-102.313)">		<title>Rectangle.82</title>		<desc>S0</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="22.5" cy="303.786" width="45" height="28.6875"></v:textrect>		<rect x="0" y="289.442" width="45" height="28.6875" class="st3"></rect>		<text x="16.73" y="306.79" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>S0</text>		</g>	<g id="shape83-39" v:mid="83" v:groupcontext="shape" transform="translate(338.06,-102.313)">		<title>Rectangle.83</title>		<desc>S1</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="20.25" cy="303.786" width="40.5" height="28.6875"></v:textrect>		<rect x="0" y="289.442" width="40.5" height="28.6875" class="st3"></rect>		<text x="14.48" y="306.79" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>S1</text>		</g>	<g id="shape84-42" v:mid="84" v:groupcontext="shape" transform="translate(297.44,-102.313)">		<title>Rectangle.84</title>		<desc>S2</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="20.25" cy="303.786" width="40.5" height="28.6875"></v:textrect>		<rect x="0" y="289.442" width="40.5" height="28.6875" class="st3"></rect>		<text x="14.48" y="306.79" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>S2</text>		</g>	<g id="shape85-45" v:mid="85" v:groupcontext="shape" transform="translate(256.94,-102.313)">		<title>Rectangle.85</title>		<desc>S3</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="20.25" cy="303.786" width="40.5" height="28.6875"></v:textrect>		<rect x="0" y="289.442" width="40.5" height="28.6875" class="st3"></rect>		<text x="14.48" y="306.79" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>S3</text>		</g>	<g id="shape86-48" v:mid="86" v:groupcontext="shape" transform="translate(423.56,-102.313)">		<title>Rectangle.86</title>		<desc>Mem</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="22.5" cy="289.442" width="45" height="57.375"></v:textrect>		<rect x="0" y="260.755" width="45" height="57.375" class="st3"></rect>		<text x="11.1" y="292.44" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Mem</text>		</g>	<g id="shape87-51" v:mid="87" v:groupcontext="shape" transform="translate(468.56,-102.313)">		<title>Rectangle.87</title>		<desc>scat gath</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="22.5" cy="303.786" width="45" height="28.6875"></v:textrect>		<rect x="0" y="289.442" width="45" height="28.6875" class="st3"></rect>		<text x="12.95" y="300.79" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>scat<v:newlinechar></v:newlinechar><tspan x="12.59" dy="1.2em" class="st5">gath</tspan></text>		</g>	<g id="shape88-55" v:mid="88" v:groupcontext="shape" transform="translate(551.75,-105.125)">		<title>Rectangle.88</title>		<desc>VTCM</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="22.5" cy="289.442" width="45" height="57.375"></v:textrect>		<rect x="0" y="260.755" width="45" height="57.375" class="st3"></rect>		<text x="8.72" y="292.44" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>VTCM</text>		</g>	<g id="shape89-58" v:mid="89" v:groupcontext="shape" v:layermember="0" transform="translate(103.94,-252.942)">		<title>Dynamic connector</title>		<path d="M9 318.69 L9 330.69" class="st6"></path>	</g>	<g id="shape90-64" v:mid="90" v:groupcontext="shape" v:layermember="0" transform="translate(162.44,-157.88)">		<title>Dynamic connector.90</title>		<path d="M-8.95 323.37 L-8.95 323.73 L-9.05 396.91" class="st8"></path>	</g>	<g id="shape93-73" v:mid="93" v:groupcontext="shape" transform="translate(196.25,-159.688)">		<title>Sheet.93</title>		<path d="M0 279.44 L227.31 279.44 L227.31 312.53" class="st10"></path>	</g>	<g id="shape94-78" v:mid="94" v:groupcontext="shape" transform="translate(764.19,215.817) rotate(90)">		<title>Sheet.94</title>		<path d="M5.24 318.13 L5.6 318.13 L24.33 318.13" class="st8"></path>	</g>	<g id="shape95-85" v:mid="95" v:groupcontext="shape" transform="translate(513.56,-116.656)">		<title>Sheet.95</title>		<path d="M5.24 318.13 L5.6 318.13 L32.59 318.13" class="st8"></path>	</g>	<g id="shape97-92" v:mid="97" v:groupcontext="shape" transform="translate(468.56,-144.38)">		<title>Sheet.97</title>		<path d="M5.24 318.13 L5.6 318.13 L77.59 318.13" class="st8"></path>	</g></g>
</svg>

**Hexagon core with attached SIMD coprocessor**

The Hexagon instruction set architecture (ISA) is extended with HVX
instructions. These instructions use HVX compute resources and can
freely mix with normal Hexagon instructions in a very long
instruction word (VLIW) packet. HVX instructions can also use scalar
source operands from the core.

## HVX features

HVX adds very wide SIMD capability to the Hexagon ISA. SIMD
operations execute on vector registers (currently up to 1024 bits
each), and multiple SIMD instructions can execute in parallel.

### Vector length

HVX supports 1024-bit vectors (128 byte). To minimize porting effort,
software should strive to treat vector length as an arbitrary
constant power of two.

<?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-length.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="3.94083in" height="1.58635in" viewbox="0 0 283.74 114.217" xml:space="preserve" color-interpolation-filters="sRGB" class="st5"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvConvertTheme"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-2 .st1 { fill: none; stroke: #7030a0; stroke-dasharray: 7, 5; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-2 .st2 { fill: #2a2aea; font-family: Roboto; font-size: 0.75em }
.svg-2 .st3 { fill: none; stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-2 .st4 { stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-2 .st5 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<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>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(18.12,-18.12)">		<title>Rectangle.39</title>		<desc>Vector context 0</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:verticalalign="0"></v:textblock>		<v:textrect cx="123.75" cy="75.2287" width="247.5" height="77.9775"></v:textrect>		<path d="M0 114.22 L247.5 114.22 L247.5 36.24 L0 36.24 L0 114.22 Z" class="st1"></path>		<text x="90.87" y="48.34" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Vector context 0</text>		</g>	<g id="shape2-4" v:mid="2" v:groupcontext="shape" transform="translate(45.1111,-60.0975)">		<title>Rectangle.31</title>		<desc>1024-bit</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="69.7544" cy="105.217" width="139.51" height="18"></v:textrect>		<rect x="0" y="96.2175" width="139.509" height="18" class="st3"></rect>		<text x="53.32" y="107.92" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1024-bit</text>		</g>	<g id="shape3-7" v:mid="3" v:groupcontext="shape" transform="translate(45.1111,-42.0975)">		<title>Rectangle.20</title>		<desc>. . .</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="69.7544" cy="105.217" width="139.51" height="18"></v:textrect>		<rect x="0" y="96.2175" width="139.509" height="18" class="st3"></rect>		<text x="63.97" y="107.92" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>. . .</text>		</g>	<g id="shape4-10" v:mid="4" v:groupcontext="shape" transform="translate(45.1111,-24.0975)">		<title>Rectangle.43</title>		<desc>1024-bit</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="69.7544" cy="105.217" width="139.51" height="18"></v:textrect>		<rect x="0" y="96.2175" width="139.509" height="18" class="st3"></rect>		<text x="53.32" y="107.92" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1024-bit</text>		</g>	<g id="shape5-13" v:mid="5" v:groupcontext="shape" transform="translate(18.12,-60.0975)">		<title>Sheet.5</title>		<desc>V0</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="13.4956" cy="105.217" width="27" height="18"></v:textrect>		<path d="M26.99 96.22 L0 96.22 L0 114.22 L26.99 114.22 L26.99 96.22" class="st4"></path>		<text x="8.11" y="107.92" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>V0</text>		</g>	<g id="shape6-17" v:mid="6" v:groupcontext="shape" transform="translate(18.12,-24.0975)">		<title>Sheet.6</title>		<desc>V31</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="13.4956" cy="105.217" width="27" height="18"></v:textrect>		<path d="M26.99 96.22 L0 96.22 L0 114.22 L26.99 114.22 L26.99 96.22" class="st4"></path>		<text x="5.58" y="107.92" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>V31</text>		</g>	<g id="shape7-21" v:mid="7" v:groupcontext="shape" transform="translate(218.37,-59.9775)">		<title>Rectangle.68</title>		<desc>128-bit</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="20.2822" cy="105.217" width="40.57" height="18"></v:textrect>		<rect x="0" y="96.2175" width="40.5644" height="18" class="st3"></rect>		<text x="6.37" y="107.92" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>128-bit</text>		</g>	<g id="shape8-24" v:mid="8" v:groupcontext="shape" transform="translate(218.37,-41.9775)">		<title>Rectangle.69</title>		<desc>. . .</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="20.2822" cy="105.217" width="40.57" height="18"></v:textrect>		<rect x="0" y="96.2175" width="40.5644" height="18" class="st3"></rect>		<text x="14.5" y="107.92" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>. . .</text>		</g>	<g id="shape9-27" v:mid="9" v:groupcontext="shape" transform="translate(218.37,-23.9775)">		<title>Rectangle.70</title>		<desc>128-bit</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="20.2822" cy="105.217" width="40.57" height="18"></v:textrect>		<rect x="0" y="96.2175" width="40.5644" height="18" class="st3"></rect>		<text x="6.37" y="107.92" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>128-bit</text>		</g>	<g id="shape10-30" v:mid="10" v:groupcontext="shape" transform="translate(202.094,-59.9775)">		<title>Sheet.10</title>		<desc>Q0</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="7.83835" cy="105.217" width="15.68" height="18"></v:textrect>		<path d="M15.68 96.22 L0 96.22 L0 114.22 L15.68 114.22 L15.68 96.22" class="st4"></path>		<text x="2.22" y="107.92" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Q0</text>		</g>	<g id="shape11-34" v:mid="11" v:groupcontext="shape" transform="translate(202.094,-23.9775)">		<title>Sheet.11</title>		<desc>Q3</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="7.83835" cy="105.217" width="15.68" height="18"></v:textrect>		<path d="M15.68 96.22 L0 96.22 L0 114.22 L15.68 114.22 L15.68 96.22" class="st4"></path>		<text x="2.22" y="107.92" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Q3</text>		</g></g>
</svg>

**Registers using 128 byte with a vector length of 1024 bits**

### Vector contexts

A vector context consists of a vector register file, vector predicate
file, and the ability to execute instructions using this state.

Scalar core hardware threads dynamically attach to a vector context; this
enables the thread to execute HVX instructions. Multiple hardware
threads can execute in parallel, each with a different vector
context. The number of supported vector contexts is
implementation-defined.

The scalar core can contain any number of hardware threads
greater or equal to the number of vector contexts. The scalar
hardware thread is assignable to a vector context through per-thread
SSR.XA programming, as follows:

- SSR.XA = 0: HVX instructions use vector context 0.
- SSR.XA = 1: HVX instructions use vector context 1, if it is available.
- SSR.XA = 2: HVX instructions use vector context 2, if it is available.
- SSR.XA = 3: HVX instructions use vector context 3, if it is available.
- SSR.XA = 4: HVX instructions use vector context 4, if it is available.
- SSR.XA = 5: HVX instructions use vector context 5, if it is available.
- SSR.XA = 6: HVX instructions use vector context 6, if it is available.
- SSR.XA = 7: HVX instructions use vector context 7, if it is available.

[Hardware threads](https://docs.qualcomm.com/doc/80-N2040-61/topic/introduction.html#v79-fig-hardware-threads) shows a vector context configuration
with four hardware threads, but with two of the threads configured to
use 128 byte vectors. In this configuration, two of the threads can
execute 128 byte vector instructions, while the other two threads can
execute scalar-only instructions.

<?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-hardware-threads.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="7.82472in" height="6.98431in" viewbox="0 0 563.38 502.87" xml:space="preserve" color-interpolation-filters="sRGB" class="st14"><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: none; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-3 .st2 { fill: #2a2aea; font-family: Roboto; font-size: 1.16666em }
.svg-3 .st3 { fill: none; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.5 }
.svg-3 .st4 { fill: #2a2aea; font-family: Roboto; font-size: 1.00001em }
.svg-3 .st5 { font-size: 1em }
.svg-3 .st6 { fill: #2a2aea; font-family: Roboto; font-size: 0.75em }
.svg-3 .st7 { fill: #ffffff; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.5 }
.svg-3 .st8 { stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.5 }
.svg-3 .st9 { marker-end: url("#mrkr4-114"); marker-start: url("#mrkr4-112"); stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-3 .st10 { fill: #2a2aea; fill-opacity: 1; stroke: #2a2aea; stroke-opacity: 1; stroke-width: 0.28409090909091 }
.svg-3 .st11 { fill: #ffffff; stroke: none; stroke-linecap: butt; stroke-width: 7.2 }
.svg-3 .st12 { fill: #2a2aea; font-family: Arial; font-size: 1.00001em }
.svg-3 .st13 { fill: none; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.72 }
.svg-3 .st14 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="mrkr4-112" class="st10" v:arrowtype="4" v:arrowsize="2" v:setback="6.68" refx="6.68" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(3.52) "></use>	</marker>	<marker id="mrkr4-114" class="st10" v:arrowtype="4" v:arrowsize="2" v:setback="7.04" refx="-7.04" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" 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>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape3-1" v:mid="3" v:groupcontext="shape" transform="translate(18.5,-329.12)">		<title>Rectangle.15</title>		<desc>Hexagon</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:verticalalign="0"></v:textblock>		<v:textrect cx="146.19" cy="425.245" width="292.38" height="155.25"></v:textrect>		<rect x="0" y="347.62" width="292.38" height="155.25" class="st1"></rect>		<text x="118.43" y="364.22" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Hexagon</text>		</g>	<g id="shape4-4" v:mid="4" v:groupcontext="shape" transform="translate(18.5,-18.5)">		<title>Rectangle.4</title>		<desc>SIMD coprocessor</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:verticalalign="0"></v:textblock>		<v:textrect cx="146.19" cy="376.87" width="292.38" height="252"></v:textrect>		<rect x="0" y="250.87" width="292.38" height="252" class="st1"></rect>		<text x="85.2" y="267.47" class="st2" v:langid="1033"><v:paragraph v:indentright="7.2" v:horizalign="1"></v:paragraph><v:tablist></v:tablist>SIMD coprocessor</text>		</g>	<g id="shape5-7" v:mid="5" v:groupcontext="shape" transform="translate(360.38,-41)">		<title>Rectangle.18</title>		<desc>L2$/L2-TCM</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="92.25" cy="298.12" width="184.51" height="409.5"></v:textrect>		<rect x="0" y="93.37" width="184.5" height="409.5" class="st1"></rect>		<text x="53.27" y="302.32" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>L2$/L2-TCM</text>		</g>	<g id="shape7-10" v:mid="7" v:groupcontext="shape" transform="translate(223.25,-411.771)">		<title>Rectangle.41</title>		<desc>I$</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="32.565" cy="482.141" width="65.13" height="41.4585"></v:textrect>		<rect x="0" y="461.411" width="65.13" height="41.4585" class="st3"></rect>		<text x="27.56" y="485.74" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>I$</text>		</g>	<g id="shape77-13" v:mid="77" v:groupcontext="shape" transform="translate(223.25,-360.5)">		<title>Rectangle.77</title>		<desc>D$</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="32.565" cy="482.141" width="65.13" height="41.4585"></v:textrect>		<rect x="0" y="461.411" width="65.13" height="41.4585" class="st3"></rect>		<text x="25.26" y="485.74" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>D$</text>		</g>	<g id="shape80-16" v:mid="80" v:groupcontext="shape" transform="translate(34.13,-401.958)">		<title>Rectangle.80</title>		<desc>GRF thread0</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="32.625" cy="478.599" width="65.25" height="48.5415"></v:textrect>		<rect x="0" y="454.328" width="65.25" height="48.5415" class="st3"></rect>		<text x="21.53" y="475" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GRF <tspan x="12.13" dy="1.2em" class="st5">thread0</tspan></text>		</g>	<g id="shape81-20" v:mid="81" v:groupcontext="shape" transform="translate(111.755,-401.958)">		<title>Rectangle.81</title>		<desc>GRF thread2</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="32.625" cy="478.599" width="65.25" height="48.5415"></v:textrect>		<rect x="0" y="454.328" width="65.25" height="48.5415" class="st3"></rect>		<text x="21.53" y="475" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GRF <tspan x="12.13" dy="1.2em" class="st5">thread2</tspan></text>		</g>	<g id="shape82-24" v:mid="82" v:groupcontext="shape" transform="translate(34.13,-342.5)">		<title>Rectangle.82</title>		<desc>GRF thread1</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="32.625" cy="478.599" width="65.25" height="48.5415"></v:textrect>		<rect x="0" y="454.328" width="65.25" height="48.5415" class="st3"></rect>		<text x="21.53" y="475" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GRF <tspan x="12.13" dy="1.2em" class="st5">thread1</tspan></text>		</g>	<g id="shape83-28" v:mid="83" v:groupcontext="shape" transform="translate(112.88,-342.5)">		<title>Rectangle.83</title>		<desc>GRF thread3</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="32.625" cy="478.599" width="65.25" height="48.5415"></v:textrect>		<rect x="0" y="454.328" width="65.25" height="48.5415" class="st3"></rect>		<text x="21.53" y="475" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>GRF <tspan x="12.13" dy="1.2em" class="st5">thread3</tspan></text>		</g>	<g id="shape84-32" v:mid="84" v:groupcontext="shape" transform="translate(38.63,-144.5)">		<title>Rectangle.39</title>		<desc>Vector context 0</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:verticalalign="0"></v:textblock>		<v:textrect cx="123.75" cy="463.881" width="247.5" height="77.9775"></v:textrect>		<rect x="0" y="424.893" width="247.5" height="77.9775" class="st3"></rect>		<text x="90.87" y="436.99" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Vector context 0</text>		</g>	<g id="shape85-35" v:mid="85" v:groupcontext="shape" transform="translate(65.6211,-186.477)">		<title>Rectangle.31</title>		<desc>1024-bit</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="69.7544" cy="493.87" width="139.51" height="18"></v:textrect>		<rect x="0" y="484.87" width="139.509" height="18" class="st7"></rect>		<text x="53.32" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1024-bit</text>		</g>	<g id="shape86-38" v:mid="86" v:groupcontext="shape" transform="translate(65.6211,-168.477)">		<title>Rectangle.20</title>		<desc>. . .</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="69.7544" cy="493.87" width="139.51" height="18"></v:textrect>		<rect x="0" y="484.87" width="139.509" height="18" class="st7"></rect>		<text x="63.97" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>. . .</text>		</g>	<g id="shape87-41" v:mid="87" v:groupcontext="shape" transform="translate(65.6211,-150.477)">		<title>Rectangle.43</title>		<desc>1024-bit</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="69.7544" cy="493.87" width="139.51" height="18"></v:textrect>		<rect x="0" y="484.87" width="139.509" height="18" class="st7"></rect>		<text x="53.32" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1024-bit</text>		</g>	<g id="shape88-44" v:mid="88" v:groupcontext="shape" transform="translate(38.63,-186.477)">		<title>Sheet.88</title>		<desc>V0</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="13.4956" cy="493.87" width="27" height="18"></v:textrect>		<path d="M26.99 484.87 L0 484.87 L0 502.87 L26.99 502.87 L26.99 484.87" class="st8"></path>		<text x="8.11" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>V0</text>		</g>	<g id="shape89-48" v:mid="89" v:groupcontext="shape" transform="translate(38.63,-150.477)">		<title>Sheet.89</title>		<desc>V31</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="13.4956" cy="493.87" width="27" height="18"></v:textrect>		<path d="M26.99 484.87 L0 484.87 L0 502.87 L26.99 502.87 L26.99 484.87" class="st8"></path>		<text x="5.58" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>V31</text>		</g>	<g id="shape90-52" v:mid="90" v:groupcontext="shape" transform="translate(238.88,-186.357)">		<title>Rectangle.68</title>		<desc>128-bit</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="20.2822" cy="493.87" width="40.57" height="18"></v:textrect>		<rect x="0" y="484.87" width="40.5644" height="18" class="st7"></rect>		<text x="6.37" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>128-bit</text>		</g>	<g id="shape91-55" v:mid="91" v:groupcontext="shape" transform="translate(238.88,-168.357)">		<title>Rectangle.69</title>		<desc>. . .</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="20.2822" cy="493.87" width="40.57" height="18"></v:textrect>		<rect x="0" y="484.87" width="40.5644" height="18" class="st7"></rect>		<text x="14.5" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>. . .</text>		</g>	<g id="shape92-58" v:mid="92" v:groupcontext="shape" transform="translate(238.88,-150.357)">		<title>Rectangle.70</title>		<desc>128-bit</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="20.2822" cy="493.87" width="40.57" height="18"></v:textrect>		<rect x="0" y="484.87" width="40.5644" height="18" class="st7"></rect>		<text x="6.37" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>128-bit</text>		</g>	<g id="shape93-61" v:mid="93" v:groupcontext="shape" transform="translate(222.604,-186.357)">		<title>Sheet.93</title>		<desc>Q0</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="7.83835" cy="493.87" width="15.68" height="18"></v:textrect>		<path d="M15.68 484.87 L0 484.87 L0 502.87 L15.68 502.87 L15.68 484.87" class="st8"></path>		<text x="2.22" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Q0</text>		</g>	<g id="shape94-65" v:mid="94" v:groupcontext="shape" transform="translate(222.604,-150.357)">		<title>Sheet.94</title>		<desc>Q3</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="7.83835" cy="493.87" width="15.68" height="18"></v:textrect>		<path d="M15.68 484.87 L0 484.87 L0 502.87 L15.68 502.87 L15.68 484.87" class="st8"></path>		<text x="2.22" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Q3</text>		</g>	<g id="shape95-69" v:mid="95" v:groupcontext="shape" transform="translate(40.88,-47.0113)">		<title>Rectangle.95</title>		<desc>Vector context 1</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:verticalalign="0"></v:textblock>		<v:textrect cx="123.75" cy="463.881" width="247.5" height="77.9775"></v:textrect>		<rect x="0" y="424.893" width="247.5" height="77.9775" class="st3"></rect>		<text x="90.87" y="436.99" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Vector context 1</text>		</g>	<g id="shape96-72" v:mid="96" v:groupcontext="shape" transform="translate(67.8711,-88.9887)">		<title>Rectangle.96</title>		<desc>1024-bit</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="69.7544" cy="493.87" width="139.51" height="18"></v:textrect>		<rect x="0" y="484.87" width="139.509" height="18" class="st7"></rect>		<text x="53.32" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1024-bit</text>		</g>	<g id="shape97-75" v:mid="97" v:groupcontext="shape" transform="translate(67.8711,-70.9887)">		<title>Rectangle.97</title>		<desc>. . .</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="69.7544" cy="493.87" width="139.51" height="18"></v:textrect>		<rect x="0" y="484.87" width="139.509" height="18" class="st7"></rect>		<text x="63.97" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>. . .</text>		</g>	<g id="shape98-78" v:mid="98" v:groupcontext="shape" transform="translate(67.8711,-52.9887)">		<title>Rectangle.98</title>		<desc>1024-bit</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="69.7544" cy="493.87" width="139.51" height="18"></v:textrect>		<rect x="0" y="484.87" width="139.509" height="18" class="st7"></rect>		<text x="53.32" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1024-bit</text>		</g>	<g id="shape99-81" v:mid="99" v:groupcontext="shape" transform="translate(40.88,-88.9887)">		<title>Sheet.99</title>		<desc>V0</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="13.4956" cy="493.87" width="27" height="18"></v:textrect>		<path d="M26.99 484.87 L0 484.87 L0 502.87 L26.99 502.87 L26.99 484.87" class="st8"></path>		<text x="8.11" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>V0</text>		</g>	<g id="shape100-85" v:mid="100" v:groupcontext="shape" transform="translate(40.88,-52.9887)">		<title>Sheet.100</title>		<desc>V31</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="13.4956" cy="493.87" width="27" height="18"></v:textrect>		<path d="M26.99 484.87 L0 484.87 L0 502.87 L26.99 502.87 L26.99 484.87" class="st8"></path>		<text x="5.58" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>V31</text>		</g>	<g id="shape101-89" v:mid="101" v:groupcontext="shape" transform="translate(241.13,-88.8687)">		<title>Rectangle.101</title>		<desc>128-bit</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="20.2822" cy="493.87" width="40.57" height="18"></v:textrect>		<rect x="0" y="484.87" width="40.5644" height="18" class="st7"></rect>		<text x="6.37" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>128-bit</text>		</g>	<g id="shape102-92" v:mid="102" v:groupcontext="shape" transform="translate(241.13,-70.8687)">		<title>Rectangle.102</title>		<desc>. . .</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="20.2822" cy="493.87" width="40.57" height="18"></v:textrect>		<rect x="0" y="484.87" width="40.5644" height="18" class="st7"></rect>		<text x="14.5" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>. . .</text>		</g>	<g id="shape103-95" v:mid="103" v:groupcontext="shape" transform="translate(241.13,-52.8687)">		<title>Rectangle.103</title>		<desc>128-bit</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="20.2822" cy="493.87" width="40.57" height="18"></v:textrect>		<rect x="0" y="484.87" width="40.5644" height="18" class="st7"></rect>		<text x="6.37" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>128-bit</text>		</g>	<g id="shape104-98" v:mid="104" v:groupcontext="shape" transform="translate(224.854,-88.8687)">		<title>Sheet.104</title>		<desc>Q0</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="7.83835" cy="493.87" width="15.68" height="18"></v:textrect>		<path d="M15.68 484.87 L0 484.87 L0 502.87 L15.68 502.87 L15.68 484.87" class="st8"></path>		<text x="2.22" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Q0</text>		</g>	<g id="shape105-102" v:mid="105" v:groupcontext="shape" transform="translate(224.854,-52.8687)">		<title>Sheet.105</title>		<desc>Q3</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="7.83835" cy="493.87" width="15.68" height="18"></v:textrect>		<path d="M15.68 484.87 L0 484.87 L0 502.87 L15.68 502.87 L15.68 484.87" class="st8"></path>		<text x="2.22" y="496.57" class="st6" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Q3</text>		</g>	<g id="shape106-106" v:mid="106" v:groupcontext="shape" transform="translate(667.56,173.75) rotate(90)">		<title>Sheet.106</title>		<desc>Coprocessor instruction port</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="29.37" cy="460.18" width="150.76" height="33.69" transform="rotate(-90)"></v:textrect>		<path d="M6.68 502.87 L7.04 502.87 L51.58 502.87" class="st9"></path>		<rect v:rectcontext="textBkgnd" x="-499.532" y="14.97" width="78.7044" height="28.8001" transform="rotate(-90)" class="st11"></rect>		<text x="-494.19" y="25.77" transform="rotate(-90)" class="st12" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Coprocessor <v:lf></v:lf><tspan x="-499.53" dy="1.2em" class="st5">instruction port</tspan></text>		</g>	<g id="shape107-118" v:mid="107" v:groupcontext="shape" transform="translate(310.88,-406.745)">		<title>Sheet.107</title>		<path d="M6.68 502.87 L7.04 502.87 L42.46 502.87" class="st9"></path>	</g>	<g id="shape108-125" v:mid="108" v:groupcontext="shape" transform="translate(310.88,-144.5)">		<title>Sheet.108</title>		<path d="M6.68 502.87 L7.04 502.87 L42.46 502.87" class="st9"></path>	</g>	<g id="shape109-132" v:mid="109" v:groupcontext="shape" transform="translate(144.317,-288.812)">		<title>Sheet.109</title>		<rect x="0" y="482.87" width="152" height="20" class="st13"></rect>	</g>	<g id="shape111-134" v:mid="111" v:groupcontext="shape" transform="translate(98.1925,-302.875)">		<title>Sheet.111</title>		<rect x="0" y="482.87" width="152" height="20" class="st13"></rect>	</g></g>
</svg>

**Four hardware threads (two HVX-enabled threads and two scalar-only threads)**

### Memory access

The HVX memory instructions (referred to as VMEM instructions) use
the Hexagon general registers (R0 through R31) to form addresses that
access memory. The memory access size of these instructions is the
vector length or the size of a vector register.

VMEM loads and stores share a 32-bit virtual address space as normal
scalar load/stores. VMEM load/stores are coherent with scalar
load/stores and hardware maintains coherency.

### Vector registers

HVX has two sets of registers:

- Data registers consist of 32 vector length registers. Certain
operations can access a pair of registers to effectively double the
vector length for the operand.
- Predicate registers consist of four registers, each with one bit per
byte of vector length. These registers provide operands to compare,
mux, and other special instructions.

The vector registers are partitioned into lanes that operate in SIMD
fashion. For example, with 1024-bit (128 byte) vector length, each
vector register can contain any of the following items:

- 32 words (32-bit elements)
- 64 halfwords (16-bit elements)
- 128 bytes (8-bit elements)

Element ordering is little-endian with the lowest byte in the
least-significant position, as shown in [1024-bit SIMD register](https://docs.qualcomm.com/doc/80-N2040-61/topic/introduction.html#v79-fig-1024-bit-simd-reg).

<?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-1024-bit-simd-reg.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.38969in" height="1.25333in" viewbox="0 0 460.058 90.24" xml:space="preserve" color-interpolation-filters="sRGB" class="st5"><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-4 .st1 { stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-4 .st2 { fill: #2a2aea; font-family: Roboto; font-size: 3em }
.svg-4 .st3 { fill: #ffffff; stroke: #2a2aea; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.24 }
.svg-4 .st4 { fill: #2a2aea; font-family: Roboto; font-size: 0.75em }
.svg-4 .st5 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<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>	<v:layer v:name="Connector" v:index="0"></v:layer>	<g id="shape2-1" v:mid="2" v:groupcontext="shape" transform="translate(164.523,-24.87)">		<title>Sheet.2</title>		<desc>. . .</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="27.6735" cy="66.615" width="55.35" height="47.25"></v:textrect>		<path d="M55.35 42.99 L0 42.99 L0 90.24 L55.35 90.24 L55.35 42.99" class="st1"></path>		<text x="4.55" y="77.42" class="st2" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>. . .</text>		</g>	<g id="shape3-5" v:mid="3" v:groupcontext="shape" transform="translate(18.12,-54.12)">		<title>Rectangle.15</title>		<desc>127</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="81.24" width="36.01" height="18"></v:textrect>		<rect x="0" y="72.24" width="36" height="18" class="st3"></rect>		<text x="10.42" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>127</text>		</g>	<g id="shape28-8" v:mid="28" v:groupcontext="shape" transform="translate(395.37,-54.12)">		<title>Sheet.28</title>		<desc>Byte</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="23.3156" cy="81.24" width="46.64" height="18"></v:textrect>		<path d="M46.63 72.24 L0 72.24 L0 90.24 L46.63 90.24 L46.63 72.24" class="st1"></path>		<text x="7.2" y="83.94" class="st4" v:langid="1033"><v:paragraph v:indentleft="7.2"></v:paragraph><v:tablist></v:tablist>Byte</text>		</g>	<g id="shape32-12" v:mid="32" v:groupcontext="shape" transform="translate(395.427,-36.12)">		<title>Sheet.32</title>		<desc>Halfword</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="23.3156" cy="81.24" width="46.64" height="18"></v:textrect>		<path d="M46.63 72.24 L0 72.24 L0 90.24 L46.63 90.24 L46.63 72.24" class="st1"></path>		<text x="7.2" y="83.94" class="st4" v:langid="1033"><v:paragraph v:indentleft="7.2"></v:paragraph><v:tablist></v:tablist>Halfword</text>		</g>	<g id="shape33-16" v:mid="33" v:groupcontext="shape" transform="translate(395.37,-18.12)">		<title>Sheet.33</title>		<desc>Word</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="23.3156" cy="81.24" width="46.64" height="18"></v:textrect>		<path d="M46.63 72.24 L0 72.24 L0 90.24 L46.63 90.24 L46.63 72.24" class="st1"></path>		<text x="7.2" y="83.94" class="st4" v:langid="1033"><v:paragraph v:indentleft="7.2"></v:paragraph><v:tablist></v:tablist>Word</text>		</g>	<g id="shape45-20" v:mid="45" v:groupcontext="shape" transform="translate(18.12,-36.12)">		<title>Rectangle.45</title>		<desc>63</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="35.8977" cy="81.24" width="71.8" height="18"></v:textrect>		<rect x="0" y="72.24" width="71.7955" height="18" class="st3"></rect>		<text x="30.84" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>63</text>		</g>	<g id="shape46-23" v:mid="46" v:groupcontext="shape" transform="translate(89.9703,-36.12)">		<title>Rectangle.46</title>		<desc>63</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="81.24" width="72" height="18"></v:textrect>		<rect x="0" y="72.24" width="72" height="18" class="st3"></rect>		<text x="30.95" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>63</text>		</g>	<g id="shape47-26" v:mid="47" v:groupcontext="shape" transform="translate(18.12,-18.12)">		<title>Rectangle.47</title>		<desc>31</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="71.9626" cy="81.24" width="143.93" height="18"></v:textrect>		<rect x="0" y="72.24" width="143.925" height="18" class="st3"></rect>		<text x="66.91" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>31</text>		</g>	<g id="shape48-29" v:mid="48" v:groupcontext="shape" transform="translate(53.9155,-54.12)">		<title>Rectangle.48</title>		<desc>126</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="81.24" width="36.01" height="18"></v:textrect>		<rect x="0" y="72.24" width="36" height="18" class="st3"></rect>		<text x="10.42" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>126</text>		</g>	<g id="shape49-32" v:mid="49" v:groupcontext="shape" transform="translate(89.9703,-54.12)">		<title>Rectangle.49</title>		<desc>125</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="81.24" width="36.01" height="18"></v:textrect>		<rect x="0" y="72.24" width="36" height="18" class="st3"></rect>		<text x="10.42" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>125</text>		</g>	<g id="shape50-35" v:mid="50" v:groupcontext="shape" transform="translate(125.97,-54.12)">		<title>Rectangle.50</title>		<desc>124</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="81.24" width="36.01" height="18"></v:textrect>		<rect x="0" y="72.24" width="36" height="18" class="st3"></rect>		<text x="10.42" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>124</text>		</g>	<g id="shape51-38" v:mid="51" v:groupcontext="shape" transform="translate(230.727,-54.12)">		<title>Rectangle.51</title>		<desc>7</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="10.3219" cy="81.24" width="20.65" height="18"></v:textrect>		<rect x="0" y="72.24" width="20.6438" height="18" class="st3"></rect>		<text x="7.8" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>7</text>		</g>	<g id="shape52-41" v:mid="52" v:groupcontext="shape" transform="translate(251.37,-54.12)">		<title>Rectangle.52</title>		<desc>6</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="10.3219" cy="81.24" width="20.65" height="18"></v:textrect>		<rect x="0" y="72.24" width="20.6438" height="18" class="st3"></rect>		<text x="7.8" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>6</text>		</g>	<g id="shape53-44" v:mid="53" v:groupcontext="shape" transform="translate(271.62,-54.12)">		<title>Rectangle.53</title>		<desc>5</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="10.3219" cy="81.24" width="20.65" height="18"></v:textrect>		<rect x="0" y="72.24" width="20.6438" height="18" class="st3"></rect>		<text x="7.8" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>5</text>		</g>	<g id="shape54-47" v:mid="54" v:groupcontext="shape" transform="translate(292.264,-54.12)">		<title>Rectangle.54</title>		<desc>4</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="10.3219" cy="81.24" width="20.65" height="18"></v:textrect>		<rect x="0" y="72.24" width="20.6438" height="18" class="st3"></rect>		<text x="7.8" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>4</text>		</g>	<g id="shape55-50" v:mid="55" v:groupcontext="shape" transform="translate(312.87,-54.12)">		<title>Rectangle.55</title>		<desc>3</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="10.3219" cy="81.24" width="20.65" height="18"></v:textrect>		<rect x="0" y="72.24" width="20.6438" height="18" class="st3"></rect>		<text x="7.8" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>3</text>		</g>	<g id="shape56-53" v:mid="56" v:groupcontext="shape" transform="translate(333.514,-54.12)">		<title>Rectangle.56</title>		<desc>2</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="10.3219" cy="81.24" width="20.65" height="18"></v:textrect>		<rect x="0" y="72.24" width="20.6438" height="18" class="st3"></rect>		<text x="7.8" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>2</text>		</g>	<g id="shape57-56" v:mid="57" v:groupcontext="shape" transform="translate(354.083,-54.12)">		<title>Rectangle.57</title>		<desc>1</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="10.3219" cy="81.24" width="20.65" height="18"></v:textrect>		<rect x="0" y="72.24" width="20.6438" height="18" class="st3"></rect>		<text x="7.8" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1</text>		</g>	<g id="shape58-59" v:mid="58" v:groupcontext="shape" transform="translate(374.727,-54.12)">		<title>Rectangle.58</title>		<desc>0</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="10.3219" cy="81.24" width="20.65" height="18"></v:textrect>		<rect x="0" y="72.24" width="20.6438" height="18" class="st3"></rect>		<text x="7.8" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>0</text>		</g>	<g id="shape65-62" v:mid="65" v:groupcontext="shape" transform="translate(230.727,-36.12)">		<title>Rectangle.65</title>		<desc>3</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="20.4469" cy="81.24" width="40.9" height="18"></v:textrect>		<rect x="0" y="72.24" width="40.8937" height="18" class="st3"></rect>		<text x="17.92" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>3</text>		</g>	<g id="shape91-65" v:mid="91" v:groupcontext="shape" transform="translate(271.62,-36.12)">		<title>Rectangle.91</title>		<desc>2</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="20.6437" cy="81.24" width="41.29" height="18"></v:textrect>		<rect x="0" y="72.24" width="41.2875" height="18" class="st3"></rect>		<text x="18.12" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>2</text>		</g>	<g id="shape92-68" v:mid="92" v:groupcontext="shape" transform="translate(312.852,-36.12)">		<title>Rectangle.92</title>		<desc>1</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="20.6437" cy="81.24" width="41.29" height="18"></v:textrect>		<rect x="0" y="72.24" width="41.2875" height="18" class="st3"></rect>		<text x="18.12" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1</text>		</g>	<g id="shape93-71" v:mid="93" v:groupcontext="shape" transform="translate(354.083,-36.12)">		<title>Rectangle.93</title>		<desc>0</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="20.6437" cy="81.24" width="41.29" height="18"></v:textrect>		<rect x="0" y="72.24" width="41.2875" height="18" class="st3"></rect>		<text x="18.12" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>0</text>		</g>	<g id="shape94-74" v:mid="94" v:groupcontext="shape" transform="translate(230.727,-18.12)">		<title>Rectangle.94</title>		<desc>1</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="41.0625" cy="81.24" width="82.13" height="18"></v:textrect>		<rect x="0" y="72.24" width="82.125" height="18" class="st3"></rect>		<text x="38.54" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>1</text>		</g>	<g id="shape95-77" v:mid="95" v:groupcontext="shape" transform="translate(312.852,-18.12)">		<title>Rectangle.95</title>		<desc>0</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="41.2594" cy="81.24" width="82.52" height="18"></v:textrect>		<rect x="0" y="72.24" width="82.5187" height="18" class="st3"></rect>		<text x="38.73" y="83.94" class="st4" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>0</text>		</g></g>
</svg>

**1024-bit SIMD register**

### Vector compute instructions

Vector instructions process vector register data in SIMD fashion. The
operation is performed on each vector lane in parallel. For example,
the following instruction performs a signed ADD operation over each
halfword:

V2.h = VADD(V3.h,V4.h)
    Copy to clipboard

In this instruction, the halfwords in V3 are summed with the
corresponding halfwords in V4, and the results stored in V2.

When vectors are specified in instructions, the element type is also
usually specified:

- .b for signed byte
- .ub for unsigned byte
- .h for signed halfword
- .uh for unsigned halfword
- .w for signed word
- .uw for unsigned word
- .qf16 for 16-bit HVX floating point
- .qf32 for 32-bit HVX floating point
- .hf for half precision
- .sf for single precision For example:

v0.b = vadd(v1.b,v2.b)           // Add vectors of bytes
    v1:0.b = vadd(v3:2.b, v5:4.b)    // Add vector pairs of bytes
    v1:0.h = vadd(v3:2.h, v5:4.h)    // Add vector pairs of halfwords
    v5:4.w = vmpy(v0.h,v1.h)         // Widening vector 16 x 16 to 32
                                     // multiplies: halfword inputs,
                                     // word outputs
    Copy to clipboard

For operations with mixed element sizes, each operand with the
smaller element size uses a single vector register and each operand
with the larger element size (double the smaller) uses a vector
register pair. One vector in a pair contains even elements and the
other odd elements.

Last Published: Jan 16, 2025

[Next Topic
HVX Revision history](https://docs.qualcomm.com/bundle/publicresource/80-N2040-61/topics/hvx-revision.md)