aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/remuw.h
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@eecs.berkeley.edu>2012-02-15 19:44:24 -0800
committerAndrew Waterman <waterman@eecs.berkeley.edu>2012-02-15 19:44:24 -0800
commite819f852c5eafb457401396d9c3de85cd5870549 (patch)
tree309c14e1158e039f909b4c25b068ac4f99974634 /riscv/insns/remuw.h
parentc12d9358ec36062a9713fd9edfd486e1e345afdf (diff)
downloadspike-e819f852c5eafb457401396d9c3de85cd5870549.zip
spike-e819f852c5eafb457401396d9c3de85cd5870549.tar.gz
spike-e819f852c5eafb457401396d9c3de85cd5870549.tar.bz2
reimplement div[u][w]/rem[u][w]
fixes bugs for inputs not properly sign-extended
Diffstat (limited to 'riscv/insns/remuw.h')
-rw-r--r--riscv/insns/remuw.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/riscv/insns/remuw.h b/riscv/insns/remuw.h
index 1cc015d..aac13fb 100644
--- a/riscv/insns/remuw.h
+++ b/riscv/insns/remuw.h
@@ -1,5 +1,7 @@
require_xpr64;
-if(zext_xprlen(RS2) == 0)
- RD = RS1;
+reg_t lhs = zext32(RS1);
+reg_t rhs = zext32(RS2);
+if(rhs == 0)
+ RD = lhs;
else
- RD = sext32(zext_xprlen(RS1) % zext_xprlen(RS2));
+ RD = sext32(lhs % rhs);