Changes between Version 7 and Version 8 of GcnInstrsVop1


Ignore:
Timestamp:
11/28/15 23:00:17 (8 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GcnInstrsVop1

    v7 v8  
    12601260if (ABS(ASDOUBLE(SRC0))!=NAN)
    12611261    VDST = (UINT32)MIN(RNDTZINT(ASDOUBLE(SRC0)), 4294967295.0)</code></p>
     1262<h4>V_EXP_F32</h4>
     1263<p>Opcode VOP1: 37 (0x25) for GCN 1.0/1.1; 32 (0x20) for GCN 1.2<br />
     1264Opcode VOP3A: 421 (0x1a5) for GCN 1.0/1.1; 352 (0x160) for GCN 1.2<br />
     1265Syntax: V_EXP_F32 VDST, SRC0<br />
     1266Description: Approximate power of two from FP value SRC0 and store it to VDST. Instruction
     1267for values smaller than -126.0 always returns 0 regardless floatmode in MODE register.<br />
     1268Operation:<br />
     1269<code>if (ASFLOAT(SRC0)&gt;=-126.0)
     1270    VDST = APPROX_POW2(ASFLOAT(SRC0))
     1271else
     1272    VDST = 0.0</code></p>
    12621273<h4>V_FLOOR_F32</h4>
    1263 <p>Opcode VOP1: 37 (0x25) for GCN 1.0/1.1; 31 (0x1f) for GCN 1.2<br />
    1264 Opcode VOP3A: 421 (0x1a5) for GCN 1.0/1.1; 351 (0x15f) for GCN 1.2<br />
     1274<p>Opcode VOP1: 36 (0x24) for GCN 1.0/1.1; 31 (0x1f) for GCN 1.2<br />
     1275Opcode VOP3A: 420 (0x1a4) for GCN 1.0/1.1; 351 (0x15f) for GCN 1.2<br />
    12651276Syntax: V_FLOOR_F32 VDST, SRC0<br />
    12661277Description: Truncate floating point valu from SRC0 with rounding to positive infinity
     
    12811292else
    12821293    VDST = NAN * SIGN(SF)</code></p>
     1294<h4>V_LOG_CLAMP_F32</h4>
     1295<p>Opcode VOP1: 38 (0x26) for GCN 1.0/1.1<br />
     1296Opcode VOP3A: 422 (0x1a6) for GCN 1.0/1.1<br />
     1297Syntax: V_LOG_CLAMP_F32 VDST, SRC0<br />
     1298Description: Approximate logarithm of base 2 from floating point value SRC0 with
     1299clamping infinities to -MAX_FLOAT. Result is stored in VDST.
     1300If SRC0 is negative then store -NaN to VDST. This instruction doesn't handle denormalized
     1301values regardless FLOAT MODE register setup.<br />
     1302Operation:<br />
     1303<code>FLOAT F = ASFLOAT(SRC0)
     1304if (F==1.0)
     1305    VDST = 0.0f
     1306if (F&lt;0.0)
     1307    VDST = -NaN
     1308else
     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 />
     1316Opcode VOP3A: 422 (0x1a6) for GCN 1.0/1.1; 353 (0x161) for GCN 2.0<br />
     1317Syntax: V_LOG_F32 VDST, SRC0<br />
     1318Description: Approximate logarithm of base 2 from floating point value SRC0, and store result
     1319to VDST. If SRC0 is negative then store -NaN to VDST.
     1320This instruction doesn't handle denormalized values regardless FLOAT MODE register setup.<br />
     1321Operation:<br />
     1322<code>FLOAT F = ASFLOAT(SRC0)
     1323if (F==1.0)
     1324    VDST = 0.0f
     1325if (F&lt;0.0)
     1326    VDST = -NaN
     1327else
     1328    VDST = APPROX_LOG2(F)</code></p>
    12831329<h4>V_MOV_FED_B32</h4>
    12841330<p>Opcode VOP1: 9 (0x9)<br />
     
    12991345Syntax: V_NOP<br />
    13001346Description: Do nothing.</p>
     1347<h4>V_RCP_CLAMP_F32</h4>
     1348<p>Opcode VOP1: 40 (0x28) for GCN 1.0/1.1<br />
     1349Opcode VOP3A: 424 (0x1a8) for GCN 1.0/1.1<br />
     1350Syntax: V_RCP_CLAMP_F32 VDST, SRC0<br />
     1351Description: Approximate reciprocal from floating point value SRC0 and store it to VDST.
     1352Guaranted error below 1ulp. Result is clamped maximum float value including its sign.<br />
     1353Description:<br />
     1354<code>VDST = APPROX_RCP(ASFLOAT(SRC0))
     1355if (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 />
     1359Opcode VOP3A: 426 (0x1aa) for GCN 1.0/1.1; 354 (0x162) for GCN 2.0<br />
     1360Syntax: V_RCP_F32 VDST, SRC0<br />
     1361Description: Approximate reciprocal from floating point value SRC0 and store it to VDST.
     1362Guaranted error below 1ulp.<br />
     1363Description:<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 />
     1367Opcode VOP3A: 427 (0x1ab) for GCN 1.0/1.1; 355 (0x163) for GCN 2.0<br />
     1368Syntax: V_RCP_IFLAG_F32 VDST, SRC0<br />
     1369Description: Approximate reciprocal from floating point value SRC0 and store it to VDST.
     1370Guaranted error below 1ulp. This instruction signals integer division by zero, instead
     1371any floating point exception when error is occurred.<br />
     1372Description:<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 />
     1376Opcode VOP3A: 425 (0x1a9) for GCN 1.0/1.1<br />
     1377Syntax: V_RCP_LEGACY_F32 VDST, SRC0<br />
     1378Description: Approximate reciprocal from floating point value SRC0 and store it to VDST.
     1379Guaranted error below 1ulp. If SRC0 or VDST is zero or infinity then store 0 with proper sign
     1380to VDST.<br />
     1381Operation:<br />
     1382<code>FLOAT SF = ASFLOAT(SRC0)
     1383if (ABS(SF)==0.0)
     1384    VDST = SIGN(SF)*0.0
     1385else
     1386{
     1387    VDST = APPROX_RCP(SF)
     1388    if (ABS(ASFLOAT(VDST)) == INF)
     1389        VDST = SIGN(SF)*0.0
     1390}</code></p>
    13011391<h4>V_READFIRSTLANE_B32</h4>
    13021392<p>Opcode VOP1: 2 (0x2)<br />
     
    13191409Operation:
    13201410<code>VDST = RNDNE(ASFLOAT(SRC0))</code></p>
     1411<h4>V_RSQ_CLAMP_F32</h4>
     1412<p>Opcode VOP1: 44 (0x2c) for GCN 1.0/1.1<br />
     1413Opcode VOP3A: 428 (0x1ac) for GCN 1.0/1.1<br />
     1414Syntax: V_RCP_CLAMP_F32 VDST, SRC0<br />
     1415Description: Approximate reciprocal square root from floating point value SRC0 with
     1416clamping to MAX_FLOAT, and store result to VDST.
     1417If SRC0 is negative value, store -NAN to VDST.
     1418This instruction doesn't handle denormalized values regardless FLOAT MODE register setup.<br />
     1419Description:<br />
     1420<code>VDST = APPROX_RSQRT(ASFLOAT(SRC0))
     1421if (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 />
     1425Opcode VOP3A: 429 (0x1ad) for GCN 1.0/1.1<br />
     1426Syntax: V_RCP_LEGACY_F32 VDST, SRC0<br />
     1427Description: Approximate reciprocal square root from floating point value SRC0,
     1428and store result to VDST. If SRC0 is negative value, store -NAN to VDST.
     1429If result is zero then store 0.0 to VDST.
     1430This instruction doesn't handle denormalized values regardless FLOAT MODE register setup.<br />
     1431Description:<br />
     1432<code>VDST = APPROX_RSQRT(ASFLOAT(SRC0))
     1433if (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 />
     1437Opcode VOP3A: 430 (0x1ae) for GCN 1.0/1.1; 356 (0x164) for GCN 2.0<br />
     1438Syntax: V_RCP_F32 VDST, SRC0<br />
     1439Description: Approximate reciprocal square root from floating point value SRC0 and
     1440store it to VDST. If SRC0 is negative value, store -NAN to VDST.
     1441This instruction doesn't handle denormalized values regardless FLOAT MODE register setup.<br />
     1442Description:<br />
     1443<code>VDST = APPROX_RSQRT(ASFLOAT(SRC0))</code></p>
    13211444<h4>V_TRUNC_F32</h4>
    13221445<p>Opcode VOP1: 33 (0x21) for GCN 1.0/1.1; 28 (0x1c) for GCN 1.2<br />