1
0
mirror of https://github.com/golang/go synced 2024-11-20 10:34:42 -07:00

cmd/asm: restrict x86 shift ops to 8bit args

Change "yshl" and "yshb" immediate oclass from Yi32 to Yu8.
This forbids:
- negative shift counts
- shift counts that not fit into 8bit

Affects:
  RCL{B,L,Q,W}
  RCR{B,L,Q,W}
  ROL{B,L,Q,W}
  ROR{B,L,Q,W}
  SAL{B,L,Q,W}
  SAR{B,L,Q,W}
  SHL{B,L,Q,W}
  SHR{B,L,Q,W}

Issue #21528 has some additional context about this change.

Change-Id: I60884cb2b41a860820889fcd878ca6f564006b4a
Reviewed-on: https://go-review.googlesource.com/62190
Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
isharipo 2017-09-07 13:30:43 +03:00 committed by Ilya Tocar
parent 9b8964bf2d
commit 5b043abe12

View File

@ -392,13 +392,13 @@ var ycmpl = []ytab{
var yshb = []ytab{ var yshb = []ytab{
{Yi1, Ynone, Ymb, Zo_m, 2}, {Yi1, Ynone, Ymb, Zo_m, 2},
{Yi32, Ynone, Ymb, Zibo_m, 2}, {Yu8, Ynone, Ymb, Zibo_m, 2},
{Ycx, Ynone, Ymb, Zo_m, 2}, {Ycx, Ynone, Ymb, Zo_m, 2},
} }
var yshl = []ytab{ var yshl = []ytab{
{Yi1, Ynone, Yml, Zo_m, 2}, {Yi1, Ynone, Yml, Zo_m, 2},
{Yi32, Ynone, Yml, Zibo_m, 2}, {Yu8, Ynone, Yml, Zibo_m, 2},
{Ycl, Ynone, Yml, Zo_m, 2}, {Ycl, Ynone, Yml, Zo_m, 2},
{Ycx, Ynone, Yml, Zo_m, 2}, {Ycx, Ynone, Yml, Zo_m, 2},
} }