| 1294 | <h4>V_LOG_CLAMP_F32</h4> |
| 1295 | <p>Opcode VOP1: 38 (0x26) for GCN 1.0/1.1<br /> |
| 1296 | Opcode VOP3A: 422 (0x1a6) for GCN 1.0/1.1<br /> |
| 1297 | Syntax: V_LOG_CLAMP_F32 VDST, SRC0<br /> |
| 1298 | Description: Approximate logarithm of base 2 from floating point value SRC0 with |
| 1299 | clamping infinities to -MAX_FLOAT. Result is stored in VDST. |
| 1300 | If SRC0 is negative then store -NaN to VDST. This instruction doesn't handle denormalized |
| 1301 | values regardless FLOAT MODE register setup.<br /> |
| 1302 | Operation:<br /> |
| 1303 | <code>FLOAT F = ASFLOAT(SRC0) |
| 1304 | if (F==1.0) |
| 1305 | VDST = 0.0f |
| 1306 | if (F<0.0) |
| 1307 | VDST = -NaN |
| 1308 | else |
| 1309 | { |
| 1310 | VDST = APPROX_LOG2(F) |
| 1311 | if (ASFLOAT(VDST)==-INF) |
| 1312 | VDST = -MAX_FLOAT |
| 1313 | }</code></p> |
| 1314 | <h4>V_LOG_F32</h4> |
| 1315 | <p>Opcode VOP1: 39 (0x27) for GCN 1.0/1.1; 33 (0x21) for GCN 2.0<br /> |
| 1316 | Opcode VOP3A: 422 (0x1a6) for GCN 1.0/1.1; 353 (0x161) for GCN 2.0<br /> |
| 1317 | Syntax: V_LOG_F32 VDST, SRC0<br /> |
| 1318 | Description: Approximate logarithm of base 2 from floating point value SRC0, and store result |
| 1319 | to VDST. If SRC0 is negative then store -NaN to VDST. |
| 1320 | This instruction doesn't handle denormalized values regardless FLOAT MODE register setup.<br /> |
| 1321 | Operation:<br /> |
| 1322 | <code>FLOAT F = ASFLOAT(SRC0) |
| 1323 | if (F==1.0) |
| 1324 | VDST = 0.0f |
| 1325 | if (F<0.0) |
| 1326 | VDST = -NaN |
| 1327 | else |
| 1328 | VDST = APPROX_LOG2(F)</code></p> |
| 1347 | <h4>V_RCP_CLAMP_F32</h4> |
| 1348 | <p>Opcode VOP1: 40 (0x28) for GCN 1.0/1.1<br /> |
| 1349 | Opcode VOP3A: 424 (0x1a8) for GCN 1.0/1.1<br /> |
| 1350 | Syntax: V_RCP_CLAMP_F32 VDST, SRC0<br /> |
| 1351 | Description: Approximate reciprocal from floating point value SRC0 and store it to VDST. |
| 1352 | Guaranted error below 1ulp. Result is clamped maximum float value including its sign.<br /> |
| 1353 | Description:<br /> |
| 1354 | <code>VDST = APPROX_RCP(ASFLOAT(SRC0)) |
| 1355 | if (ABS(ASFLOAT(VDST))==INF) |
| 1356 | VDST = SIGN(ASFLOAT(VDST)) * MAX_FLOAT</code></p> |
| 1357 | <h4>V_RCP_F32</h4> |
| 1358 | <p>Opcode VOP1: 42 (0x2a) for GCN 1.0/1.1; 34 (0x22) for GCN 2.0<br /> |
| 1359 | Opcode VOP3A: 426 (0x1aa) for GCN 1.0/1.1; 354 (0x162) for GCN 2.0<br /> |
| 1360 | Syntax: V_RCP_F32 VDST, SRC0<br /> |
| 1361 | Description: Approximate reciprocal from floating point value SRC0 and store it to VDST. |
| 1362 | Guaranted error below 1ulp.<br /> |
| 1363 | Description:<br /> |
| 1364 | <code>VDST = APPROX_RCP(ASFLOAT(SRC0))</code></p> |
| 1365 | <h4>V_RCP_IFLAG_F32</h4> |
| 1366 | <p>Opcode VOP1: 43 (0x2b) for GCN 1.0/1.1; 35 (0x23) for GCN 2.0<br /> |
| 1367 | Opcode VOP3A: 427 (0x1ab) for GCN 1.0/1.1; 355 (0x163) for GCN 2.0<br /> |
| 1368 | Syntax: V_RCP_IFLAG_F32 VDST, SRC0<br /> |
| 1369 | Description: Approximate reciprocal from floating point value SRC0 and store it to VDST. |
| 1370 | Guaranted error below 1ulp. This instruction signals integer division by zero, instead |
| 1371 | any floating point exception when error is occurred.<br /> |
| 1372 | Description:<br /> |
| 1373 | <code>VDST = APPROX_RCP_IFLAG(ASFLOAT(SRC0))</code></p> |
| 1374 | <h4>V_RCP_LEGACY_F32</h4> |
| 1375 | <p>Opcode VOP1: 41 (0x29) for GCN 1.0/1.1<br /> |
| 1376 | Opcode VOP3A: 425 (0x1a9) for GCN 1.0/1.1<br /> |
| 1377 | Syntax: V_RCP_LEGACY_F32 VDST, SRC0<br /> |
| 1378 | Description: Approximate reciprocal from floating point value SRC0 and store it to VDST. |
| 1379 | Guaranted error below 1ulp. If SRC0 or VDST is zero or infinity then store 0 with proper sign |
| 1380 | to VDST.<br /> |
| 1381 | Operation:<br /> |
| 1382 | <code>FLOAT SF = ASFLOAT(SRC0) |
| 1383 | if (ABS(SF)==0.0) |
| 1384 | VDST = SIGN(SF)*0.0 |
| 1385 | else |
| 1386 | { |
| 1387 | VDST = APPROX_RCP(SF) |
| 1388 | if (ABS(ASFLOAT(VDST)) == INF) |
| 1389 | VDST = SIGN(SF)*0.0 |
| 1390 | }</code></p> |
| 1411 | <h4>V_RSQ_CLAMP_F32</h4> |
| 1412 | <p>Opcode VOP1: 44 (0x2c) for GCN 1.0/1.1<br /> |
| 1413 | Opcode VOP3A: 428 (0x1ac) for GCN 1.0/1.1<br /> |
| 1414 | Syntax: V_RCP_CLAMP_F32 VDST, SRC0<br /> |
| 1415 | Description: Approximate reciprocal square root from floating point value SRC0 with |
| 1416 | clamping to MAX_FLOAT, and store result to VDST. |
| 1417 | If SRC0 is negative value, store -NAN to VDST. |
| 1418 | This instruction doesn't handle denormalized values regardless FLOAT MODE register setup.<br /> |
| 1419 | Description:<br /> |
| 1420 | <code>VDST = APPROX_RSQRT(ASFLOAT(SRC0)) |
| 1421 | if (ASFLOAT(VDST)==INF) |
| 1422 | VDST = MAX_FLOAT</code></p> |
| 1423 | <h4>V_RSQ_LEGACY_F32</h4> |
| 1424 | <p>Opcode VOP1: 45 (0x2d) for GCN 1.0/1.1<br /> |
| 1425 | Opcode VOP3A: 429 (0x1ad) for GCN 1.0/1.1<br /> |
| 1426 | Syntax: V_RCP_LEGACY_F32 VDST, SRC0<br /> |
| 1427 | Description: Approximate reciprocal square root from floating point value SRC0, |
| 1428 | and store result to VDST. If SRC0 is negative value, store -NAN to VDST. |
| 1429 | If result is zero then store 0.0 to VDST. |
| 1430 | This instruction doesn't handle denormalized values regardless FLOAT MODE register setup.<br /> |
| 1431 | Description:<br /> |
| 1432 | <code>VDST = APPROX_RSQRT(ASFLOAT(SRC0)) |
| 1433 | if (ASFLOAT(VDST)==INF) |
| 1434 | VDST = 0.0</code></p> |
| 1435 | <h4>V_RSQ_F32</h4> |
| 1436 | <p>Opcode VOP1: 46 (0x2e) for GCN 1.0/1.1; 36 (0x24) for GCN 2.0<br /> |
| 1437 | Opcode VOP3A: 430 (0x1ae) for GCN 1.0/1.1; 356 (0x164) for GCN 2.0<br /> |
| 1438 | Syntax: V_RCP_F32 VDST, SRC0<br /> |
| 1439 | Description: Approximate reciprocal square root from floating point value SRC0 and |
| 1440 | store it to VDST. If SRC0 is negative value, store -NAN to VDST. |
| 1441 | This instruction doesn't handle denormalized values regardless FLOAT MODE register setup.<br /> |
| 1442 | Description:<br /> |
| 1443 | <code>VDST = APPROX_RSQRT(ASFLOAT(SRC0))</code></p> |