From c222b3b6a4b8a0a587ec9147c8e6735000947bbe Mon Sep 17 00:00:00 2001 From: Stephen Williams Date: Fri, 21 Nov 2014 16:51:59 -0800 Subject: [PATCH] Minor improvements to the %split/vec4 instruction. --- vvp/vthread.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/vvp/vthread.cc b/vvp/vthread.cc index 720f06d38..99ac90a6c 100644 --- a/vvp/vthread.cc +++ b/vvp/vthread.cc @@ -5065,18 +5065,21 @@ bool of_SHIFTR_S(vthread_t thr, vvp_code_t cp) /* * %split/vec4 + * Pop 1 value, + * Take bits from the lsb, + * Push the remaining msb, + * Push the lsb. */ bool of_SPLIT_VEC4(vthread_t thr, vvp_code_t cp) { unsigned lsb_wid = cp->number; - vvp_vector4_t val = thr->pop_vec4(); + vvp_vector4_t&val = thr->peek_vec4(); assert(lsb_wid < val.size()); vvp_vector4_t lsb = val.subvalue(0, lsb_wid); - vvp_vector4_t msb = val.subvalue(lsb_wid, val.size()-lsb_wid); + val = val.subvalue(lsb_wid, val.size()-lsb_wid); - thr->push_vec4(msb); thr->push_vec4(lsb); return true; }