| 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 /> |
| 1436 | Syntax: V_TRIG_REOP_F64 VDST(2), SRC0(2), SRC1<br /> |
| 1437 | Description: D.d = Look Up 2/PI (S0.d) with segment select S1.u[4:0]. |
| 1438 | Save choosen 53 bits of 2/PI in double floating point value in VDST. Second argument |
| 1439 | is initial segment. First argument is shift of the value (in power form). |
| 1440 | Bit are numbered from MSB to LSB, begins from 1. Choosen bits begins from: |
| 1441 | 53<em>SEGMENT + (FREXP_EXP(SRC0)-1)-(53</em>SEGMENT if SRC0>=POW(2.0, 53<em>SEGMENT), |
| 1442 | otherwise 53</em>SEGMENT.<br /> |
| 1443 | Operation:<br /> |
| 1444 | <code>ASDOUBLE SD0 = ASDOUBLE(SRC0) |
| 1445 | BIT = (SRC1&31) * 53 |
| 1446 | if (SD0 >= POW(2.0, 53) |
| 1447 | { |
| 1448 | if (ABS(SD0) != INF) && !ISNAN(SD0)) |
| 1449 | BIT += (FREXP_EXP(SD0)-1) - BIT |
| 1450 | else |
| 1451 | BIT += 1024 - BIT |
| 1452 | } |
| 1453 | VDST = (DOUBLE)(TWOPERPI[BIT:BIT+52]) * POW(2.0, -BIT-53)</code></p> |