Changes between Version 15 and Version 16 of GcnInstrsVop3


Ignore:
Timestamp:
12/11/15 23:01:09 (8 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GcnInstrsVop3

    v15 v16  
    10391039    SDST = (SDST & ~MASK) | MASK
    10401040}
    1041 else if (ABS(S12) >= ABS(POW(2.0, 96+FREXP(SF0)-1) || ISNAN(S12))
     1041else if (ABS(S12) >= ABS(POW(2.0, 96+FREXP_EXP(SF0)-1) || ISNAN(S12))
    10421042{
    10431043    VDST = SF0 * POW2(2.0, 64)
     
    10731073    SDST = (SDST & ~MASK) | MASK
    10741074}
    1075 else if (ABS(S12) >= ABS(POW(2.0, 768+FREXP(SD0)-1) || ISNAN(S12))
     1075else if (ABS(S12) >= ABS(POW(2.0, 768+FREXP_EXP(SD0)-1) || ISNAN(S12))
    10761076{
    10771077    VDST = SD0 * POW2(2.0, 128)
     
    14321432for (UINT8 i = 0; i < 4; i++)
    14331433    VDST += ABS(((SRC0 &gt;&gt; (i*8)) &amp; 0xff) - ((SRC1 &gt;&gt; (i*8)) &amp; 0xff))</code></p>
     1434<h4>V_TRIG_REOP_F64</h4>
     1435<p>Opcode: 372 (0x174) for GCN 1.0/1.1; 658 (0x292) for GCN 1.2<br />
     1436Syntax: V_TRIG_REOP_F64 VDST(2), SRC0(2), SRC1<br />
     1437Description:  D.d = Look Up 2/PI (S0.d) with segment select S1.u[4:0].
     1438Save choosen 53 bits of 2/PI in double floating point value in VDST. Second argument
     1439is initial segment. First argument is shift of the value (in power form).
     1440Bit are numbered from MSB to LSB, begins from 1. Choosen bits begins from:
     144153<em>SEGMENT + (FREXP_EXP(SRC0)-1)-(53</em>SEGMENT if SRC0&gt;=POW(2.0, 53<em>SEGMENT),
     1442otherwise 53</em>SEGMENT.<br />
     1443Operation:<br />
     1444<code>ASDOUBLE SD0 = ASDOUBLE(SRC0)
     1445BIT = (SRC1&amp;31) * 53
     1446if (SD0 &gt;= POW(2.0, 53)
     1447{
     1448    if (ABS(SD0) != INF) &amp;&amp; !ISNAN(SD0))
     1449        BIT += (FREXP_EXP(SD0)-1) - BIT
     1450    else
     1451        BIT += 1024 - BIT
     1452}
     1453VDST = (DOUBLE)(TWOPERPI[BIT:BIT+52]) * POW(2.0, -BIT-53)</code></p>
    14341454}}}