46 changed files with 85 additions and 45 deletions
@ -1,3 +1,3 @@ |
|||
require_rv64; |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBA); |
|||
WRITE_RD(sext_xlen(zext32(RS1) + RS2)); |
|||
|
|||
@ -1,2 +1,2 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
WRITE_RD(RS1 & ~RS2); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBS); |
|||
int shamt = RS2 & (xlen-1); |
|||
WRITE_RD(sext_xlen(RS1 & ~(1LL << shamt))); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBS); |
|||
int shamt = SHAMT & (xlen-1); |
|||
WRITE_RD(sext_xlen(RS1 & ~(1LL << shamt))); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBS); |
|||
int shamt = RS2 & (xlen-1); |
|||
WRITE_RD(sext_xlen(1 & (RS1 >> shamt))); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBS); |
|||
int shamt = SHAMT & (xlen-1); |
|||
WRITE_RD(sext_xlen(1 & (RS1 >> shamt))); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBS); |
|||
int shamt = RS2 & (xlen-1); |
|||
WRITE_RD(sext_xlen(RS1 ^ (1LL << shamt))); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBS); |
|||
int shamt = SHAMT & (xlen-1); |
|||
WRITE_RD(sext_xlen(RS1 ^ (1LL << shamt))); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBS); |
|||
int shamt = RS2 & (xlen-1); |
|||
WRITE_RD(sext_xlen(RS1 | (1LL << shamt))); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBS); |
|||
int shamt = SHAMT & (xlen-1); |
|||
WRITE_RD(sext_xlen(RS1 | (1LL << shamt))); |
|||
|
|||
@ -1,2 +1,2 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
WRITE_RD(sext_xlen(sreg_t(RS1) > sreg_t(RS2) ? RS1 : RS2)); |
|||
|
|||
@ -1,2 +1,2 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
WRITE_RD(sext_xlen(RS1 > RS2 ? RS1 : RS2)); |
|||
|
|||
@ -1,2 +1,2 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
WRITE_RD(sext_xlen(sreg_t(RS1) < sreg_t(RS2) ? RS1 : RS2)); |
|||
|
|||
@ -1,2 +1,2 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
WRITE_RD(sext_xlen(RS1 < RS2 ? RS1 : RS2)); |
|||
|
|||
@ -1,2 +1,2 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
WRITE_RD(RS1 | ~RS2); |
|||
|
|||
@ -1,4 +1,9 @@ |
|||
require_extension('B'); |
|||
// RV32Zbb contains zext.h but not general pack
|
|||
if (insn.rs2() == 0 && xlen == 32) |
|||
require_extension(EXT_ZBB); |
|||
else |
|||
require_extension('B'); |
|||
|
|||
reg_t lo = zext_xlen(RS1 << (xlen/2)) >> (xlen/2); |
|||
reg_t hi = zext_xlen(RS2 << (xlen/2)); |
|||
WRITE_RD(sext_xlen(lo | hi)); |
|||
|
|||
@ -1,5 +1,10 @@ |
|||
// RV64Zbb contains zext.h but not general packw
|
|||
if (insn.rs2() == 0) |
|||
require_extension(EXT_ZBB); |
|||
else |
|||
require_extension('B'); |
|||
|
|||
require_rv64; |
|||
require_extension('B'); |
|||
reg_t lo = zext32(RS1 << 16) >> 16; |
|||
reg_t hi = zext32(RS2 << 16); |
|||
WRITE_RD(sext32(lo | hi)); |
|||
|
|||
@ -1,4 +1,4 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
int shamt = RS2 & (xlen-1); |
|||
int rshamt = -shamt & (xlen-1); |
|||
WRITE_RD(sext_xlen((RS1 << shamt) | (zext_xlen(RS1) >> rshamt))); |
|||
|
|||
@ -1,5 +1,5 @@ |
|||
require_rv64; |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
int shamt = RS2 & 31; |
|||
int rshamt = -shamt & 31; |
|||
WRITE_RD(sext32((RS1 << shamt) | (zext32(RS1) >> rshamt))); |
|||
|
|||
@ -1,4 +1,4 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
int shamt = RS2 & (xlen-1); |
|||
int rshamt = -shamt & (xlen-1); |
|||
WRITE_RD(sext_xlen((RS1 << rshamt) | (zext_xlen(RS1) >> shamt))); |
|||
|
|||
@ -1,5 +1,5 @@ |
|||
require_rv64; |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
int shamt = RS2 & 31; |
|||
int rshamt = -shamt & 31; |
|||
WRITE_RD(sext32((RS1 << rshamt) | (zext32(RS1) >> shamt))); |
|||
|
|||
@ -1,2 +1,2 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
WRITE_RD((sreg_t)(int8_t)(RS1)); |
|||
|
|||
@ -1,2 +1,2 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
WRITE_RD((sreg_t)(int16_t)(RS1)); |
|||
|
|||
@ -1,2 +1,2 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBA); |
|||
WRITE_RD(sext_xlen((RS1 << 1) + RS2)); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_rv64; |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBA); |
|||
WRITE_RD(sext_xlen((zext32(RS1) << 1) + RS2)); |
|||
|
|||
@ -1,2 +1,2 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBA); |
|||
WRITE_RD(sext_xlen((RS1 << 2) + RS2)); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_rv64; |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBA); |
|||
WRITE_RD(sext_xlen((zext32(RS1) << 2) + RS2)); |
|||
|
|||
@ -1,2 +1,2 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBA); |
|||
WRITE_RD(sext_xlen((RS1 << 3) + RS2)); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_rv64; |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBA); |
|||
WRITE_RD(sext_xlen((zext32(RS1) << 3) + RS2)); |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
require_rv64; |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBA); |
|||
WRITE_RD(sext_xlen(zext32(RS1) << SHAMT)); |
|||
|
|||
@ -1,2 +1,2 @@ |
|||
require_extension('B'); |
|||
require_extension(EXT_ZBB); |
|||
WRITE_RD(RS1 ^ ~RS2); |
|||
|
|||
Loading…
Reference in new issue