From 1c191c09c458c37453013c26ff39da06f211b38f Mon Sep 17 00:00:00 2001 From: Robert Norton Date: Mon, 27 Mar 2017 17:00:06 +0100 Subject: fix bitshift operators. I think these should be independent of vector order... --- src/gen_lib/sail_values.ml | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/gen_lib/sail_values.ml b/src/gen_lib/sail_values.ml index e8622a09..401f78ae 100644 --- a/src/gen_lib/sail_values.ml +++ b/src/gen_lib/sail_values.ml @@ -840,17 +840,20 @@ let shift_op_vec_int op (l,r) = let len = Array.length array in (match op with | "<<" -> - let right_vec = Vvector(Array.make r Vzero,0,true) in - let left_vec = vector_subrange_int l r (if ord then len + start else start - len) in - vector_concat left_vec right_vec + let left = Array.sub array r (len - r) in + let right = Array.make r Vzero in + let result = Array.append left right in + Vvector(result, start, ord) | ">>" -> - let right_vec = vector_subrange_int l start r in - let left_vec = Vvector(Array.make r Vzero,0,true) in - vector_concat left_vec right_vec + let left = Array.make r Vzero in + let right = Array.sub array 0 (len - r) in + let result = Array.append left right in + Vvector(result, start, ord) | "<<<" -> - let left_vec = vector_subrange_int l r (if ord then len + start else start - len) in - let right_vec = vector_subrange_int l start r in - vector_concat left_vec right_vec + let left = Array.sub array r (len - r) in + let right = Array.sub array 0 r in + let result = Array.append left right in + Vvector(result, start, ord) | _ -> assert false) | _ -> assert false -- cgit v1.2.3