ia32-64/x86/haddps.html

400 lines
56 KiB
HTML
Raw Permalink Normal View History

2025-07-08 02:23:29 -03:00
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:x86="http://www.felixcloutier.com/x86"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="style.css"></link><title>HADDPS
— Packed Single Precision Floating-Point Horizontal Add</title></head><body><header><nav><ul><li><a href='index.html'>Index</a></li><li>December 2023</li></ul></nav></header><h1>HADDPS
— Packed Single Precision Floating-Point Horizontal Add</h1>
<table>
<tr>
<th>Opcode/Instruction</th>
<th>Op/En</th>
<th>64/32-bit Mode</th>
<th>CPUID Feature Flag</th>
<th>Description</th></tr>
<tr>
<td>F2 0F 7C /r HADDPS xmm1, xmm2/m128</td>
<td>RM</td>
<td>V/V</td>
<td>SSE3</td>
<td>Horizontal add packed single precision floating-point values from xmm2/m128 to xmm1.</td></tr>
<tr>
<td>VEX.128.F2.0F.WIG 7C /r VHADDPS xmm1, xmm2, xmm3/m128</td>
<td>RVM</td>
<td>V/V</td>
<td>AVX</td>
<td>Horizontal add packed single precision floating-point values from xmm2 and xmm3/mem.</td></tr>
<tr>
<td>VEX.256.F2.0F.WIG 7C /r VHADDPS ymm1, ymm2, ymm3/m256</td>
<td>RVM</td>
<td>V/V</td>
<td>AVX</td>
<td>Horizontal add packed single precision floating-point values from ymm2 and ymm3/mem.</td></tr></table>
<h2 id="instruction-operand-encoding">Instruction Operand Encoding<a class="anchor" href="#instruction-operand-encoding">
</a></h2>
<table>
<tr>
<th>Op/En</th>
<th>Operand 1</th>
<th>Operand 2</th>
<th>Operand 3</th>
<th>Operand 4</th></tr>
<tr>
<td>RM</td>
<td>ModRM:reg (r, w)</td>
<td>ModRM:r/m (r)</td>
<td>N/A</td>
<td>N/A</td></tr>
<tr>
<td>RVM</td>
<td>ModRM:reg (w)</td>
<td>VEX.vvvv (r)</td>
<td>ModRM:r/m (r)</td>
<td>N/A</td></tr></table>
<h2 id="description">Description<a class="anchor" href="#description">
</a></h2>
<p>Adds the single precision floating-point values in the first and second dwords of the destination operand and stores the result in the first dword of the destination operand.</p>
<p>Adds single precision floating-point values in the third and fourth dword of the destination operand and stores the result in the second dword of the destination operand.</p>
<p>Adds single precision floating-point values in the first and second dword of the source operand and stores the result in the third dword of the destination operand.</p>
<p>Adds single precision floating-point values in the third and fourth dword of the source operand and stores the result in the fourth dword of the destination operand.</p>
<p>In 64-bit mode, use of the REX.R prefix permits this instruction to access additional registers (XMM8-XMM15).</p>
<p>See <a href='haddps.html#fig-3-19'>Figure 3-19</a> for HADDPS; see <a href='haddps.html#fig-3-20'>Figure 3-20</a> for VHADDPS.</p>
<figure id="fig-3-19">
<svg style="width: 433.368pt; height: 259.2108pt" viewBox="116.486 0.0 366.14 221.00900000000001">
<g xmlns="http://www.w3.org/2000/svg" style="stroke: none; fill: none">
<rect height="216.00900000000001" style="stroke: rgb(0%, 0%, 0%)" width="361.14" x="118.986" y="0.0"></rect>
<rect height="47.152" style="fill: rgb(0%, 0%, 0%)" width="67.503" x="358.621" y="144.769"></rect>
<rect height="47.152" style="stroke: rgb(0%, 0%, 0%)" width="67.503" x="358.621" y="144.769"></rect>
<rect height="27.001" style="fill: rgb(0%, 0%, 0%)" width="67.503" x="358.621" y="27.00100000000009"></rect>
<rect height="27.001" style="stroke: rgb(0%, 0%, 0%)" width="67.503" x="358.621" y="27.000999999999976"></rect>
<rect height="47.152" style="fill: rgb(0%, 0%, 0%)" width="67.503" x="291.118" y="144.769"></rect>
<rect height="47.152" style="stroke: rgb(0%, 0%, 0%)" width="67.503" x="291.118" y="144.769"></rect>
<rect height="27.001" style="fill: rgb(0%, 0%, 0%)" width="67.503" x="291.118" y="27.00100000000009"></rect>
<rect height="27.001" style="stroke: rgb(0%, 0%, 0%)" width="67.503" x="291.118" y="27.000999999999976"></rect>
<rect height="27.001" style="fill: rgb(0%, 0%, 0%)" width="67.503" x="358.621" y="86.39800000000002"></rect>
<rect height="27.001" style="stroke: rgb(0%, 0%, 0%)" width="67.503" x="358.621" y="86.39800000000002"></rect>
<rect height="27.001" style="fill: rgb(0%, 0%, 0%)" width="67.503" x="291.118" y="86.39800000000002"></rect>
<rect height="27.001" style="stroke: rgb(0%, 0%, 0%)" width="67.503" x="291.118" y="86.39800000000002"></rect>
<rect height="47.152" style="fill: rgb(0%, 0%, 0%)" width="67.503" x="223.616" y="144.769"></rect>
<rect height="47.152" style="stroke: rgb(0%, 0%, 0%)" width="67.503" x="223.616" y="144.769"></rect>
<rect height="27.001" style="fill: rgb(0%, 0%, 0%)" width="67.503" x="223.616" y="27.00100000000009"></rect>
<rect height="27.001" style="stroke: rgb(0%, 0%, 0%)" width="67.503" x="223.616" y="27.000999999999976"></rect>
<rect height="47.152" style="fill: rgb(0%, 0%, 0%)" width="68.628" x="154.988" y="144.769"></rect>
<rect height="47.152" style="stroke: rgb(0%, 0%, 0%)" width="68.628" x="154.988" y="144.769"></rect>
<rect height="27.001" style="fill: rgb(0%, 0%, 0%)" width="68.628" x="154.988" y="27.00100000000009"></rect>
<rect height="27.001" style="stroke: rgb(0%, 0%, 0%)" width="68.628" x="154.988" y="27.000999999999976"></rect>
<rect height="27.001" style="fill: rgb(0%, 0%, 0%)" width="67.503" x="223.616" y="86.39800000000002"></rect>
<rect height="27.001" style="stroke: rgb(0%, 0%, 0%)" width="67.503" x="223.616" y="86.39800000000002"></rect>
<rect height="27.001" style="fill: rgb(0%, 0%, 0%)" width="68.628" x="154.988" y="86.39800000000002"></rect>
<rect height="27.001" style="stroke: rgb(0%, 0%, 0%)" width="68.628" x="154.988" y="86.39800000000002"></rect>
<path d="M 324.87 113.399 L 324.87 121.50900000000001 L 392.373 121.50900000000001 L 392.373 140.69000000000005" style="fill-rule: nonzero; stroke: rgb(0%, 0%, 0%)"></path>
<path d="M 394.413 140.69000000000005 L 392.373 144.7700000000001 L 390.333 140.69000000000005 L 394.413 140.69000000000005" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 392.373 123.62400000000002 L 392.373 113.404" style="fill-rule: nonzero; stroke: rgb(0%, 0%, 0%)"></path>
<path d="M 189.86499999999998 113.399 L 189.86499999999998 126.00999999999999 L 324.87 126.00999999999999 L 324.87 140.69000000000005" style="fill-rule: nonzero; stroke: rgb(0%, 0%, 0%)"></path>
<path d="M 326.91 140.69000000000005 L 324.87 144.7700000000001 L 322.83000000000004 140.69000000000005 L 326.91 140.69000000000005" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 257.367 126.005 L 257.367 113.39499999999998" style="fill-rule: nonzero; stroke: rgb(0%, 0%, 0%)"></path>
<path d="M 257.367 54.00199999999995 L 257.367 74.25299999999993 L 147.863 74.25299999999993 C 147.863 72.596 146.519 71.25299999999993 144.86200000000002 71.25299999999993C 143.205 71.25299999999993 141.86200000000002 72.596 141.86200000000002 74.25299999999993L 133.61200000000002 74.25299999999993 L 133.61200000000002 135.005 L 189.86400000000003 135.005 L 189.86400000000003 140.82499999999993" style="fill-rule: nonzero; stroke: rgb(0%, 0%, 0%)"></path>
<path d="M 191.904 140.82600000000002 L 189.864 144.90600000000006 L 187.82399999999998 140.82600000000002 L 191.904 140.82600000000002" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 324.87 54.002000000000066 L 324.87 65.25200000000007" style="fill-rule: nonzero; stroke: rgb(0%, 0%, 0%)"></path>
<path d="M 392.373 54.002000000000066 L 392.373 65.25200000000007 L 260.368 65.25200000000007 C 260.368 63.59500000000003 259.025 62.252000000000066 257.36699999999996 62.252000000000066C 255.70999999999998 62.252000000000066 254.367 63.59500000000003 254.367 65.25200000000007L 192.86499999999998 65.25200000000007 C 192.86499999999998 63.59500000000003 191.522 62.252000000000066 189.86499999999998 62.252000000000066C 188.208 62.252000000000066 186.86499999999998 63.59500000000003 186.86499999999998 65.25200000000007L 144.86299999999997 65.25200000000007 L 144.86299999999997 130.5050000000001 L 257.36699999999996 130.5050000000001 L 257.36699999999996 140.82500000000005" style="fill-rule: nonzero; stroke: rgb(0%, 0%, 0%)"></path>
<path d="M 259.407 140.82600000000002 L 257.36699999999996 144.90600000000006 L 255.32699999999997 140.82600000000002 L 259.407 140.82600000000002" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 189.864 54.002000000000066 L 189.864 74.25300000000004" style="fill-rule: nonzero; stroke: rgb(0%, 0%, 0%)"></path>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="105.79596720000018" x="229.221" y="19.268063000000097">HADDPS xmm1, xmm2/m128</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="24.00090000000006" x="432.59982642000006" y="39.78163223000013">xmm2/</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="28.913084200000014" x="174.8588" y="44.58206300000006">[127:96]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="24.46491740000002" x="245.13660000000002" y="44.58206300000006">[95:64]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="24.464917400000047" x="312.6394" y="44.58206300000006">[63:32]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="20.016750600000023" x="382.36220000000003" y="44.58206300000006">[31:0]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="20.008750300000088" x="432.59982642000006" y="49.38199223000015">m128</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="21.776816600000075" x="432.59909832000005" y="103.9778902600001">xmm1</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="28.913084200000014" x="174.8588" y="103.97836300000006">[127:96]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="24.46491740000002" x="245.13660000000002" y="103.97836300000006">[95:64]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="24.464917400000047" x="312.6394" y="103.97836300000006">[63:32]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="20.016750600000023" x="382.36220000000003" y="103.97836300000006">[31:0]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.063515733038685pt; fill: #000" textLength="40.20614563452435" x="169.92860000000002" y="162.7515772180758">xmm2/m128</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.063515733038685pt; fill: #000" textLength="40.20614563452432" x="238.0063" y="162.7515772180758">xmm2/m128</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="32.30521139999996" x="432.59982642000006" y="167.58722476000014">RESULT:</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.063515733038685pt; fill: #000" textLength="48.51457826360098" x="301.4889" y="167.5518772180758">xmm1[95:64] +</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.063515733038685pt; fill: #000" textLength="44.470790263600975" x="370.9518" y="167.5518772180758">xmm1[31:0] +</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.063515733038685pt; fill: #000" textLength="52.44974031726224" x="163.94801210000003" y="172.35193721807582">[95:64] + xmm2/</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.063515733038685pt; fill: #000" textLength="48.40595231726209" x="233.9865129" y="172.35193721807582">[31:0] + xmm2/</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277799999951pt; fill: #000" textLength="21.776816600000075" x="432.59982642000006" y="177.18758476000016">xmm1</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.063515733038685pt; fill: #000" textLength="46.18041431726209" x="302.5689405" y="177.1522372180758">xmm1[127:96]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.063515733038685pt; fill: #000" textLength="42.136626317262085" x="372.0216583" y="177.1522372180758">xmm1[63:32]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.063515733038685pt; fill: #000" textLength="44.57308131726222" x="167.75833680000002" y="181.95229721807584">m128[127:96]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.063515733038685pt; fill: #000" textLength="40.52929331726216" x="237.7968376" y="181.95229721807584">m128[63:32]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277800000008pt; fill: #000" textLength="28.913084200000014" x="175.41402082" y="206.63853989000006">[127:96]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277800000008pt; fill: #000" textLength="24.464917400000047" x="245.14703571" y="206.63853989000006">[95:64]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277800000008pt; fill: #000" textLength="24.464917400000047" x="308.14883161" y="206.63853989000006">[63:32]</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 7.408277800000008pt; fill: #000" textLength="20.016750600000023" x="386.8717836100001" y="206.63853989000006">[31:0]</text></g></svg>
<figcaption><a href='haddps.html#fig-3-19'>Figure 3-19</a>. HADDPS—Packed Single Precision Floating-Point Horizontal Add</figcaption></figure>
<figure id="fig-3-20">
<svg style="width: 381.02399999999994pt; height: 97.776012pt" viewBox="148.58 0.0 322.52 86.48001">
<g xmlns="http://www.w3.org/2000/svg" style="stroke: none; fill: none">
<path d="M 256.02 53.460009999999954 L 259.56 51.000009999999975 L 260.15999999999997 50.64000999999996 L 260.34 51.30000999999993 L 265.32 66.12000999999998 L 265.91999999999996 67.80000999999993 L 264.53999999999996 66.66000999999994 L 252.48 56.760009999999966 L 251.93999999999997 56.34000999999995 L 252.48 55.920009999999934 L 253.07999999999998 55.980009999999936 L 265.14 65.88000999999997 L 264.53999999999996 66.66000999999994 L 264.35999999999996 66.42000999999993 L 259.38 51.60000999999994 L 260.34 51.30000999999993 L 260.15999999999997 51.84000999999995 L 256.62 54.30000999999993" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 252.48000000000002 55.92000999999999 L 256.02000000000004 53.46001000000001 L 256.62 54.300009999999986 L 253.08 56.760009999999966" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 256.32 53.88000999999997 L 259.86 51.42000999999999 L 264.84 66.24000999999998 L 252.78 56.34000999999995" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 229.56 13.20001000000002 L 227.94 14.340010000000007 L 255.3 54.060010000000034 L 256.92 52.92000999999999" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 252.66 58.14001000000002 L 252.78 57.96001000000001 L 252.84 57.780010000000004 C 253.002 56.75301000000002 251.927 56.15401000000003 251.16 56.820010000000025L 251.04 56.94001000000003 L 250.98 57.120010000000036 C 250.415 57.95801 251.651 58.969010000000026 252.35999999999999 58.38001000000003L 252.54 58.26001000000002 L 252.66 58.14001000000002" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 251.88 57.540009999999995 L 254.46 54.06000999999998 L 254.88 53.580010000000016 L 255.24 54.06000999999998 L 264.78 66.36000999999999 L 265.86 67.74000999999998 L 264.24 67.14001000000002 L 249.6 61.800009999999986 L 248.94 61.56000999999998 L 249.35999999999999 61.02001000000001 L 249.9 60.84001000000001 L 264.54 66.18000999999998 L 264.24 67.14001000000002 L 264.0 66.96001000000001 L 254.46 54.66001 L 255.24 54.06000999999998 L 255.24 54.66001 L 252.66 58.14001000000002" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 249.36 61.02001000000001 L 251.88000000000002 57.540009999999995 L 252.66000000000003 58.14001000000002 L 250.14000000000001 61.620010000000036" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 252.24 57.84001000000001 L 254.82000000000002 54.36000999999999 L 264.36 66.66001 L 249.72 61.320010000000025" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 192.18 12.960009999999954 L 191.04000000000002 14.580009999999959 L 251.34 58.38000999999997 L 252.48000000000002 56.760009999999966" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 398.04 57.84001000000001 L 398.1 57.66001 L 398.22 57.48000999999999 C 398.351 56.502009999999984 397.344 55.84501 396.54 56.46001000000001L 396.3 56.820010000000025 C 395.98 57.72601000000003 396.875 58.62401 397.74 58.080010000000016L 397.86 57.96001000000001 L 398.04 57.84001000000001" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 397.26 57.240009999999984 L 399.84 53.82000999999997 L 400.2 53.280010000000004 L 400.62 53.82000999999997 L 411.06 67.74000999999998 L 409.38 67.08000999999996 L 394.92 61.44000999999997 L 394.26 61.20000999999996 L 394.68 60.66001 L 395.21999999999997 60.48000999999999 L 409.74 66.12000999999998 L 409.38 67.08000999999996 L 409.14 66.90001000000001 L 399.84 54.42000999999999 L 400.62 53.82000999999997 L 400.62 54.42000999999999 L 398.03999999999996 57.84001000000001" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 394.68 60.66001 L 397.26 57.240009999999984 L 398.04 57.84001000000001 L 395.46 61.26001000000002" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 397.62 57.540009999999995 L 400.2 54.12000999999998 L 409.56 66.60001 L 395.04 60.96001000000001" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 340.68 12.960009999999954 L 339.48 14.520009999999957 L 396.6 58.02000999999996 L 397.8 56.460009999999954" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 401.76 54.300009999999986 L 401.88 54.18000999999998 L 402.0 54.000009999999975 C 402.625 53.24601000000001 401.627 52.12800999999996 400.8 52.56000999999998L 400.62 52.62000999999998 L 400.44 52.800009999999986 C 399.793 53.47501 400.491 54.71501000000001 401.4 54.42000999999999L 401.76 54.300009999999986" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 401.16 53.460009999999954 L 404.70000000000005 51.000009999999975 L 405.3 50.64000999999996 L 405.48 51.30000999999993 L 410.46000000000004 66.12000999999998 L 411.06 67.74000999999993 L 409.68 66.66000999999994 L 397.62 56.760009999999966 L 397.08000000000004 56.34000999999995 L 397.62 55.920009999999934 L 398.22 55.980009999999936 L 410.28000000000003 65.88000999999997 L 409.68 66.66000999999994 L 409.5 66.42000999999993 L 404.52000000000004 51.60000999999994 L 405.48 51.30000999999993 L 405.3 51.84000999999995 L 401.76000000000005 54.30000999999993" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 397.62 55.92000999999999 L 401.16 53.46001000000001 L 401.76 54.300009999999986 L 398.22 56.760009999999966" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 401.46000000000004 53.88000999999997 L 405.00000000000006 51.42000999999999 L 409.98 66.24000999999998 L 397.92 56.34000999999995" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 374.70000000000005 13.20001000000002 L 373.08000000000004 14.340010000000007 L 400.38000000000005 54.060010000000034 L 402.00000000000006 52.92000999999999" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 303.0 51.42000999999999 L 303.18 51.42000999999999 L 303.36 51.36000999999999 L 303.72 51.12000999999998 L 303.84 51.000009999999975 L 303.96 50.64001000000002 L 303.96 50.22001 C 303.894 49.91001 303.697 49.56700999999998 303.36 49.500009999999975L 303.18 49.44000999999997 L 302.76 49.44000999999997 C 301.821 49.667010000000005 301.676 50.92401000000001 302.58 51.36000999999999L 302.76 51.42000999999999 L 303.0 51.42000999999999" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 303.0 50.460009999999954 L 307.92 50.460009999999954 L 307.74 51.12000999999998 L 303.48 66.06000999999998 L 303.0 67.74000999999993 L 302.52 66.06000999999998 L 298.2 51.12000999999998 L 298.02 50.460009999999954 L 298.68 50.460009999999954 L 299.16 50.82000999999997 L 303.48 65.76000999999997 L 302.52 66.06000999999998 L 302.52 65.76000999999997 L 306.78 50.82000999999997 L 307.74 51.12000999999998 L 307.26 51.480009999999936 L 303.0 51.480009999999936" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="4.32" x="298.68" y="50.46001000000001"></rect>
<path d="M 303.0 50.94000999999997 L 307.26 50.94000999999997 L 303.0 65.88000999999997 L 298.68 50.94000999999997" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<rect height="36.660000000000004" style="fill: rgb(0%, 0%, 0%)" width="1.98" x="302.04" y="13.740009999999984"></rect>
<path d="M 293.22 54.66001 L 293.34000000000003 54.540009999999995 L 293.46000000000004 54.36000999999999 L 293.52000000000004 54.18000999999998 L 293.58000000000004 54.000009999999975 L 293.58000000000004 53.64001000000002 L 293.52000000000004 53.46001000000001 L 293.40000000000003 53.280010000000004 L 293.28000000000003 53.16001 C 292.963 52.96201000000002 292.793 52.73500999999999 292.38000000000005 52.92000999999999L 292.20000000000005 52.98000999999999 L 291.84000000000003 53.22001 C 291.211 53.97901000000002 291.95500000000004 55.10401000000002 292.86 54.84001000000001L 293.04 54.780010000000004 L 293.22 54.66001" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 292.62 53.94000999999997 L 296.04 51.36000999999999 L 296.58 50.94000999999997 L 296.82 51.60001 L 302.4 66.18000999999998 L 303.06 67.80000999999999 L 301.62 66.72000999999995 L 289.14 57.300009999999986 L 288.6 56.88000999999997 L 289.14 56.52000999999996 L 289.74 56.52000999999996 L 302.22 65.94000999999997 L 301.62 66.72000999999995 L 301.44 66.48001 L 295.86 51.90000999999995 L 296.82 51.60001 L 296.64 52.14000999999996 L 293.22 54.720009999999945" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 289.14 56.52001000000001 L 292.62 53.94001000000003 L 293.21999999999997 54.72001 L 289.74 57.300009999999986" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 292.92 54.300009999999986 L 296.34000000000003 51.72001 L 301.92 66.30000999999999 L 289.44 56.88000999999997" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 263.28000000000003 13.140010000000018 L 261.72 14.340010000000007 L 291.84000000000003 54.48001000000005 L 293.40000000000003 53.280010000000004" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="171.36" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="171.36" y="67.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="208.26" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="171.12" y="81.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="171.12" y="67.50000999999997"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="245.58" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="245.58" y="67.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="282.48" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="245.34" y="81.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="245.34" y="67.50000999999997"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="319.86" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="319.86" y="67.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="356.76" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="319.62" y="81.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="319.62" y="67.50000999999997"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.08" x="394.14" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="394.14" y="67.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="430.98" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="393.90000000000003" y="81.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="393.90000000000003" y="67.50000999999997"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="431.22" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="431.22" y="0.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="468.12" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="430.98" y="13.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="430.98" y="9.999999974752427e-06"></rect>
<path d="M 448.14 51.42000999999999 L 448.32 51.42000999999999 L 448.5 51.36000999999999 C 449.404 50.92401000000001 449.259 49.667010000000005 448.32 49.44000999999997L 447.9 49.44000999999997 C 446.961 49.667010000000005 446.816 50.92401000000001 447.71999999999997 51.36000999999999L 447.9 51.42000999999999 L 448.14 51.42000999999999" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 448.14 50.460009999999954 L 453.06 50.460009999999954 L 452.88 51.12000999999998 L 448.62 66.06000999999998 L 448.14 67.74000999999993 L 447.65999999999997 66.06000999999998 L 443.34 51.12000999999998 L 443.15999999999997 50.460009999999954 L 443.82 50.460009999999954 L 444.3 50.82000999999997 L 448.62 65.76000999999997 L 447.65999999999997 66.06000999999998 L 447.65999999999997 65.76000999999997 L 451.91999999999996 50.82000999999997 L 452.88 51.12000999999998 L 452.4 51.480009999999936 L 448.14 51.480009999999936" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="4.32" x="443.82" y="50.46001000000001"></rect>
<path d="M 448.14 50.94000999999997 L 452.4 50.94000999999997 L 448.14 65.88000999999997 L 443.82 50.94000999999997" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<rect height="36.660000000000004" style="fill: rgb(0%, 0%, 0%)" width="1.98" x="447.18" y="13.740009999999984"></rect>
<path d="M 438.90000000000003 54.300009999999986 L 439.02000000000004 54.18000999999998 L 439.14000000000004 54.000009999999975 C 439.77500000000003 53.248009999999965 438.752 52.137009999999975 437.94000000000005 52.56000999999998L 437.76000000000005 52.62000999999998 L 437.58000000000004 52.800009999999986 C 436.94300000000004 53.50900999999999 437.583 54.691010000000006 438.54 54.42000999999999L 438.90000000000003 54.300009999999986" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 438.3 53.460009999999954 L 441.84000000000003 51.000009999999975 L 442.44 50.70000999999996 L 442.62 51.30000999999993 L 447.54 66.12000999999998 L 448.14 67.80000999999993 L 446.76 66.66000999999994 L 434.76 56.760009999999966 L 434.22 56.34000999999995 L 434.76 55.920009999999934 L 435.36 55.980009999999936 L 447.36 65.88000999999997 L 446.76 66.66000999999994 L 446.58 66.42000999999993 L 441.66 51.60000999999994 L 442.62 51.30000999999993 L 442.44 51.84000999999995 L 438.90000000000003 54.30000999999993" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 434.76 55.92000999999999 L 438.3 53.46001000000001 L 438.9 54.300009999999986 L 435.36 56.760009999999966" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 438.6 53.88000999999997 L 442.14000000000004 51.42000999999999 L 447.06 66.24000999999998 L 435.06 56.34000999999995" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 411.84000000000003 13.20001000000002 L 410.22 14.340010000000007 L 437.52000000000004 54.060010000000034 L 439.14000000000004 52.92000999999999" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.08" x="394.14" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="394.14" y="0.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="430.98" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="393.90000000000003" y="13.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="393.90000000000003" y="9.999999974752427e-06"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="357.0" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="357.0" y="0.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="393.90000000000003" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="356.76" y="13.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="356.76" y="9.999999974752427e-06"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="319.86" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="319.86" y="0.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="356.76" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="319.62" y="13.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="319.62" y="9.999999974752427e-06"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="282.72" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="282.72" y="0.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="319.62" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="282.48" y="13.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="282.48" y="9.999999974752427e-06"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="245.58" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="245.58" y="0.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="282.48" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="245.34" y="13.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="245.34" y="9.999999974752427e-06"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.08" x="208.5" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="208.5" y="0.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="245.34" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="208.26" y="13.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="208.26" y="9.999999974752427e-06"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="171.36" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="171.36" y="0.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="208.26" y="0.24000999999998385"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="171.12" y="13.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="171.12" y="9.999999974752427e-06"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="431.22" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="431.22" y="30.360029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="468.12" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="430.98" y="43.860029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="430.98" y="30.36000999999999"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.08" x="394.14" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="394.14" y="30.360029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="430.98" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="393.90000000000003" y="43.860029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="393.90000000000003" y="30.36000999999999"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="357.0" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="357.0" y="30.360029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="393.90000000000003" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="356.76" y="43.860029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="356.76" y="30.36000999999999"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="319.86" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="319.86" y="30.360029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="356.76" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="319.62" y="43.860029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="319.62" y="30.36000999999999"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="282.72" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="282.72" y="30.360029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="319.62" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="282.48" y="43.860029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="282.48" y="30.36000999999999"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="245.58" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="245.58" y="30.360029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="282.48" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="245.34" y="43.860029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="245.34" y="30.36000999999999"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.08" x="208.5" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="208.5" y="30.360029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="245.34" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="208.26" y="43.860029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="208.26" y="30.36000999999999"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="171.36" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="171.36" y="30.360029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="208.26" y="30.600009999999997"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="171.12" y="43.860029999999995"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="171.12" y="30.36000999999999"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="431.22" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="431.22" y="67.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="468.12" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="430.98" y="81.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="430.98" y="67.50000999999997"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.08" x="208.5" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="208.5" y="67.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="245.34" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="208.26" y="81.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="208.26" y="67.50000999999997"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="282.72" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="282.72" y="67.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="319.62" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="282.48" y="81.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="282.48" y="67.50000999999997"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="357.0" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="357.0" y="67.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="393.90000000000003" y="67.74000999999998"></rect>
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="356.76" y="81.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="356.76" y="67.50000999999997"></rect>
<path d="M 188.22 51.42000999999999 L 188.46 51.42000999999999 L 188.64 51.36000999999999 L 188.76 51.240009999999984 L 188.94 51.12000999999998 L 189.06 51.000009999999975 L 189.18 50.82000999999997 L 189.18 50.64001000000002 L 189.24 50.40001000000001 L 189.18 50.22001 L 189.18 50.040009999999995 L 189.06 49.86000999999999 L 188.76 49.56000999999998 L 188.64 49.500009999999975 L 188.46 49.44000999999997 L 188.04 49.44000999999997 L 187.68 49.56000999999998 L 187.38 49.86000999999999 L 187.2 50.40001000000001 C 187.324 50.78100999999998 187.276 51.04600999999997 187.68 51.240009999999984L 187.85999999999999 51.36000999999999 L 188.04 51.42000999999999 L 188.22 51.42000999999999" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 188.22 50.460009999999954 L 193.2 50.460009999999954 L 193.02 51.12000999999998 L 188.7 66.06000999999998 L 188.22 67.74000999999993 L 187.74 66.06000999999998 L 183.48 51.12000999999998 L 183.3 50.460009999999954 L 183.96 50.460009999999954 L 184.44 50.82000999999997 L 188.7 65.76000999999997 L 187.74 66.06000999999998 L 187.74 65.76000999999997 L 192.06 50.82000999999997 L 193.02 51.12000999999998 L 192.54 51.480009999999936 L 188.22 51.480009999999936" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="4.26" x="183.96" y="50.46001000000001"></rect>
<path d="M 188.22 50.94000999999997 L 192.54 50.94000999999997 L 188.22 65.88000999999997 L 183.96 50.94000999999997" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<rect height="6.300000000000001" style="fill: rgb(0%, 0%, 0%)" width="1.98" x="187.26" y="44.10001"></rect>
<path d="M 201.96 58.98000999999999 L 202.26000000000002 59.280010000000004 L 202.8 59.46001000000001 L 203.34 59.280010000000004 L 203.52 59.16001 C 203.85 58.71400999999997 203.828 58.85201000000001 203.82000000000002 58.260009999999966L 203.76000000000002 58.080010000000016 L 203.70000000000002 57.90001000000001 L 203.52 57.72001 C 202.798 57.04100999999997 201.68200000000002 57.65900999999997 201.84 58.62000999999998L 201.9 58.800009999999986 L 201.96 58.98000999999999" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 202.8 58.44000999999997 L 205.14000000000001 62.10001 L 205.44 62.70000999999996 L 204.84 62.82000999999997 L 189.9 67.20000999999996 L 188.22 67.74000999999998 L 189.36 66.42000999999999 L 199.68 54.78000999999995 L 200.16000000000003 54.240009999999984 L 200.52 54.84000999999995 L 200.46 55.44000999999997 L 190.14000000000001 67.08000999999996 L 189.36 66.42000999999999 L 189.60000000000002 66.24000999999998 L 204.54000000000002 61.86000999999999 L 204.84 62.82000999999997 L 204.24 62.64000999999996 L 201.9 58.98000999999999" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 200.52 54.84001000000001 L 202.8 58.44001000000003 L 201.9 58.98000999999999 L 199.62 55.38001000000003" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 202.38 58.68000999999998 L 204.72 62.34001000000001 L 189.78 66.72001 L 200.1 55.08000999999996" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 225.9 44.94000999999997 L 224.82 43.260009999999966 L 202.26 57.60001 L 203.34 59.28000999999995" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 244.20000000000002 62.580010000000016 L 244.26000000000002 62.76001000000002 L 244.38000000000002 62.94001000000003 L 244.56000000000003 63.060010000000034 L 244.68 63.120010000000036 L 244.86 63.24001000000004 L 245.28000000000003 63.24001000000004 L 245.64000000000001 63.120010000000036 L 245.82000000000002 63.00001000000003 L 245.94000000000003 62.88001000000003 L 246.06000000000003 62.70001000000002 L 246.12 62.52001000000001 L 246.12 61.92000999999999 L 246.00000000000003 61.74001000000004 C 245.49800000000002 60.92000999999999 244.305 61.17000999999999 244.14000000000001 62.16001L 244.14000000000001 62.34001000000001 L 244.20000000000002 62.580010000000016" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 245.16 62.22001 L 246.54 66.30000999999999 L 246.66 66.96001000000001 L 246.06 67.02001000000001 L 230.46 67.68000999999998 L 228.72 67.74000999999998 L 230.16 66.72001 L 243.0 57.90001000000001 L 243.54 57.540009999999995 L 243.78 58.14001000000002 L 243.54 58.740009999999984 L 230.7 67.56000999999998 L 230.16 66.72001 L 230.4 66.66001 L 246.0 66.00000999999997 L 246.06 67.02001000000001 L 245.52 66.66001 L 244.14 62.580010000000016" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 243.78 58.14001000000002 L 245.16 62.22001 L 244.14000000000001 62.580010000000016 L 242.76 58.50001000000003" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 244.68 62.40001000000001 L 246.06 66.48001 L 230.46 67.14001000000002 L 243.3 58.320010000000025" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 299.88 45.06000999999998 L 299.28 43.20000999999996 L 244.85999999999999 61.32000999999997 L 245.45999999999998 63.18000999999998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 242.46 58.98000999999999 L 242.64000000000001 59.10001 L 242.76000000000002 59.280010000000004 L 243.3 59.46001000000001 L 243.84 59.280010000000004 L 244.02 59.16001 C 244.35 58.71400999999997 244.328 58.85201000000001 244.32000000000002 58.260009999999966L 244.26000000000002 58.080010000000016 L 244.20000000000002 57.90001000000001 L 244.02 57.72001 C 243.299 57.04100999999997 242.18200000000002 57.65900999999997 242.34 58.62000999999998L 242.4 58.800009999999986 L 242.46 58.98000999999999" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 243.3 58.44000999999997 L 245.64000000000001 62.10001 L 245.94 62.70000999999996 L 245.34 62.82000999999997 L 230.4 67.20000999999996 L 228.72 67.74000999999998 L 229.86 66.42000999999999 L 240.18 54.78000999999995 L 240.66000000000003 54.240009999999984 L 241.02 54.84000999999995 L 240.96 55.44000999999997 L 230.64000000000001 67.08000999999996 L 229.86 66.42000999999999 L 230.10000000000002 66.24000999999998 L 245.04000000000002 61.86000999999999 L 245.34 62.82000999999997 L 244.74 62.64000999999996 L 242.4 58.98000999999999" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 241.02 54.84001000000001 L 243.3 58.44001000000003 L 242.4 58.98000999999999 L 240.12 55.38001000000003" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 242.88 58.68000999999998 L 245.22 62.34001000000001 L 230.28 66.72001 L 240.6 55.08000999999996" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 266.40000000000003 44.94000999999997 L 265.32000000000005 43.260009999999966 L 242.76000000000005 57.60001 L 243.84000000000003 59.28000999999995" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 334.44 51.60001 L 334.62 51.540009999999995 L 334.8 51.42000999999999 L 334.98 51.36000999999999 L 335.1 51.18000999999998 L 335.16 51.000009999999975 L 335.28 50.820010000000025 L 335.28 50.46001000000001 L 335.16 50.10001 L 335.04 49.92000999999999 L 334.86 49.800009999999986 L 334.74 49.68000999999998 L 334.56 49.62000999999998 L 334.14 49.62000999999998 L 333.78 49.740009999999984 L 333.6 49.86000999999999 L 333.48 49.98000999999999 L 333.36 50.16001 L 333.3 50.34001000000001 L 333.3 50.76001000000002 L 333.36 50.94000999999997 L 333.42 51.12000999999998 L 333.54 51.240009999999984 L 333.66 51.42000999999999 L 334.2 51.60001 L 334.44 51.60001" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 334.32 50.580010000000016 L 338.58 49.98000999999999 L 339.24 49.98000999999999 L 339.12 50.580010000000016 L 336.96 66.06001000000003 L 336.71999999999997 67.80000999999999 L 336.06 66.18001000000004 L 329.7 51.96001000000001 L 329.4 51.36000999999999 L 330.06 51.24001000000004 L 330.59999999999997 51.540009999999995 L 336.96 65.76001000000002 L 336.06 66.18001000000004 L 336.0 65.88001000000003 L 338.15999999999997 50.40001000000001 L 339.12 50.580010000000016 L 338.7 51.00001000000003 L 334.44 51.60001" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 330.06 51.240009999999984 L 334.32 50.58000999999996 L 334.44 51.60001 L 330.18 52.260009999999966" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 334.38 51.06000999999998 L 338.64 50.460009999999954 L 336.48 65.94000999999997 L 330.12 51.72001" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 334.38 43.98000999999999 L 332.4 44.280010000000004 L 333.3 50.760009999999966 L 335.28 50.46001000000001" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 350.1 58.38000999999997 L 350.22 58.500009999999975 L 350.40000000000003 58.62000999999998 C 351.165 59.20300999999995 352.189 58.36600999999996 351.84000000000003 57.42000999999999L 351.6 57.06000999999998 C 350.821 56.47300999999999 349.75 56.994009999999946 349.92 58.02000999999996L 349.98 58.20000999999996 L 350.1 58.38000999999997" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 350.94 57.780010000000004 L 353.4 61.320010000000025 L 353.7 61.92000999999999 L 353.1 62.10001 L 338.34 67.14001000000002 L 336.71999999999997 67.74000999999998 L 337.8 66.36000999999999 L 347.64 54.240009999999984 L 348.06 53.70001000000002 L 348.48 54.240009999999984 L 348.42 54.84001000000001 L 338.58 66.96001000000001 L 337.8 66.36000999999999 L 338.04 66.18000999999998 L 352.8 61.14001000000002 L 353.1 62.10001 L 352.56 61.92000999999999 L 350.1 58.38001000000003" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 348.48 54.240009999999984 L 350.94 57.780010000000004 L 350.1 58.38000999999997 L 347.64000000000004 54.84001000000001" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 350.52 58.080010000000016 L 352.97999999999996 61.620010000000036 L 338.21999999999997 66.66001 L 348.06 54.540009999999995" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 371.1 44.94000999999997 L 369.96000000000004 43.32000999999997 L 350.40000000000003 57.000009999999975 L 351.54 58.62000999999998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 389.34000000000003 62.580010000000016 L 389.40000000000003 62.76001000000002 L 389.52000000000004 62.94001000000003 C 390.144 63.59001000000001 391.42600000000004 63.14401000000004 391.26000000000005 62.16001L 391.20000000000005 61.92000999999999 L 391.14000000000004 61.74001000000004 L 391.02000000000004 61.560010000000034 L 390.90000000000003 61.44001000000003 L 390.72 61.38001000000003 L 390.54 61.26001000000002 L 390.18 61.26001000000002 L 389.94000000000005 61.320010000000025 L 389.76000000000005 61.38001000000003 L 389.64000000000004 61.50001000000003 L 389.46000000000004 61.620010000000036 L 389.28000000000003 62.16001 L 389.28000000000003 62.34001000000001 L 389.34000000000003 62.580010000000016" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 390.3 62.22001 L 391.62 66.30000999999999 L 391.74 66.96001000000001 L 391.14 67.02001000000001 L 375.6 67.68000999999998 L 373.86 67.74000999999998 L 375.3 66.72001 L 388.14 57.90001000000001 L 388.68 57.540009999999995 L 388.92 58.14001000000002 L 388.68 58.740009999999984 L 375.84000000000003 67.56000999999998 L 375.3 66.72001 L 375.54 66.66001 L 391.08 66.00000999999997 L 391.14 67.02001000000001 L 390.6 66.66001 L 389.28000000000003 62.580010000000016" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 388.92 58.14001000000002 L 390.3 62.22001 L 389.28000000000003 62.580010000000016 L 387.90000000000003 58.50001000000003" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 389.82 62.40001000000001 L 391.14 66.48001 L 375.59999999999997 67.14001000000002 L 388.44 58.320010000000025" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 445.02 45.06000999999998 L 444.41999999999996 43.20000999999996 L 390.0 61.32000999999997 L 390.59999999999997 63.18000999999998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 387.24 58.38000999999997 L 387.48 58.62000999999998 C 388.23900000000003 59.26500999999996 389.35 58.26100999999994 388.98 57.42000999999999L 388.74 57.06000999999998 C 387.961 56.47300999999999 386.89 56.994009999999946 387.06 58.02000999999996L 387.12 58.20000999999996 L 387.24 58.38000999999997" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 388.02 57.780010000000004 L 390.53999999999996 61.320010000000025 L 390.84 61.92000999999999 L 390.24 62.10001 L 375.47999999999996 67.14001000000002 L 373.85999999999996 67.74000999999998 L 374.94 66.36000999999999 L 384.71999999999997 54.240009999999984 L 385.14 53.70001000000002 L 385.56 54.240009999999984 L 385.5 54.84001000000001 L 375.71999999999997 66.96001000000001 L 374.94 66.36000999999999 L 375.18 66.18000999999998 L 389.94 61.14001000000002 L 390.24 62.10001 L 389.7 61.92000999999999 L 387.18 58.38001000000003" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 385.56 54.240009999999984 L 388.02 57.780010000000004 L 387.18 58.38000999999997 L 384.72 54.84001000000001" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 387.6 58.080010000000016 L 390.12 61.620010000000036 L 375.36 66.66001 L 385.14000000000004 54.540009999999995" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 408.24 44.94000999999997 L 407.1 43.32000999999997 L 387.48 57.000009999999975 L 388.62 58.62000999999998" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="269.0924851" x="182.46" y="10.350907799999959">X7 X6 X5 X4 X3 X2 X1 X0</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="20.02646278000003" x="151.38132451999996" y="11.970848299999943">SRC1</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="269.0924851" x="182.46" y="40.71090779999997">Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="19.970668259999997" x="151.08" y="42.33090779999998">SRC2</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.80058169554718pt; fill: #000" textLength="210.35776464598953" x="174.72" y="77.9239192632262">Y6+Y7 Y4+Y5 X6+X7 X4+X5 Y2+Y3 Y0+Y1</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="19.963882439999992" x="151.08124047999996" y="77.85060477999997">DEST</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="59.86344924000002" x="397.5" y="79.47090779999996">X2+X3 X0+X1</text></g></svg>
<figcaption><a href='haddps.html#fig-3-20'>Figure 3-20</a>. VHADDPS Operation</figcaption></figure>
<p>128-bit Legacy SSE version: The second source can be an XMM register or an 128-bit memory location. The destination is not distinct from the first source XMM register and the upper bits (MAXVL-1:128) of the corresponding YMM register destination are unmodified.</p>
<p>VEX.128 encoded version: the first source operand is an XMM register or 128-bit memory location. The destination operand is an XMM register. The upper bits (MAXVL-1:128) of the corresponding YMM register destination are zeroed.</p>
<p>VEX.256 encoded version: The first source operand is a YMM register. The second source operand can be a YMM register or a 256-bit memory location. The destination operand is a YMM register.</p>
<h2 id="operation">Operation<a class="anchor" href="#operation">
</a></h2>
<h3 id="haddps--128-bit-legacy-sse-version-">HADDPS (128-bit Legacy SSE Version)<a class="anchor" href="#haddps--128-bit-legacy-sse-version-">
</a></h3>
<pre>DEST[31:0] := SRC1[63:32] + SRC1[31:0]
DEST[63:32] := SRC1[127:96] + SRC1[95:64]
DEST[95:64] := SRC2[63:32] + SRC2[31:0]
DEST[127:96] := SRC2[127:96] + SRC2[95:64]
DEST[MAXVL-1:128] (Unmodified)
</pre>
<h3 id="vhaddps--vex-128-encoded-version-">VHADDPS (VEX.128 Encoded Version)<a class="anchor" href="#vhaddps--vex-128-encoded-version-">
</a></h3>
<pre>DEST[31:0] := SRC1[63:32] + SRC1[31:0]
DEST[63:32] := SRC1[127:96] + SRC1[95:64]
DEST[95:64] := SRC2[63:32] + SRC2[31:0]
DEST[127:96] := SRC2[127:96] + SRC2[95:64]
DEST[MAXVL-1:128] := 0
</pre>
<h3 id="vhaddps--vex-256-encoded-version-">VHADDPS (VEX.256 Encoded Version)<a class="anchor" href="#vhaddps--vex-256-encoded-version-">
</a></h3>
<pre>DEST[31:0] := SRC1[63:32] + SRC1[31:0]
DEST[63:32] := SRC1[127:96] + SRC1[95:64]
DEST[95:64] := SRC2[63:32] + SRC2[31:0]
DEST[127:96] := SRC2[127:96] + SRC2[95:64]
DEST[159:128] := SRC1[191:160] + SRC1[159:128]
DEST[191:160] := SRC1[255:224] + SRC1[223:192]
DEST[223:192] := SRC2[191:160] + SRC2[159:128]
DEST[255:224] := SRC2[255:224] + SRC2[223:192]
</pre>
<h2 id="intel-c-c++-compiler-intrinsic-equivalent">Intel C/C++ Compiler Intrinsic Equivalent<a class="anchor" href="#intel-c-c++-compiler-intrinsic-equivalent">
</a></h2>
<pre>HADDPS __m128 _mm_hadd_ps (__m128 a, __m128 b);
</pre>
<pre>VHADDPS __m256 _mm256_hadd_ps (__m256 a, __m256 b);
</pre>
<h2 class="exceptions" id="exceptions">Exceptions<a class="anchor" href="#exceptions">
</a></h2>
<p>When the source operand is a memory operand, the operand must be aligned on a 16-byte boundary or a general-protection exception (#GP) will be generated.</p>
<h2 class="exceptions" id="numeric-exceptions">Numeric Exceptions<a class="anchor" href="#numeric-exceptions">
</a></h2>
<p>Overflow, Underflow, Invalid, Precision, Denormal.</p>
<h2 class="exceptions" id="other-exceptions">Other Exceptions<a class="anchor" href="#other-exceptions">
</a></h2>
<p>See <span class="not-imported">Table 2-19</span>, “Type 2 Class Exception Conditions.”</p><footer><p>
This UNOFFICIAL, mechanically-separated, non-verified reference is provided for convenience, but it may be
inc<span style="opacity: 0.2">omp</span>lete or b<sub>r</sub>oke<sub>n</sub> in various obvious or non-obvious
ways. Refer to <a href="https://software.intel.com/en-us/download/intel-64-and-ia-32-architectures-sdm-combined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4">Intel® 64 and IA-32 Architectures Software Developers Manual</a> for anything serious.
</p></footer></body></html>