| 988 | <h4>V_DIV_FMAS_F32</h4> |
| 989 | <p>Opcode: 367 (0x16f) for GCN 1.0/1.1; 482 (0x1e2) for GCN 1.2<br /> |
| 990 | Syntax: V_DIV_FMAS_F32 VDST, SRC0, SRC1, SRC2<br /> |
| 991 | Description: Special case divide FMA with scale and flags. |
| 992 | SRC0 is quotient, SRC1 is denominator, SRC2 is nominator. |
| 993 | All input values are floating point values. Instruction does fussed multiply and addition, |
| 994 | multiply result by POW(2.0, -64) if absolute value of the SRC2 less than 2.0, |
| 995 | otherwise multiply by POW(2.0, 64); and store result to VDST.<br /> |
| 996 | Operation:<br /> |
| 997 | <code>// SRC0*SRC1+SRC2 |
| 998 | VDST = FMA(ASFLOAT(SRC0), ASFLOAT(SRC1), ASFLOAT(SRC2)) |
| 999 | if (ABS(ASFLOAT(SRC2)) >= 2.0) |
| 1000 | VDST = ASFLOAT(VDST)*POW(2.0,64) |
| 1001 | else |
| 1002 | VDST = ASFLOAT(VDST)*POW(-2.0,64)</code></p> |
| 1003 | <h4>V_DIV_FMAS_F64</h4> |
| 1004 | <p>Opcode: 367 (0x16f) for GCN 1.0/1.1; 482 (0x1e2) for GCN 1.2<br /> |
| 1005 | Syntax: V_DIV_FMAS_F64 VDST(2), SRC0(2), SRC1(2), SRC2(2)<br /> |
| 1006 | Description: Special case divide FMA with scale and flags. |
| 1007 | SRC0 is quotient, SRC1 is denominator, SRC2 is nominator. |
| 1008 | All input values are double floating point values. |
| 1009 | Instruction does fussed multiply and addition, |
| 1010 | multiply result by POW(2.0, -128) if absolute value of the SRC2 less than 2.0, |
| 1011 | otherwise multiply by POW(2.0, 128); and store result to VDST.<br /> |
| 1012 | Operation:<br /> |
| 1013 | <code>// SRC0*SRC1+SRC2 |
| 1014 | VDST = FMA(ASDOUBLE(SRC0), ASDOUBLE(SRC1), ASDOUBLE(SRC2)) |
| 1015 | if (ABS(ASDOUBLE(SRC2)) >= 2.0) |
| 1016 | VDST = ASDOUBLE(VDST)*POW(2.0,128) |
| 1017 | else |
| 1018 | VDST = ASDOUBLE(VDST)*POW(-2.0,128)</code></p> |