Changes between Version 25 and Version 26 of GcnInstrsVop3
- Timestamp:
- 06/17/17 15:00:34 (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GcnInstrsVop3
v25 v26 1026 1026 UINT16 D1 = ASINT16(CVT_HALF_RTZ(ASFLOAT(SRC1))) 1027 1027 VDST = D0 | (((UINT32)D1) << 16)</code></p> 1028 <h4>V_DIV_FIXUP_F16</h4> 1029 <p>Opcode: 495 (0x1ef) for GCN 1.2<br /> 1030 Syntax: V_DIV_FIXUP_F16 VDST, SRC0, SRC1, SRC2<br /> 1031 Description: Handle all exceptions requires for half floating point division. 1032 SRC0 is quotient, SRC1 is denominator, SRC2 is nominator. Correct result stored to VDST.<br /> 1033 Operation:<br /> 1034 <code>HALF SF0 = ASHALF(SRC0) 1035 HALF SF1 = ASHALF(SRC1) 1036 HALF SF2 = ASHALF(SRC2) 1037 if (ISNAN(SF1) && !ISNAN(SF2)) 1038 VDST = QUIETNAN(SF1) 1039 else if (ISNAN(SF2)) 1040 VDST = QUIETNAN(SF2) 1041 else if (SF1 == 0.0 && SF2 == 0.0) 1042 VDST = NAN_H 1043 else if (ABS(SF1)==INF && ABS(SF2)==INF) 1044 VDST = -NAN_H 1045 else if (SF1 == 0.0) 1046 VDST = INF_H*SIGN(SF1)*SIGN(SF2) 1047 else if (ABS(SF1) == INF) 1048 VDST = SIGN(SF1)*SIGN(SF2) >=0 ? 0.0 : -0.0 1049 else if (ISNAN(SF0)) 1050 VDST = SIGN(SF1)*SIGN(SF2)*INF_H 1051 else 1052 VDST = SF0</code></p> 1028 1053 <h4>V_DIV_FIXUP_F32</h4> 1029 1054 <p>Opcode: 351 (0x15f) for GCN 1.0/1.1; 478 (0x1de) for GCN 1.2<br /> … … 1177 1202 SDST = (SDST & ~MASK) 1178 1203 }</code></p> 1204 <h4>V_FMA_F16</h4> 1205 <p>Opcode: 494 (0x1ee) for GCN 1.2<br /> 1206 Syntax: V_FMA_F16 VDST, SRC0, SRC1, SRC2<br /> 1207 Description: Fused multiply addition on half floating point values from 1208 SRC0, SRC1 and SRC2. Result stored in VDST.<br /> 1209 Operation:<br /> 1210 <code>// SRC0*SRC1+SRC2 1211 VDST = FMA(ASHALF(SRC0), ASHALF(SRC1), ASHALF(SRC2))</code></p> 1179 1212 <h4>V_FMA_F32</h4> 1180 1213 <p>Opcode: 331 (0x14b) for GCN 1.0/1.1; 459 (0x1cb) for GCN 1.2<br /> … … 1253 1286 <code>if (ASFLOAT(SRC0)!=0.0 && ASFLOAT(SRC1)!=0.0) 1254 1287 VDST = ASFLOAT(SRC0) * ASFLOAT(SRC1) + ASFLOAT(VDST)</code></p> 1288 <h4>V_MAD_F16</h4> 1289 <p>Opcode: 490 (0x1ea) for GCN 1.2<br /> 1290 Syntax: V_MAD_F16 VDST, SRC0, SRC1, SRC2<br /> 1291 Description: Multiply half FP value from SRC0 by half FP value from 1292 SRC1 and add SRC2, and store result to VDST. 1293 It applies OMOD modifier to result and it flush denormals.<br /> 1294 Operation:<br /> 1295 <code>VDST = ASHALF(SRC0) * ASHALF(SRC1) + ASHALF(SRC2)</code></p> 1255 1296 <h4>V_MAD_F32</h4> 1256 1297 <p>Opcode: 321 (0x141) for GCN 1.0/1.1; 449 (0x1c1) for GCN 1.2<br />