ia32-64/x86/haddps.html
2025-07-08 02:23:29 -03:00

399 lines
56 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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>