diff options
| author | Robert Norton | 2017-03-27 17:00:06 +0100 |
|---|---|---|
| committer | Robert Norton | 2017-03-27 17:01:55 +0100 |
| commit | 1c191c09c458c37453013c26ff39da06f211b38f (patch) | |
| tree | 4d429eaa83da39f776a87490bc7478304842c78a | |
| parent | eb2fdf02e244873ef5d1ac74e37f7b00931e7c2d (diff) | |
fix bitshift operators. I think these should be independent of vector order...
| -rw-r--r-- | src/gen_lib/sail_values.ml | 21 |
1 files changed, 12 insertions, 9 deletions
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 |
