Changes between Version 26 and Version 27 of GcnInstrsVop3
- Timestamp:
- 06/17/17 17:00:29 (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GcnInstrsVop3
v26 v27 1301 1301 Operation:<br /> 1302 1302 <code>VDST = ASFLOAT(SRC0) * ASFLOAT(SRC1) + ASFLOAT(SRC2)</code></p> 1303 <h4>V_MAD_I16</h4> 1304 <p>Opcode: 492 (0x1ec) for GCN 1.2<br /> 1305 Syntax: V_MAD_I16 VDST, SRC0, SRC1, SRC2<br /> 1306 Description: Multiply 16-bit signed value from SRC0 by 16-bit signed value from 1307 SRC1 and add 16-bit signed value from SRC2, and store 16-bit signed result to VDST.<br /> 1308 Operation:<br /> 1309 <code>VDST = (INT16)((INT16)SRC0*(INT16)SRC1 + (INT16)SRC2)</code></p> 1303 1310 <h4>V_MAD_I32_I24</h4> 1304 1311 <p>Opcode: 322 (0x142) for GCN 1.0/1.1; 450 (0x1c2) for GCN 1.2<br /> … … 1332 1339 <code>if (ASFLOAT(SRC0)!=0.0 && ASFLOAT(SRC1)!=0.0) 1333 1340 VDST = ASFLOAT(SRC0) * ASFLOAT(SRC1) + ASFLOAT(SRC2)</code></p> 1341 <h4>V_MAD_U16</h4> 1342 <p>Opcode: 491 (0x1eb) for GCN 1.2<br /> 1343 Syntax: V_MAD_U16 VDST, SRC0, SRC1, SRC2<br /> 1344 Description: Multiply 16-bit unsigned value from SRC0 by 16-bit unsigned value from 1345 SRC1 and add 16-bit unsigned value from SRC2, and store 16-bit unsigned result to VDST.<br /> 1346 Operation:<br /> 1347 <code>VDST = ((UINT16)SRC0*(UINT16)SRC1 + (UINT16)SRC2) & 0xffff</code></p> 1334 1348 <h4>V_MAD_U32_U24</h4> 1335 1349 <p>Opcode: 323 (0x143) for GCN 1.0/1.1; 451 (0x1c3) for GCN 1.2<br /> … … 1604 1618 VDST = ASFLOAT(SRC0) * ASFLOAT(SRC1) 1605 1619 }</code></p> 1620 <h4>V_PERM_B32</h4> 1621 <p>Opcode: 493 (0x1ed) for GCN 1.2<br /> 1622 Syntax: V_PERM_B32 VDST, SRC0, SRC1, SRC2<br /> 1623 Description: Permute bytes. Choose for every byte in dword, specified value. Bytes in 1624 SRC2 dword selects value for result dword. Value 0-7 choose byte of this index of quadword 1625 (64-bit value) built from SRC0 (higher bits) and SRC1 (lower bits). Value from 8-11 1626 choose 0xff<em>BIT, where BIT is last bit from 2</em>N+1 from 64-bit value (SRC0,SRC1). 1627 Value 12 choose zero. Value equal or greater than 13 choose 0xff.<br /> 1628 Operation:<br /> 1629 <code>VDST = 0 1630 UINT64 qword = (((UINT64)SRC0)<<32) | SRC1 1631 for (int i = 0; i < 4; i++) 1632 { 1633 BYTE choice = (SRC2 >> (8*i)) & 0xff 1634 BYTE result 1635 if (choice >= 13) 1636 result = 0xff 1637 else if (choice == 12) 1638 result = 0 1639 else if (choice >= 8) 1640 result = 0xff * qword>>((choice-8)*16 + 15) 1641 else 1642 result = (qword >> (choice*8)) & 0xff 1643 VDST |= (result << (i*8)) 1644 }</code></p> 1606 1645 <h4>V_QSAD_U8, V_QSAD_PK_U16_U8</h4> 1607 1646 <p>Opcode: 370 (0x172) for GCN 1.0/1.1; 485 (0x1e5) for GCN 1.2<br />