Browse Source

Merge pull request #2134 from sizn-sc/zaamo-zalrsc

Gate Zaamo,Zalrsc instructions behind corresponding extensions, not M…
pull/2137/head
Andrew Waterman 9 months ago
committed by GitHub
parent
commit
a1efcd59b4
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      riscv/insns/amoadd_d.h
  2. 2
      riscv/insns/amoadd_w.h
  3. 2
      riscv/insns/amoand_d.h
  4. 2
      riscv/insns/amoand_w.h
  5. 2
      riscv/insns/amomax_d.h
  6. 2
      riscv/insns/amomax_w.h
  7. 2
      riscv/insns/amomaxu_d.h
  8. 2
      riscv/insns/amomaxu_w.h
  9. 2
      riscv/insns/amomin_d.h
  10. 2
      riscv/insns/amomin_w.h
  11. 2
      riscv/insns/amominu_d.h
  12. 2
      riscv/insns/amominu_w.h
  13. 2
      riscv/insns/amoor_d.h
  14. 2
      riscv/insns/amoor_w.h
  15. 2
      riscv/insns/amoswap_d.h
  16. 2
      riscv/insns/amoswap_w.h
  17. 2
      riscv/insns/amoxor_d.h
  18. 2
      riscv/insns/amoxor_w.h
  19. 2
      riscv/insns/lr_d.h
  20. 2
      riscv/insns/lr_w.h
  21. 2
      riscv/insns/sc_d.h
  22. 2
      riscv/insns/sc_w.h
  23. 2
      riscv/insns/ssamoswap_d.h
  24. 3
      riscv/insns/ssamoswap_w.h

2
riscv/insns/amoadd_d.h

@ -1,3 +1,3 @@
require_extension('A');
require_extension(EXT_ZAAMO);
require_rv64;
WRITE_RD(MMU.amo<uint64_t>(RS1, [&](uint64_t lhs) { return lhs + RS2; }));

2
riscv/insns/amoadd_w.h

@ -1,2 +1,2 @@
require_extension('A');
require_extension(EXT_ZAAMO);
WRITE_RD(sext32(MMU.amo<uint32_t>(RS1, [&](uint32_t lhs) { return lhs + RS2; })));

2
riscv/insns/amoand_d.h

@ -1,3 +1,3 @@
require_extension('A');
require_extension(EXT_ZAAMO);
require_rv64;
WRITE_RD(MMU.amo<uint64_t>(RS1, [&](uint64_t lhs) { return lhs & RS2; }));

2
riscv/insns/amoand_w.h

@ -1,2 +1,2 @@
require_extension('A');
require_extension(EXT_ZAAMO);
WRITE_RD(sext32(MMU.amo<uint32_t>(RS1, [&](uint32_t lhs) { return lhs & RS2; })));

2
riscv/insns/amomax_d.h

@ -1,3 +1,3 @@
require_extension('A');
require_extension(EXT_ZAAMO);
require_rv64;
WRITE_RD(MMU.amo<uint64_t>(RS1, [&](int64_t lhs) { return std::max(lhs, int64_t(RS2)); }));

2
riscv/insns/amomax_w.h

@ -1,2 +1,2 @@
require_extension('A');
require_extension(EXT_ZAAMO);
WRITE_RD(sext32(MMU.amo<uint32_t>(RS1, [&](int32_t lhs) { return std::max(lhs, int32_t(RS2)); })));

2
riscv/insns/amomaxu_d.h

@ -1,3 +1,3 @@
require_extension('A');
require_extension(EXT_ZAAMO);
require_rv64;
WRITE_RD(MMU.amo<uint64_t>(RS1, [&](uint64_t lhs) { return std::max(lhs, RS2); }));

2
riscv/insns/amomaxu_w.h

@ -1,2 +1,2 @@
require_extension('A');
require_extension(EXT_ZAAMO);
WRITE_RD(sext32(MMU.amo<uint32_t>(RS1, [&](uint32_t lhs) { return std::max(lhs, uint32_t(RS2)); })));

2
riscv/insns/amomin_d.h

@ -1,3 +1,3 @@
require_extension('A');
require_extension(EXT_ZAAMO);
require_rv64;
WRITE_RD(MMU.amo<uint64_t>(RS1, [&](int64_t lhs) { return std::min(lhs, int64_t(RS2)); }));

2
riscv/insns/amomin_w.h

@ -1,2 +1,2 @@
require_extension('A');
require_extension(EXT_ZAAMO);
WRITE_RD(sext32(MMU.amo<uint32_t>(RS1, [&](int32_t lhs) { return std::min(lhs, int32_t(RS2)); })));

2
riscv/insns/amominu_d.h

@ -1,3 +1,3 @@
require_extension('A');
require_extension(EXT_ZAAMO);
require_rv64;
WRITE_RD(MMU.amo<uint64_t>(RS1, [&](uint64_t lhs) { return std::min(lhs, RS2); }));

2
riscv/insns/amominu_w.h

@ -1,2 +1,2 @@
require_extension('A');
require_extension(EXT_ZAAMO);
WRITE_RD(sext32(MMU.amo<uint32_t>(RS1, [&](uint32_t lhs) { return std::min(lhs, uint32_t(RS2)); })));

2
riscv/insns/amoor_d.h

@ -1,3 +1,3 @@
require_extension('A');
require_extension(EXT_ZAAMO);
require_rv64;
WRITE_RD(MMU.amo<uint64_t>(RS1, [&](uint64_t lhs) { return lhs | RS2; }));

2
riscv/insns/amoor_w.h

@ -1,2 +1,2 @@
require_extension('A');
require_extension(EXT_ZAAMO);
WRITE_RD(sext32(MMU.amo<uint32_t>(RS1, [&](uint32_t lhs) { return lhs | RS2; })));

2
riscv/insns/amoswap_d.h

@ -1,3 +1,3 @@
require_extension('A');
require_extension(EXT_ZAAMO);
require_rv64;
WRITE_RD(MMU.amo<uint64_t>(RS1, [&](uint64_t UNUSED lhs) { return RS2; }));

2
riscv/insns/amoswap_w.h

@ -1,2 +1,2 @@
require_extension('A');
require_extension(EXT_ZAAMO);
WRITE_RD(sext32(MMU.amo<uint32_t>(RS1, [&](uint32_t UNUSED lhs) { return RS2; })));

2
riscv/insns/amoxor_d.h

@ -1,3 +1,3 @@
require_extension('A');
require_extension(EXT_ZAAMO);
require_rv64;
WRITE_RD(MMU.amo<uint64_t>(RS1, [&](uint64_t lhs) { return lhs ^ RS2; }));

2
riscv/insns/amoxor_w.h

@ -1,2 +1,2 @@
require_extension('A');
require_extension(EXT_ZAAMO);
WRITE_RD(sext32(MMU.amo<uint32_t>(RS1, [&](uint32_t lhs) { return lhs ^ RS2; })));

2
riscv/insns/lr_d.h

@ -1,3 +1,3 @@
require_extension('A');
require_extension(EXT_ZALRSC);
require_rv64;
WRITE_RD(MMU.load_reserved<int64_t>(RS1));

2
riscv/insns/lr_w.h

@ -1,2 +1,2 @@
require_extension('A');
require_extension(EXT_ZALRSC);
WRITE_RD(MMU.load_reserved<int32_t>(RS1));

2
riscv/insns/sc_d.h

@ -1,4 +1,4 @@
require_extension('A');
require_extension(EXT_ZALRSC);
require_rv64;
bool have_reservation = MMU.store_conditional<uint64_t>(RS1, RS2);

2
riscv/insns/sc_w.h

@ -1,4 +1,4 @@
require_extension('A');
require_extension(EXT_ZALRSC);
bool have_reservation = MMU.store_conditional<uint32_t>(RS1, RS2);

2
riscv/insns/ssamoswap_d.h

@ -1,5 +1,5 @@
require_extension(EXT_ZICFISS);
require_extension('A');
require_extension(EXT_ZAAMO);
require_rv64;
DECLARE_XENVCFG_VARS(SSE);

3
riscv/insns/ssamoswap_w.h

@ -1,7 +1,6 @@
require_extension(EXT_ZICFISS);
require_extension('A');
require_extension(EXT_ZAAMO);
DECLARE_XENVCFG_VARS(SSE);
require_envcfg(SSE);
WRITE_RD(sext32(MMU.ssamoswap<uint32_t>(RS1, RS2)));

Loading…
Cancel
Save