-if(int32_t(RS2) == 0 || (int32_t(RS1) == INT32_MIN && int32_t(RS2) == -1))
- RD = 0;
+require_extension('M');
+require_rv64;
+sreg_t lhs = sext32(RS1);
+sreg_t rhs = sext32(RS2);
+if(rhs == 0)
+ WRITE_RD(lhs);
else
- RD = sext32(int32_t(RS1) % int32_t(RS2));
+ WRITE_RD(sext32(lhs % rhs));