diff options
| author | ajax <devnull@localhost> | 2014-07-30 15:48:30 +0200 |
|---|---|---|
| committer | ajax <devnull@localhost> | 2014-07-30 15:48:30 +0200 |
| commit | a38102f1a05a36e95950785e1b2a9354eeef02f2 (patch) | |
| tree | 80b2fa89a45e3009529cfadb62e3335132b03808 | |
| parent | c33451c9e1874a54498c3ad9fda560631c94bb8a (diff) | |
| download | miasm-a38102f1a05a36e95950785e1b2a9354eeef02f2.tar.gz miasm-a38102f1a05a36e95950785e1b2a9354eeef02f2.zip | |
x86 SSE: Refactor code
| -rw-r--r-- | miasm2/arch/x86/sem.py | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py index 318195b7..14ee3d78 100644 --- a/miasm2/arch/x86/sem.py +++ b/miasm2/arch/x86/sem.py @@ -2587,16 +2587,10 @@ def xorps(ir, instr, a, b): def vec_vertical_sem(op, elt_size, reg_size, a, b): assert(reg_size % elt_size == 0) n = reg_size/elt_size - if op == '-': - ops = [(ExprOp('+', ExprSlice(a, i*elt_size, (i+1)*elt_size), - ExprOp('-', ExprSlice(b, i*elt_size, (i+1)*elt_size))), - i*elt_size, - (i+1)*elt_size) for i in xrange(0, n)] - else: - ops = [(ExprOp(op, ExprSlice(a, i*elt_size, (i+1)*elt_size), - ExprSlice(b, i*elt_size, (i+1)*elt_size)), - i*elt_size, - (i+1)*elt_size) for i in xrange(0, n)] + ops = [(ExprOp(op, a[i*elt_size:(i+1)*elt_size], + b[i*elt_size:(i+1)*elt_size]), + i*elt_size, + (i+1)*elt_size) for i in xrange(0, n)] return ExprCompose(ops) def float_vec_vertical_sem(op, elt_size, reg_size, a, b): @@ -2604,9 +2598,9 @@ def float_vec_vertical_sem(op, elt_size, reg_size, a, b): n = reg_size/elt_size ops = [(ExprOp('double_to_int_%d' % elt_size, ExprOp(op, ExprOp('int_%d_to_double' % elt_size, - ExprSlice(a, i*elt_size, (i+1)*elt_size)), + a[i*elt_size:(i+1)*elt_size]), ExprOp('int_%d_to_double' % elt_size, - ExprSlice(b, i*elt_size, (i+1)*elt_size))) + b[i*elt_size:(i+1)*elt_size])) ), i*elt_size, (i+1)*elt_size) for i in xrange(0, n)] return ExprCompose(ops) |