@@ -249,11 +249,14 @@ static struct vec tsrc24_v = { "r", &src2_bf, &cnt4, 0 };
249
249
#define TSRC24 atomvec, &tsrc24_v
250
250
251
251
static struct bitfield ssrc_mask = { 0x19 , 4 };
252
+ static struct bitfield ssrc_mask1 = { 0x4 , 4 };
252
253
static struct bitfield scnt4 = { .addend = 4 };
253
254
254
255
static struct vec ssrc3_v = { "r" , & src3_bf , & scnt4 , & ssrc_mask };
256
+ static struct vec ssrc3_v1 = { "r" , & src3_bf , & scnt4 , & ssrc_mask1 };
255
257
256
258
#define SUSTPSRC atomvec, &ssrc3_v
259
+ #define SUSTPSRC1 atomvec, &ssrc3_v1
257
260
258
261
/*
259
262
* Memory fields
@@ -1205,6 +1208,14 @@ static struct insn tabsulcop[] = {
1205
1208
{ 0 , 0 , OOPS },
1206
1209
};
1207
1210
1211
+ static struct insn tabsulcop2 [] = {
1212
+ { 0x0000000000000000ull , 0x00c0000000000000ull , N ("ca" ) },
1213
+ { 0x0040000000000000ull , 0x00c0000000000000ull , N ("cg" ) },
1214
+ { 0x0080000000000000ull , 0x00c0000000000000ull , N ("cs" ) },
1215
+ { 0x00c0000000000000ull , 0x00c0000000000000ull , N ("cv" ) },
1216
+ { 0 , 0 , OOPS },
1217
+ };
1218
+
1208
1219
static struct insn tabsuscop [] = {
1209
1220
{ 0x0000000000000000ull , 0x0000000180000000ull , N ("wb" ) },
1210
1221
{ 0x0000000080000000ull , 0x0000000180000000ull , N ("cg" ) },
@@ -1213,13 +1224,28 @@ static struct insn tabsuscop[] = {
1213
1224
{ 0 , 0 , OOPS },
1214
1225
};
1215
1226
1227
+ static struct insn tabsuscop2 [] = {
1228
+ { 0x0000000000000000ull , 0x00c0000000000000ull , N ("wb" ) },
1229
+ { 0x0040000000000000ull , 0x00c0000000000000ull , N ("cg" ) },
1230
+ { 0x0080000000000000ull , 0x00c0000000000000ull , N ("cs" ) },
1231
+ { 0x00c0000000000000ull , 0x00c0000000000000ull , N ("wt" ) },
1232
+ { 0 , 0 , OOPS },
1233
+ };
1234
+
1216
1235
static struct insn tabsclamp2s [] = {
1217
1236
{ 0x0000000000000000ull , 0x0000000001800000ull , N ("ign" ) },
1218
1237
{ 0x0000000000800000ull , 0x0000000001800000ull , N ("trap" ) },
1219
1238
{ 0x0000000001800000ull , 0x0000000001800000ull , N ("sdcl" ) },
1220
1239
{ 0 , 0 , OOPS },
1221
1240
};
1222
1241
1242
+ static struct insn tabsclamp2s2 [] = {
1243
+ { 0x0000000000000000ull , 0x000000000000000cull , N ("ign" ) },
1244
+ { 0x0000000000000004ull , 0x000000000000000cull , N ("trap" ) },
1245
+ { 0x000000000000000cull , 0x000000000000000cull , N ("sdcl" ) },
1246
+ { 0 , 0 , OOPS },
1247
+ };
1248
+
1223
1249
static struct insn tabsudst [] = {
1224
1250
{ 0x0000000000000000ull , 0x0000000e00000000ull , N ("u8" ), DST },
1225
1251
{ 0x0000000200000000ull , 0x0000000e00000000ull , N ("s8" ), DST },
@@ -1231,6 +1257,17 @@ static struct insn tabsudst[] = {
1231
1257
{ 0 , 0 , OOPS },
1232
1258
};
1233
1259
1260
+ static struct insn tabsudst1 [] = {
1261
+ { 0x0000000000000000ull , 0x0700000000000000ull , N ("u8" ), DST },
1262
+ { 0x0100000000000000ull , 0x0700000000000000ull , N ("s8" ), DST },
1263
+ { 0x0200000000000000ull , 0x0700000000000000ull , N ("u16" ), DST },
1264
+ { 0x0300000000000000ull , 0x0700000000000000ull , N ("s16" ), DST },
1265
+ { 0x0400000000000000ull , 0x0700000000000000ull , N ("b32" ), DST },
1266
+ { 0x0500000000000000ull , 0x0700000000000000ull , N ("b64" ), DSTD },
1267
+ { 0x0600000000000000ull , 0x0700000000000000ull , N ("b128" ), DSTQ },
1268
+ { 0 , 0 , OOPS },
1269
+ };
1270
+
1234
1271
static struct insn tabsclamp2l [] = {
1235
1272
{ 0x0000000000000000ull , 0x0000c00000000000ull , N ("zero" ) },
1236
1273
{ 0x0000400000000000ull , 0x0000c00000000000ull , N ("trap" ) },
@@ -1254,6 +1291,14 @@ static struct insn tabsustty[] = {
1254
1291
{ 0 , 0 , OOPS },
1255
1292
};
1256
1293
1294
+ static struct insn tabsustty2 [] = {
1295
+ { 0x0000000000000000ull , 0x0000000000000300ull , N ("u32" ) },
1296
+ { 0x0000000000000100ull , 0x0000000000000300ull , N ("s32" ) },
1297
+ { 0x0000000000000200ull , 0x0000000000000300ull , N ("u8" ) },
1298
+ { 0x0000000000000300ull , 0x0000000000000300ull , N ("s8" ) },
1299
+ { 0 , 0 , OOPS },
1300
+ };
1301
+
1257
1302
static struct insn tabsucm [] = {
1258
1303
{ 0x0000000000000000ull , 0x00f0000000000000ull , N ("sd" ), N ("r1" ) }, // probably
1259
1304
{ 0x0010000000000000ull , 0x00f0000000000000ull , N ("sd" ), N ("r2" ) },
@@ -1482,6 +1527,9 @@ static struct insn tabm[] = {
1482
1527
{ 0x25c0000000000002ull , 0x3fc0000000000003ull , N ("cvt" ), T (frm2a ), T (cvti2fdst ), T (neg30 ), T (abs34 ), T (cvti2fsrc ) },
1483
1528
{ 0x27c0000000000002ull , 0x3fc0000000000003ull , N ("rshf" ), N ("b32" ), DST , SESTART , T (us64_28 ), SRC1 , SRC3 , SEEND , T (shfclamp ), T (is2 ) }, // XXX: check is2 and bits 0x29,0x33(swap srcs ?)
1484
1529
{ 0x2800000000000002ull , 0xf880000000000003ull , N ("mul" ), T (high38 ), DST , T (us32_39 ), SRC1 , T (us32_3a ), LIMM },
1530
+ { 0x3000000000000002ull , 0xf800000000000003ull , N ("suldgb" ), T (sudst1 ), T (sulcop2 ), T (sclamp2l ), T (suldty ), GLOBALDSU , CONST , T (sup ) },
1531
+ { 0x3800000000000002ull , 0xf8000000000000f3ull , N ("sustgb" ), T (suscop2 ), T (sclamp2s2 ), T (sustty2 ), GLOBALDSU , CONST , SRC3 , T (sup2 ) },
1532
+ { 0x3800000000000002ull , 0xf800000000000003ull , N ("sustgp" ), T (suscop2 ), T (sclamp2s2 ), T (sustty2 ), GLOBALDSU , CONST , SUSTPSRC1 , T (sup2 ) },
1485
1533
{ 0x6800000000000002ull , 0xf800000000000003ull , N ("ld" ), T (redop ), T (atomd ), T (gamem ), T (atoms ) },
1486
1534
{ 0x7000000000000002ull , 0x7c00000000000003ull , N ("texfetch" ), T (texm ), T (lodf ), T (texms ), T (texoff2 ), T (ltex ), TDST , T (text ), T (texsrc1 ), T (texsrc2 ) }, // XXX: args are wrong
1487
1535
{ 0x7400000000000002ull , 0x7f80000000000003ull , T (lane0e ), N ("mov" ), N ("b32" ), DST , LIMM },
0 commit comments