summaryrefslogtreecommitdiff
path: root/aarch64/mono
diff options
context:
space:
mode:
authorBrian Campbell2018-04-20 10:54:01 +0100
committerBrian Campbell2018-04-20 10:56:28 +0100
commitcf3283f176797f9209e3a8b1d5cc76e38f67d471 (patch)
treea18c015cbd0f32765474ddb0ff17b5e39ab0ca7d /aarch64/mono
parent3255724a33ec643bd98a7fbc13cf0624aab7ead3 (diff)
Fix combined sign-extend-slice operation
Diffstat (limited to 'aarch64/mono')
-rw-r--r--aarch64/mono/mono_rewrites.sail2
1 files changed, 1 insertions, 1 deletions
diff --git a/aarch64/mono/mono_rewrites.sail b/aarch64/mono/mono_rewrites.sail
index 82eef96f..c9164b6c 100644
--- a/aarch64/mono/mono_rewrites.sail
+++ b/aarch64/mono/mono_rewrites.sail
@@ -118,7 +118,7 @@ val sext_slice : forall 'n 'm, 'n >= 0 & 'm >= 0.
(bits('n), int, int) -> bits('m) effect pure
function sext_slice(xs,i,l) = {
- let xs = (xs & slice_mask(i,l)) >> i in
+ let xs = arith_shiftright(((xs & slice_mask(i,l)) << ('n - i - l)), 'n - l) in
extsv(xs)
}