Browse Source

add byte width amo instructions

pull/1491/head
Ved Shanbhogue 3 years ago
parent
commit
08bad17b04
  1. 3
      riscv/insns/amoadd_b.h
  2. 3
      riscv/insns/amoand_b.h
  3. 4
      riscv/insns/amocas_b.h
  4. 3
      riscv/insns/amomax_b.h
  5. 3
      riscv/insns/amomaxu_b.h
  6. 3
      riscv/insns/amomin_b.h
  7. 3
      riscv/insns/amominu_b.h
  8. 3
      riscv/insns/amoor_b.h
  9. 3
      riscv/insns/amoswap_b.h
  10. 3
      riscv/insns/amoxor_b.h

3
riscv/insns/amoadd_b.h

@ -0,0 +1,3 @@
require_extension('A');
require_extension(EXT_ZABHA);
WRITE_RD((sreg_t)(int8_t)(MMU.amo<uint8_t>(RS1, [&](uint8_t lhs) { return lhs + RS2; })));

3
riscv/insns/amoand_b.h

@ -0,0 +1,3 @@
require_extension('A');
require_extension(EXT_ZABHA);
WRITE_RD((sreg_t)(int8_t)(MMU.amo<uint8_t>(RS1, [&](uint8_t lhs) { return lhs & RS2; })));

4
riscv/insns/amocas_b.h

@ -0,0 +1,4 @@
require_extension('A');
require_extension(EXT_ZACAS);
require_extension(EXT_ZABHA);
WRITE_RD((sreg_t)(int8_t)(MMU.amo_compare_and_swap<uint8_t>(RS1, RD, RS2)));

3
riscv/insns/amomax_b.h

@ -0,0 +1,3 @@
require_extension('A');
require_extension(EXT_ZABHA);
WRITE_RD((sreg_t)(int8_t)(MMU.amo<uint8_t>(RS1, [&](int8_t lhs) { return std::max(lhs, int8_t(RS2)); })));

3
riscv/insns/amomaxu_b.h

@ -0,0 +1,3 @@
require_extension('A');
require_extension(EXT_ZABHA);
WRITE_RD((sreg_t)(int8_t)(MMU.amo<uint8_t>(RS1, [&](uint8_t lhs) { return std::max(lhs, uint8_t(RS2)); })));

3
riscv/insns/amomin_b.h

@ -0,0 +1,3 @@
require_extension('A');
require_extension(EXT_ZABHA);
WRITE_RD((sreg_t)(int8_t)(MMU.amo<uint8_t>(RS1, [&](int8_t lhs) { return std::min(lhs, int8_t(RS2)); })));

3
riscv/insns/amominu_b.h

@ -0,0 +1,3 @@
require_extension('A');
require_extension(EXT_ZABHA);
WRITE_RD((sreg_t)(int8_t)(MMU.amo<uint8_t>(RS1, [&](uint8_t lhs) { return std::min(lhs, uint8_t(RS2)); })));

3
riscv/insns/amoor_b.h

@ -0,0 +1,3 @@
require_extension('A');
require_extension(EXT_ZABHA);
WRITE_RD((sreg_t)(int8_t)(MMU.amo<uint8_t>(RS1, [&](uint8_t lhs) { return lhs | RS2; })));

3
riscv/insns/amoswap_b.h

@ -0,0 +1,3 @@
require_extension('A');
require_extension(EXT_ZABHA);
WRITE_RD((sreg_t)(int8_t)(MMU.amo<uint8_t>(RS1, [&](uint8_t UNUSED lhs) { return RS2; })));

3
riscv/insns/amoxor_b.h

@ -0,0 +1,3 @@
require_extension('A');
require_extension(EXT_ZABHA);
WRITE_RD((sreg_t)(int8_t)(MMU.amo<uint8_t>(RS1, [&](uint8_t lhs) { return lhs ^ RS2; })));
Loading…
Cancel
Save