Changes between Version 9 and Version 10 of GcnInstrsVop1
- Timestamp:
- 11/29/15 14:00:16 (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GcnInstrsVop1
v9 v10 1084 1084 F += 1.0 1085 1085 VDST = F</code></p> 1086 <h4>V_COS_F32</h4> 1087 <p>Opcode VOP1: 54 (0x36) for GCN 1.0/1.1; 42 (0x2a) for GCN 1.2<br /> 1088 Opcode VOP3A: 438 (0x1b6) for GCN 1.0/1.1; 362 (0x16a) for GCN 1.2<br /> 1089 Syntax: V_COS_F32 VDST, SRC0<br /> 1090 Description: Compute cosine of FP value from SRC0. Input value must be normalized to range 1091 1.0 - 1.0 (-360 degree : 360 degree). If SRC0 value is out of range then store 1.0 to VDST. 1092 If SRC0 value is infinity, store -NAN to VDST.<br /> 1093 Operation:<br /> 1094 <code>FLOAT SF = ASFLOAT(SRC0) 1095 VDST = 1.0 1096 if (SF >= -1.0 && SF <= 1.0) 1097 VDST = APPROX_COS(SF) 1098 else if (ABS(SF)==INF) 1099 VDST = -NAN 1100 else if (ABS(SF)==NAN) 1101 VDST = SRC0</code></p> 1086 1102 <h4>V_CVT_F16_F32</h4> 1087 1103 <p>Opcode VOP1: 10 (0xa)<br /> … … 1230 1246 If value is higher/lower than maximal/minimal integer then store MAX_INT32/MIN_INT32 to VDST. 1231 1247 If input value is NaN/-NaN then store MAX_INT32/MIN_INT32 to VDST.<br /> 1232 Description:<br />1248 Operation:<br /> 1233 1249 <code>FLOAT SF = ASFLOAT(SRC0) 1234 1250 if (ABS(SF)!=NAN) … … 1351 1367 Description: Approximate reciprocal from floating point value SRC0 and store it to VDST. 1352 1368 Guaranted error below 1ulp. Result is clamped to MAX_FLOAT including sign of a result.<br /> 1353 Description:<br />1369 Operation:<br /> 1354 1370 <code>VDST = APPROX_RCP(ASFLOAT(SRC0)) 1355 1371 if (ABS(ASFLOAT(VDST))==INF) 1356 1372 VDST = SIGN(ASFLOAT(VDST)) * MAX_FLOAT</code></p> 1373 <h4>V_RCP_CLAMP_F64</h4> 1374 <p>Opcode VOP1: 48 (0x30) for GCN 1.0/1.1<br /> 1375 Opcode VOP3A: 432 (0x1b0) for GCN 1.0/1.1<br /> 1376 Syntax: V_RCP_CLAMP_F64 VDST(2), SRC0(2)<br /> 1377 Description: Approximate reciprocal from double FP value SRC0 and store it to VDST. 1378 Relative error of approximation is ~1e-8. 1379 Result is clamped to MAX_DOUBLE value including sign of a result.<br /> 1380 Operation:<br /> 1381 <code>VDST = APPROX_RCP(ASDOUBLE(SRC0)) 1382 if (ABS(ASDOUBLE(VDST))==INF) 1383 VDST = SIGN(ASDOUBLE(VDST)) * MAX_DOUBLE</code></p> 1357 1384 <h4>V_RCP_F32</h4> 1358 1385 <p>Opcode VOP1: 42 (0x2a) for GCN 1.0/1.1; 34 (0x22) for GCN 2.0<br /> … … 1361 1388 Description: Approximate reciprocal from floating point value SRC0 and store it to VDST. 1362 1389 Guaranted error below 1ulp.<br /> 1363 Description:<br />1390 Operation:<br /> 1364 1391 <code>VDST = APPROX_RCP(ASFLOAT(SRC0))</code></p> 1365 1392 <h4>V_RCP_F64</h4> … … 1369 1396 Description: Approximate reciprocal from double FP value SRC0 and store it to VDST. 1370 1397 Relative error of approximation is ~1e-8.<br /> 1371 Description:<br />1398 Operation:<br /> 1372 1399 <code>VDST = APPROX_RCP(ASDOUBLE(SRC0))</code></p> 1373 <h4>V_RCP_CLAMP_F64</h4>1374 <p>Opcode VOP1: 48 (0x30) for GCN 1.0/1.1<br />1375 Opcode VOP3A: 432 (0x1b0) for GCN 1.0/1.1<br />1376 Syntax: V_RCP_CLAMP_F64 VDST(2), SRC0(2)<br />1377 Description: Approximate reciprocal from double FP value SRC0 and store it to VDST.1378 Relative error of approximation is ~1e-8.1379 Result is clamped to MAX_DOUBLE value including sign of a result.<br />1380 Description:<br />1381 <code>VDST = APPROX_RCP(ASDOUBLE(SRC0))1382 if (ABS(ASDOUBLE(VDST))==INF)1383 VDST = SIGN(ASDOUBLE(VDST)) * MAX_DOUBLE</code></p>1384 1400 <h4>V_RCP_IFLAG_F32</h4> 1385 1401 <p>Opcode VOP1: 43 (0x2b) for GCN 1.0/1.1; 35 (0x23) for GCN 2.0<br /> … … 1389 1405 Guaranted error below 1ulp. This instruction signals integer division by zero, instead 1390 1406 any floating point exception when error is occurred.<br /> 1391 Description:<br />1407 Operation:<br /> 1392 1408 <code>VDST = APPROX_RCP_IFLAG(ASFLOAT(SRC0))</code></p> 1393 1409 <h4>V_RCP_LEGACY_F32</h4> … … 1431 1447 <p>Opcode VOP1: 44 (0x2c) for GCN 1.0/1.1<br /> 1432 1448 Opcode VOP3A: 428 (0x1ac) for GCN 1.0/1.1<br /> 1433 Syntax: V_R CP_CLAMP_F32 VDST, SRC0<br />1449 Syntax: V_RSQ_CLAMP_F32 VDST, SRC0<br /> 1434 1450 Description: Approximate reciprocal square root from floating point value SRC0 with 1435 1451 clamping to MAX_FLOAT, and store result to VDST. 1436 1452 If SRC0 is negative value, store -NAN to VDST. 1437 1453 This instruction doesn't handle denormalized values regardless FLOAT MODE register setup.<br /> 1438 Description:<br />1454 Operation:<br /> 1439 1455 <code>VDST = APPROX_RSQRT(ASFLOAT(SRC0)) 1440 1456 if (ASFLOAT(VDST)==INF) 1441 1457 VDST = MAX_FLOAT</code></p> 1458 <h4>V_RSQ_CLAMP_F64</h4> 1459 <p>Opcode VOP1: 50 (0x32) for GCN 1.0/1.1 1460 Opcode VOP3A: 434 (0x1b2) for GCN 1.0/1.1 1461 Syntax: V_RSQ_CLAMP_F64 VDST(2), SRC0(2)<br /> 1462 Description: Approximate reciprocal square root from double floating point value SRC0 1463 with clamping to MAX_DOUBLE ,and store it to VDST. If SRC0 is negative value, 1464 store -NAN to VDST.<br /> 1465 Operation:<br /> 1466 <code>VDST = APPROX_RSQRT(ASDOUBLE(SRC0)) 1467 if (ASDOUBLE(VDST)==INF) 1468 VDST = MAX_DOUBLE</code></p> 1442 1469 <h4>V_RSQ_F32</h4> 1443 1470 <p>Opcode VOP1: 46 (0x2e) for GCN 1.0/1.1; 36 (0x24) for GCN 2.0<br /> 1444 1471 Opcode VOP3A: 430 (0x1ae) for GCN 1.0/1.1; 356 (0x164) for GCN 2.0<br /> 1445 Syntax: V_R CP_F32 VDST, SRC0<br />1472 Syntax: V_RSQ_F32 VDST, SRC0<br /> 1446 1473 Description: Approximate reciprocal square root from floating point value SRC0 and 1447 1474 store it to VDST. If SRC0 is negative value, store -NAN to VDST. 1448 1475 This instruction doesn't handle denormalized values regardless FLOAT MODE register setup.<br /> 1449 Description:<br />1476 Operation:<br /> 1450 1477 <code>VDST = APPROX_RSQRT(ASFLOAT(SRC0))</code></p> 1478 <h4>V_RSQ_F64</h4> 1479 <p>Opcode VOP1: 49 (0x31) for GCN 1.0/1.1; 38 (0x26) for GCN 2.0<br /> 1480 Opcode VOP3A: 433 (0x1b1) for GCN 1.0/1.1; 358 (0x166) for GCN 2.0<br /> 1481 Syntax: V_RSQ_F64 VDST(2), SRC0(2)<br /> 1482 Description: Approximate reciprocal square root from double floating point value SRC0 and 1483 store it to VDST. If SRC0 is negative value, store -NAN to VDST.<br /> 1484 Operation:<br /> 1485 <code>VDST = APPROX_RSQRT(ASDOUBLE(SRC0))</code></p> 1451 1486 <h4>V_RSQ_LEGACY_F32</h4> 1452 1487 <p>Opcode VOP1: 45 (0x2d) for GCN 1.0/1.1<br /> … … 1457 1492 If result is zero then store 0.0 to VDST. 1458 1493 This instruction doesn't handle denormalized values regardless FLOAT MODE register setup.<br /> 1459 Description:<br />1494 Operation:<br /> 1460 1495 <code>VDST = APPROX_RSQRT(ASFLOAT(SRC0)) 1461 1496 if (ASFLOAT(VDST)==INF) 1462 1497 VDST = 0.0</code></p> 1498 <h4>V_SIN_F32</h4> 1499 <p>Opcode VOP1: 53 (0x35) for GCN 1.0/1.1; 41 (0x29) for GCN 1.2<br /> 1500 Opcode VOP3A: 437 (0x1b5) for GCN 1.0/1.1; 361 (0x169) for GCN 1.2<br /> 1501 Syntax: V_SIN_F32 VDST, SRC0<br /> 1502 Description: Compute sine of FP value from SRC0. Input value must be normalized to range 1503 1.0 - 1.0 (-360 degree : 360 degree). If SRC0 value is out of range then store 0.0 to VDST. 1504 If SRC0 value is infinity, store -NAN to VDST.<br /> 1505 Operation:<br /> 1506 <code>FLOAT SF = ASFLOAT(SRC0) 1507 VDST = 0.0 1508 if (SF >= -1.0 && SF <= 1.0) 1509 VDST = APPROX_SIN(SF) 1510 else if (ABS(SF)==INF) 1511 VDST = -NAN 1512 else if (ABS(SF)==NAN) 1513 VDST = SRC0</code></p> 1514 <h4>V_SQRT_F32</h4> 1515 <p>Opcode VOP1: 51 (0x33) for GCN 1.0/1.1; 39 (0x27) for GCN 1.2<br /> 1516 Opcode VOP3A: 435 (0x1b3) for GCN 1.0/1.1; 359 (0x167) for GCN 1.2<br /> 1517 Syntax: V_SQRT_F32 VDST, SRC0<br /> 1518 Description: Compute square root of floating point value SRC0, and store result to VDST. 1519 If SRC0 is negative value then store -NaN to VDST.<br /> 1520 Operation:<br /> 1521 <code>if (ASFLOAT(SRC0)>=0.0) 1522 VDST = APPROX_SQRT(ASFLOAT(SRC0)) 1523 else 1524 VDST = -NAN</code></p> 1525 <h4>V_SQRT_F64</h4> 1526 <p>Opcode VOP1: 52 (0x34) for GCN 1.0/1.1; 40 (0x28) for GCN 1.2<br /> 1527 Opcode VOP3A: 436 (0x1b4) for GCN 1.0/1.1; 360 (0x168) for GCN 1.2<br /> 1528 Syntax: V_SQRT_F64 VDST(2), SRC0(2)<br /> 1529 Description: Compute square root of double floating point value SRC0, and store result 1530 to VDST. Relative error of approximation is ~1e-8. 1531 If SRC0 is negative value then store -NaN to VDST.<br /> 1532 Operation:<br /> 1533 <code>if (ASDOUBLE(SRC0)>=0.0) 1534 VDST = APPROX_SQRT(ASDOUBLE(SRC0)) 1535 else 1536 VDST = -NAN</code></p> 1463 1537 <h4>V_TRUNC_F32</h4> 1464 1538 <p>Opcode VOP1: 33 (0x21) for GCN 1.0/1.1; 28 (0x1c) for GCN 1.2<br />