@@ -339,6 +339,84 @@ start:
339
339
// 12.6: Double-Precision Floating-Point Classify Instruction
340
340
FCLASSD F0, X5 // d31200e2
341
341
342
+ // RISC-V Bit-Manipulation ISA-extensions (1.0)
343
+ // 1.1: Address Generation Instructions (Zba)
344
+ ADDUW X10, X11, X12 // 3b86a508
345
+ ADDUW X10, X11 // bb85a508
346
+ SH1ADD X11, X12, X13 // b326b620
347
+ SH1ADD X11, X12 // 3326b620
348
+ SH1ADDUW X12, X13, X14 // 3ba7c620
349
+ SH1ADDUW X12, X13 // bba6c620
350
+ SH2ADD X13, X14, X15 // b347d720
351
+ SH2ADD X13, X14 // 3347d720
352
+ SH2ADDUW X14, X15, X16 // 3bc8e720
353
+ SH2ADDUW X14, X15 // bbc7e720
354
+ SH3ADD X15, X16, X17 // b368f820
355
+ SH3ADD X15, X16 // 3368f820
356
+ SH3ADDUW X16, X17, X18 // 3be90821
357
+ SH3ADDUW X16, X17 // bbe80821
358
+ SLLIUW $31 , X17, X18 // 1b99f809
359
+ SLLIUW $63 , X17 // 9b98f80b
360
+ SLLIUW $63 , X17, X18 // 1b99f80b
361
+ SLLIUW $1 , X18, X19 // 9b191908
362
+
363
+ // 1.2: Basic Bit Manipulation (Zbb)
364
+ ANDN X19, X20, X21 // b37a3a41
365
+ ANDN X19, X20 // 337a3a41
366
+ CLZ X20, X21 // 931a0a60
367
+ CLZW X21, X22 // 1b9b0a60
368
+ CPOP X22, X23 // 931b2b60
369
+ CPOPW X23, X24 // 1b9c2b60
370
+ CTZ X24, X25 // 931c1c60
371
+ CTZW X25, X26 // 1b9d1c60
372
+ MAX X26, X28, X29 // b36eae0b
373
+ MAX X26, X28 // 336eae0b
374
+ MAXU X28, X29, X30 // 33ffce0b
375
+ MAXU X28, X29 // b3fece0b
376
+ MIN X29, X30, X5 // b342df0b
377
+ MIN X29, X30 // 334fdf0b
378
+ MINU X30, X5, X6 // 33d3e20b
379
+ MINU X30, X5 // b3d2e20b
380
+ ORN X6, X7, X8 // 33e46340
381
+ ORN X6, X7 // b3e36340
382
+ SEXTB X16, X17 // 93184860
383
+ SEXTH X17, X18 // 13995860
384
+ XNOR X18, X19, X20 // 33ca2941
385
+ XNOR X18, X19 // b3c92941
386
+ ZEXTH X19, X20 // 3bca0908
387
+
388
+ // 1.3: Bitwise Rotation (Zbb)
389
+ ROL X8, X9, X10 // 33958460 or b30f8040b3dff4013395840033e5af00
390
+ ROL X8, X9 // b3948460 or b30f8040b3dff401b3948400b3e49f00
391
+ ROLW X9, X10, X11 // bb159560 or b30f9040bb5ff501bb159500b3e5bf00
392
+ ROLW X9, X10 // 3b159560 or b30f9040bb5ff5013b15950033e5af00
393
+ ROR X10, X11, X12 // 33d6a560 or b30fa040b39ff50133d6a50033e6cf00
394
+ ROR X10, X11 // b3d5a560 or b30fa040b39ff501b3d5a500b3e5bf00
395
+ ROR $63 , X11 // 93d5f563 or 93dff50393951500b3e5bf00
396
+ RORI $63 , X11, X12 // 13d6f563 or 93dff5031396150033e6cf00
397
+ RORI $1 , X12, X13 // 93561660 or 935f16009316f603b3e6df00
398
+ RORIW $31 , X13, X14 // 1bd7f661 or 9bdff6011b97160033e7ef00
399
+ RORIW $1 , X14, X15 // 9b571760 or 9b5f17009b17f701b3e7ff00
400
+ RORW X15, X16, X17 // bb58f860 or b30ff040bb1ff801bb58f800b3e81f01
401
+ RORW X15, X16 // 3b58f860 or b30ff040bb1ff8013b58f80033e80f01
402
+ RORW $31 , X13 // 9bd6f661 or 9bdff6019b961600b3e6df00
403
+ ORCB X5, X6 // 13d37228
404
+ REV8 X7, X8 // 13d4836b
405
+
406
+ // 1.5: Single-bit Instructions (Zbs)
407
+ BCLR X23, X24, X25 // b31c7c49
408
+ BCLR $63 , X24 // 131cfc4b
409
+ BCLRI $1 , X25, X26 // 139d1c48
410
+ BEXT X26, X28, X29 // b35eae49
411
+ BEXT $63 , X28 // 135efe4b
412
+ BEXTI $1 , X29, X30 // 13df1e48
413
+ BINV X30, X5, X6 // 3393e269
414
+ BINV $63 , X6 // 1313f36b
415
+ BINVI $1 , X7, X8 // 13941368
416
+ BSET X8, X9, X10 // 33958428
417
+ BSET $63 , X9 // 9394f42b
418
+ BSETI $1 , X10, X11 // 93151528
419
+
342
420
// Privileged ISA
343
421
344
422
// 3.2.1: Environment Call and Breakpoint
@@ -417,24 +495,6 @@ start:
417
495
NEGW X5 // bb025040
418
496
NEGW X5, X6 // 3b035040
419
497
420
- // Bitwise rotation pseudo-instructions
421
- ROL X5, X6, X7 // b30f5040b35ff301b3135300b3e37f00
422
- ROL X5, X6 // b30f5040b35ff3013313530033e36f00
423
- ROLW X5, X6, X7 // b30f5040bb5ff301bb135300b3e37f00
424
- ROLW X5, X6 // b30f5040bb5ff3013b13530033e36f00
425
- ROR X5, X6, X7 // b30f5040b31ff301b3535300b3e37f00
426
- ROR X5, X6 // b30f5040b31ff3013353530033e36f00
427
- RORW X5, X6, X7 // b30f5040bb1ff301bb535300b3e37f00
428
- RORW X5, X6 // b30f5040bb1ff3013b53530033e36f00
429
- RORI $5 , X6, X7 // 935f53009313b303b3e37f00
430
- RORI $5 , X6 // 935f53001313b30333e36f00
431
- RORIW $5 , X6, X7 // 9b5f53009b13b301b3e37f00
432
- RORIW $5 , X6 // 9b5f53001b13b30133e36f00
433
- ROR $5 , X6, X7 // 935f53009313b303b3e37f00
434
- ROR $5 , X6 // 935f53001313b30333e36f00
435
- RORW $5 , X6, X7 // 9b5f53009b13b301b3e37f00
436
- RORW $5 , X6 // 9b5f53001b13b30133e36f00
437
-
438
498
// This jumps to the second instruction in the function (the
439
499
// first instruction is an invisible stack pointer adjustment).
440
500
JMP start // JMP 2
0 commit comments