Changes between Version 5 and Version 6 of GcnInstrsVop3p


Ignore:
Timestamp:
11/27/17 23:00:36 (6 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GcnInstrsVop3p

    v5 v6  
    264264</table>
    265265<p>NEG_HI changes meaning to absolute-value modifier.<br />
    266 ```
    267 FLOAT getSource(UINT32 S, BYTE OP_SEL, BYTE OP_SEL_HI, SRCINDEX)
    268 {
    269     BYTE mask = 1&lt;<SRCINDEX
    270     if ((OP_SEL_HI&mask) == 0)
     266<code>FLOAT getSource(UINT32 S, BYTE OP_SEL, BYTE OP_SEL_HI, SRCINDEX)
     267{
     268    BYTE mask = 1&lt;&lt;SRCINDEX
     269    if ((OP_SEL_HI&amp;mask) == 0)
    271270        return ASFLOAT(S)
    272     if ((OP_SEL&mask) == 0 && (OP_SEL_HI&mask) == 1)
    273         return (FLOAT)ASHALF(S&0xffff)
     271    if ((OP_SEL&amp;mask) == 0 &amp;&amp; (OP_SEL_HI&amp;mask) == 1)
     272        return (FLOAT)ASHALF(S&amp;0xffff)
    274273    else
    275         return (FLOAT)ASHALF(S>&gt;16)
    276 }</p>
    277 <p>FLOAT SS0 = getSource(SRC0, OP_SEL, OP_SEL_HI, 0)
     274        return (FLOAT)ASHALF(S&gt;&gt;16)
     275}
     276FLOAT SS0 = getSource(SRC0, OP_SEL, OP_SEL_HI, 0)
    278277FLOAT SS1 = getSource(SRC1, OP_SEL, OP_SEL_HI, 1)
    279278FLOAT SS2 = getSource(SRC2, OP_SEL, OP_SEL_HI, 2)
     
    281280FLOAT S1 = NEG_HI&amp;2 ? ABS(SS1) : SS1
    282281FLOAT S2 = NEG_HI&amp;4 ? ABS(SS2) : SS2
    283 VDST = S0 * S1 + S2
    284 ```</p>
     282VDST = S0 * S1 + S2</code></p>
    285283<h4>V_MAD_MIXLO_F16</h4>
    286284<p>Opcode: 33 (0x21)<br />
     
    321319</table>
    322320<p>NEG_HI changes meaning to absolute-value modifier.<br />
    323 ```
    324 FLOAT getSource(UINT32 S, BYTE OP_SEL, BYTE OP_SEL_HI, SRCINDEX)
    325 {
    326     BYTE mask = 1&lt;<SRCINDEX
    327     if ((OP_SEL_HI&mask) == 0)
     321<code>FLOAT getSource(UINT32 S, BYTE OP_SEL, BYTE OP_SEL_HI, SRCINDEX)
     322{
     323    BYTE mask = 1&lt;&lt;SRCINDEX
     324    if ((OP_SEL_HI&amp;mask) == 0)
    328325        return ASFLOAT(S)
    329     if ((OP_SEL&mask) == 0 && (OP_SEL_HI&mask) == 1)
    330         return (FLOAT)ASHALF(S&0xffff)
     326    if ((OP_SEL&amp;mask) == 0 &amp;&amp; (OP_SEL_HI&amp;mask) == 1)
     327        return (FLOAT)ASHALF(S&amp;0xffff)
    331328    else
    332         return (FLOAT)ASHALF(S>&gt;16)
    333 }</p>
    334 <p>FLOAT SS0 = getSource(SRC0, OP_SEL, OP_SEL_HI, 0)
     329        return (FLOAT)ASHALF(S&gt;&gt;16)
     330}
     331FLOAT SS0 = getSource(SRC0, OP_SEL, OP_SEL_HI, 0)
    335332FLOAT SS1 = getSource(SRC1, OP_SEL, OP_SEL_HI, 1)
    336333FLOAT SS2 = getSource(SRC2, OP_SEL, OP_SEL_HI, 2)
     
    338335FLOAT S1 = NEG_HI&amp;2 ? ABS(SS1) : SS1
    339336FLOAT S2 = NEG_HI&amp;4 ? ABS(SS2) : SS2
    340 VDST = (ASUINT32((HALF)(S0 * S1 + S2))&amp;0xfff) | (VDST&amp;0xffff0000)
    341 ```</p>
     337VDST = (ASUINT32((HALF)(S0 * S1 + S2))&amp;0xfff) | (VDST&amp;0xffff0000)</code></p>
    342338<h4>V_MAD_MIXHI_F16</h4>
    343339<p>Opcode: 34 (0x22)<br />
     
    378374</table>
    379375<p>NEG_HI changes meaning to absolute-value modifier.<br />
    380 ```
    381 FLOAT getSource(UINT32 S, BYTE OP_SEL, BYTE OP_SEL_HI, SRCINDEX)
    382 {
    383     BYTE mask = 1&lt;<SRCINDEX
    384     if ((OP_SEL_HI&mask) == 0)
     376<code>FLOAT getSource(UINT32 S, BYTE OP_SEL, BYTE OP_SEL_HI, SRCINDEX)
     377{
     378    BYTE mask = 1&lt;&lt;SRCINDEX
     379    if ((OP_SEL_HI&amp;mask) == 0)
    385380        return ASFLOAT(S)
    386     if ((OP_SEL&mask) == 0 && (OP_SEL_HI&mask) == 1)
    387         return (FLOAT)ASHALF(S&0xffff)
     381    if ((OP_SEL&amp;mask) == 0 &amp;&amp; (OP_SEL_HI&amp;mask) == 1)
     382        return (FLOAT)ASHALF(S&amp;0xffff)
    388383    else
    389         return (FLOAT)ASHALF(S>&gt;16)
    390 }</p>
    391 <p>FLOAT SS0 = getSource(SRC0, OP_SEL, OP_SEL_HI, 0)
     384        return (FLOAT)ASHALF(S&gt;&gt;16)
     385}
     386FLOAT SS0 = getSource(SRC0, OP_SEL, OP_SEL_HI, 0)
    392387FLOAT SS1 = getSource(SRC1, OP_SEL, OP_SEL_HI, 1)
    393388FLOAT SS2 = getSource(SRC2, OP_SEL, OP_SEL_HI, 2)
     
    395390FLOAT S1 = NEG_HI&amp;2 ? ABS(SS1) : SS1
    396391FLOAT S2 = NEG_HI&amp;4 ? ABS(SS2) : SS2
    397 VDST = (ASUINT32((HALF)(S0 * S1 + S2))&lt;&lt;16) | (VDST&amp;0xffff)
    398 ```</p>
     392VDST = (ASUINT32((HALF)(S0 * S1 + S2))&lt;&lt;16) | (VDST&amp;0xffff)</code></p>
    399393<h4>V_PK_ADD_F16</h4>
    400394<p>Opcode: 15 (0xf)<br />