19 changed files with 38 additions and 54 deletions
@ -1,5 +1,3 @@ |
|||
require_extension('A'); |
|||
require_rv64; |
|||
reg_t v = MMU.load_uint64(RS1); |
|||
MMU.store_uint64(RS1, RS2 + v); |
|||
WRITE_RD(v); |
|||
WRITE_RD(MMU.amo_uint64(RS1, [&](uint64_t lhs) { return lhs + RS2; })); |
|||
|
|||
@ -1,4 +1,2 @@ |
|||
require_extension('A'); |
|||
reg_t v = MMU.load_int32(RS1); |
|||
MMU.store_uint32(RS1, RS2 + v); |
|||
WRITE_RD(v); |
|||
WRITE_RD(sext32(MMU.amo_uint32(RS1, [&](uint32_t lhs) { return lhs + RS2; }))); |
|||
|
|||
@ -1,5 +1,3 @@ |
|||
require_extension('A'); |
|||
require_rv64; |
|||
reg_t v = MMU.load_uint64(RS1); |
|||
MMU.store_uint64(RS1, RS2 & v); |
|||
WRITE_RD(v); |
|||
WRITE_RD(MMU.amo_uint64(RS1, [&](uint64_t lhs) { return lhs & RS2; })); |
|||
|
|||
@ -1,4 +1,2 @@ |
|||
require_extension('A'); |
|||
reg_t v = MMU.load_int32(RS1); |
|||
MMU.store_uint32(RS1, RS2 & v); |
|||
WRITE_RD(v); |
|||
WRITE_RD(sext32(MMU.amo_uint32(RS1, [&](uint32_t lhs) { return lhs & RS2; }))); |
|||
|
|||
@ -1,5 +1,3 @@ |
|||
require_extension('A'); |
|||
require_rv64; |
|||
sreg_t v = MMU.load_int64(RS1); |
|||
MMU.store_uint64(RS1, std::max(sreg_t(RS2),v)); |
|||
WRITE_RD(v); |
|||
WRITE_RD(MMU.amo_uint64(RS1, [&](int64_t lhs) { return std::max(lhs, int64_t(RS2)); })); |
|||
|
|||
@ -1,4 +1,2 @@ |
|||
require_extension('A'); |
|||
int32_t v = MMU.load_int32(RS1); |
|||
MMU.store_uint32(RS1, std::max(int32_t(RS2),v)); |
|||
WRITE_RD(v); |
|||
WRITE_RD(sext32(MMU.amo_uint32(RS1, [&](int32_t lhs) { return std::max(lhs, int32_t(RS2)); }))); |
|||
|
|||
@ -1,5 +1,3 @@ |
|||
require_extension('A'); |
|||
require_rv64; |
|||
reg_t v = MMU.load_uint64(RS1); |
|||
MMU.store_uint64(RS1, std::max(RS2,v)); |
|||
WRITE_RD(v); |
|||
WRITE_RD(MMU.amo_uint64(RS1, [&](uint64_t lhs) { return std::max(lhs, RS2); })); |
|||
|
|||
@ -1,4 +1,2 @@ |
|||
require_extension('A'); |
|||
uint32_t v = MMU.load_int32(RS1); |
|||
MMU.store_uint32(RS1, std::max(uint32_t(RS2),v)); |
|||
WRITE_RD((int32_t)v); |
|||
WRITE_RD(sext32(MMU.amo_uint32(RS1, [&](uint32_t lhs) { return std::max(lhs, uint32_t(RS2)); }))); |
|||
|
|||
@ -1,5 +1,3 @@ |
|||
require_extension('A'); |
|||
require_rv64; |
|||
sreg_t v = MMU.load_int64(RS1); |
|||
MMU.store_uint64(RS1, std::min(sreg_t(RS2),v)); |
|||
WRITE_RD(v); |
|||
WRITE_RD(MMU.amo_uint64(RS1, [&](int64_t lhs) { return std::min(lhs, int64_t(RS2)); })); |
|||
|
|||
@ -1,4 +1,2 @@ |
|||
require_extension('A'); |
|||
int32_t v = MMU.load_int32(RS1); |
|||
MMU.store_uint32(RS1, std::min(int32_t(RS2),v)); |
|||
WRITE_RD(v); |
|||
WRITE_RD(sext32(MMU.amo_uint32(RS1, [&](int32_t lhs) { return std::min(lhs, int32_t(RS2)); }))); |
|||
|
|||
@ -1,5 +1,3 @@ |
|||
require_extension('A'); |
|||
require_rv64; |
|||
reg_t v = MMU.load_uint64(RS1); |
|||
MMU.store_uint64(RS1, std::min(RS2,v)); |
|||
WRITE_RD(v); |
|||
WRITE_RD(MMU.amo_uint64(RS1, [&](uint64_t lhs) { return std::min(lhs, RS2); })); |
|||
|
|||
@ -1,4 +1,2 @@ |
|||
require_extension('A'); |
|||
uint32_t v = MMU.load_int32(RS1); |
|||
MMU.store_uint32(RS1, std::min(uint32_t(RS2),v)); |
|||
WRITE_RD((int32_t)v); |
|||
WRITE_RD(sext32(MMU.amo_uint32(RS1, [&](uint32_t lhs) { return std::min(lhs, uint32_t(RS2)); }))); |
|||
|
|||
@ -1,5 +1,3 @@ |
|||
require_extension('A'); |
|||
require_rv64; |
|||
reg_t v = MMU.load_uint64(RS1); |
|||
MMU.store_uint64(RS1, RS2 | v); |
|||
WRITE_RD(v); |
|||
WRITE_RD(MMU.amo_uint64(RS1, [&](uint64_t lhs) { return lhs | RS2; })); |
|||
|
|||
@ -1,4 +1,2 @@ |
|||
require_extension('A'); |
|||
reg_t v = MMU.load_int32(RS1); |
|||
MMU.store_uint32(RS1, RS2 | v); |
|||
WRITE_RD(v); |
|||
WRITE_RD(sext32(MMU.amo_uint32(RS1, [&](uint32_t lhs) { return lhs | RS2; }))); |
|||
|
|||
@ -1,5 +1,3 @@ |
|||
require_extension('A'); |
|||
require_rv64; |
|||
reg_t v = MMU.load_uint64(RS1); |
|||
MMU.store_uint64(RS1, RS2); |
|||
WRITE_RD(v); |
|||
WRITE_RD(MMU.amo_uint64(RS1, [&](uint64_t lhs) { return RS2; })); |
|||
|
|||
@ -1,4 +1,2 @@ |
|||
require_extension('A'); |
|||
reg_t v = MMU.load_int32(RS1); |
|||
MMU.store_uint32(RS1, RS2); |
|||
WRITE_RD(v); |
|||
WRITE_RD(sext32(MMU.amo_uint32(RS1, [&](uint32_t lhs) { return RS2; }))); |
|||
|
|||
@ -1,5 +1,3 @@ |
|||
require_extension('A'); |
|||
require_rv64; |
|||
reg_t v = MMU.load_uint64(RS1); |
|||
MMU.store_uint64(RS1, RS2 ^ v); |
|||
WRITE_RD(v); |
|||
WRITE_RD(MMU.amo_uint64(RS1, [&](uint64_t lhs) { return lhs ^ RS2; })); |
|||
|
|||
@ -1,4 +1,2 @@ |
|||
require_extension('A'); |
|||
reg_t v = MMU.load_int32(RS1); |
|||
MMU.store_uint32(RS1, RS2 ^ v); |
|||
WRITE_RD(v); |
|||
WRITE_RD(sext32(MMU.amo_uint32(RS1, [&](uint32_t lhs) { return lhs ^ RS2; }))); |
|||
|
|||
Loading…
Reference in new issue