Changes between Version 4 and Version 5 of GcnInstrsVop3


Ignore:
Timestamp:
12/06/15 10:00:16 (8 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GcnInstrsVop3

    v4 v5  
    972972Operation:<br />
    973973<code>VDST = (UINT32)(SRC0&amp;0xffffff) * (UINT32)(SRC1&amp;0xffffff) + SRC2</code></p>
     974<h4>V_MAX3_F32</h4>
     975<p>Opcode: 340 (0x154) for GCN 1.0/1.1; 467 (0x1d3) for GCN 1.2<br />
     976Syntax: V_MAX3_F32 VDST, SRC0, SRC1, SRC2<br />
     977Description: Choose largest value from FP values SRC0, SRC1, SRC2, and store it to VDST.<br />
     978Operation:<br />
     979<code>FLOAT SF0 = ASFLOAT(SRC0)
     980FLOAT SF1 = ASFLOAT(SRC1)
     981FLOAT SF2 = ASFLOAT(SRC2)
     982if (ISNAN(SF0))
     983    VDST = MAX(SF1, SF2)
     984else if (ISNAN(SF1))
     985    VDST = MAX(SF0, SF2)
     986else if (ISNAN(SF2))
     987    VDST = MAX(SF0, SF1)
     988else if (SF2 &gt; SF0 &amp;&amp; SF2 &gt; SF1)
     989    VDST = SF2
     990else
     991    VDST = MAX(SF1, SF0)</code></p>
     992<h4>V_MAX3_I32</h4>
     993<p>Opcode: 341 (0x155) for GCN 1.0/1.1; 468 (0x1d4) for GCN 1.2<br />
     994Syntax: V_MAX3_I32 VDST, SRC0, SRC1, SRC2<br />
     995Description: Choose largest value from signed integer values SRC0, SRC1, SRC2,
     996and store it to VDST.<br />
     997Operation:<br />
     998<code>if ((INT32)SRC2 &gt; (INT32)SRC0 &amp;&amp; (INT32)SRC2 &gt; (INT32)SRC1)
     999    VDST = SRC2
     1000else
     1001    VDST = MAX((INT32)SRC1, (INT32)SRC0)</code></p>
     1002<h4>V_MAX3_U32</h4>
     1003<p>Opcode: 342 (0x156) for GCN 1.0/1.1; 469 (0x1d5) for GCN 1.2<br />
     1004Syntax: V_MAX3_U32 VDST, SRC0, SRC1, SRC2<br />
     1005Description: Choose largest value from unsigned integer values SRC0, SRC1, SRC2,
     1006and store it to VDST.<br />
     1007Operation:<br />
     1008<code>if (SRC2 &gt; SRC0 &amp;&amp; SRC2 &gt; SRC1)
     1009    VDST = SRC2
     1010else
     1011    VDST = MAX(SRC1, SRC0)</code></p>
     1012<h4>V_MED3_F32</h4>
     1013<p>Opcode: 343 (0x157) for GCN 1.0/1.1; 470 (0x1d6) for GCN 1.2<br />
     1014Syntax: V_MED3_F32 VDST, SRC0, SRC1, SRC2<br />
     1015Description: Choose medium value from FP values SRC0, SRC1, SRC2, and store it to VDST.<br />
     1016Operation:<br />
     1017<code>FLOAT SF0 = ASFLOAT(SRC0)
     1018FLOAT SF1 = ASFLOAT(SRC1)
     1019FLOAT SF2 = ASFLOAT(SRC2)
     1020if (ISNAN(SF0))
     1021    VDST = MIN(SF1, SF2)
     1022else if (ISNAN(SF1))
     1023    VDST = MIN(SF0, SF2)
     1024else if (ISNAN(SF2))
     1025    VDST = MIN(SF0, SF1)
     1026else if ((SF2 &gt; SF1 &amp;&amp; SF2 &lt; SF0) || (SF2 &lt; SF1 &amp;&amp; SF2 &gt; SF0))
     1027    VDST = SF2
     1028else if ((SF1 &gt; SF2 &amp;&amp; SF1 &lt; SF0) || (SF1 &lt; SF2 &amp;&amp; SF1 &gt; SF0))
     1029    VDST = SF1
     1030else
     1031    VDST = SF0</code></p>
     1032<h4>V_MED3_I32</h4>
     1033<p>Opcode: 344 (0x158) for GCN 1.0/1.1; 471 (0x1d7) for GCN 1.2<br />
     1034Syntax: V_MED3_I32 VDST, SRC0, SRC1, SRC2<br />
     1035Description: Choose medium value from signed integer values SRC0, SRC1, SRC2,
     1036and store it to VDST.<br />
     1037Operation:<br />
     1038<code>INT32 S0 = (INT32)SRC0
     1039INT32 S1 = (INT32)SRC1
     1040INT32 S2 = (INT32)SRC2
     1041if ((S2 &gt; S1 &amp;&amp; S2 &lt; S0) || (S2 &lt; S1 &amp;&amp; S2 &gt; S0))
     1042    VDST = S2
     1043else if ((S1 &gt; S2 &amp;&amp; S1 &lt; S0) || (S1 &lt; S2 &amp;&amp; S1 &gt; S0))
     1044    VDST = S1
     1045else
     1046    VDST = S0</code></p>
     1047<h4>V_MED3_U32</h4>
     1048<p>Opcode: 345 (0x159) for GCN 1.0/1.1; 472 (0x1d8) for GCN 1.2<br />
     1049Syntax: V_MED3_U32 VDST, SRC0, SRC1, SRC2<br />
     1050Description: Choose medium value from unsigned integer values SRC0, SRC1, SRC2,
     1051and store it to VDST.<br />
     1052Operation:<br />
     1053<code>if ((SRC2 &gt; SRC1 &amp;&amp; SRC2 &lt; SRC0) || (SRC2 &lt; SRC1 &amp;&amp; SRC2 &gt; SRC0))
     1054    VDST = SRC2
     1055else if ((SRC1 &gt; SRC2 &amp;&amp; SRC1 &lt; SRC0) || (SRC1 &lt; SRC2 &amp;&amp; SRC1 &gt; SRC0))
     1056    VDST = SRC1
     1057else
     1058    VDST = SRC0</code></p>
    9741059<h4>V_MIN3_F32</h4>
    975 <p>Opcode: 337 (0x151) for GCN 1.0/1.1; 465 (0x1d1) for GCN 1.2<br />
     1060<p>Opcode: 337 (0x151) for GCN 1.0/1.1; 464 (0x1d0) for GCN 1.2<br />
    9761061Syntax: V_MIN3_F32 VDST, SRC0, SRC1, SRC2<br />
    9771062Description: Choose smallest value from FP values SRC0, SRC1, SRC2, and store it to VDST.<br />
    9781063Operation:<br />
    979 <code>VDST = MIN3(ASFLOAT(SRC0), ASFLOAT(SRC1), ASFLOAT(SRC2))</code></p>
     1064<code>FLOAT SF0 = ASFLOAT(SRC0)
     1065FLOAT SF1 = ASFLOAT(SRC1)
     1066FLOAT SF2 = ASFLOAT(SRC2)
     1067if (ISNAN(SF0))
     1068    VDST = MIN(SF1, SF2)
     1069else if (ISNAN(SF1))
     1070    VDST = MIN(SF0, SF2)
     1071else if (ISNAN(SF2))
     1072    VDST = MIN(SF0, SF1)
     1073else if (SF2 &lt; SF0 &amp;&amp; SF2 &lt; SF1)
     1074    VDST = SF2
     1075else
     1076    VDST = MIN(SF1, SF0)</code></p>
     1077<h4>V_MIN3_I32</h4>
     1078<p>Opcode: 338 (0x152) for GCN 1.0/1.1; 465 (0x1d1) for GCN 1.2<br />
     1079Syntax: V_MIN3_I32 VDST, SRC0, SRC1, SRC2<br />
     1080Description: Choose smallest value from signed integer values SRC0, SRC1, SRC2,
     1081and store it to VDST.<br />
     1082Operation:<br />
     1083<code>if ((INT32)SRC2 &lt; (INT32)SRC0 &amp;&amp; (INT32)SRC2 &lt; (INT32)SRC1)
     1084    VDST = SRC2
     1085else
     1086    VDST = MIN((INT32)SRC1, (INT32)SRC0)</code></p>
     1087<h4>V_MIN3_U32</h4>
     1088<p>Opcode: 339 (0x153) for GCN 1.0/1.1; 466 (0x1d2) for GCN 1.2<br />
     1089Syntax: V_MIN3_U32 VDST, SRC0, SRC1, SRC2<br />
     1090Description: Choose smallest value from unsigned integer values SRC0, SRC1, SRC2,
     1091and store it to VDST.<br />
     1092Operation:<br />
     1093<code>if (SRC2 &lt; SRC0 &amp;&amp; SRC2 &lt; SRC1)
     1094    VDST = SRC2
     1095else
     1096    VDST = MIN(SRC1, SRC0)</code></p>
    9801097<h4>V_MULLIT_F32</h4>
    981 <p>Opcode: 336 (0x150) for GCN 1.0/1.1; 464 (0x1d0) for GCN 1.2<br />
     1098<p>Opcode: 336 (0x150) for GCN 1.0/1.1<br />
    9821099Syntax: V_MULLIT_F32 VDST, SRC0, SRC1, SRC2<br />
    9831100Description: Multiply FP value SRC0 and FP value SRC1, and store it to VDST if FP value in