public final void visit_lshl() {
if (countBytecode) {
counters.getCounter("lshl").inc();
}
final GPR ECX = X86Register.ECX;
final IntItem cnt = vstack.popInt();
final LongItem val = vstack.popLong();
if (cnt.isConstant() && val.isConstant()) {
if (countConstOps) {
counters.getCounter("TODOlshl-const").inc();
}
}
if (!cnt.uses(ECX)) {
val.spillIfUsing(eContext, ECX);
L1AHelper.requestRegister(eContext, ECX, cnt);
cnt.loadTo(eContext, ECX);
}
val.load(eContext);
if (os.isCode32()) {
final GPR v1_lsb = val.getLsbRegister(eContext);
final GPR v1_msb = val.getMsbRegister(eContext);
final Label curInstrLabel = getCurInstrLabel();
os.writeAND(ECX, 63);
os.writeCMP_Const(ECX, 32);
final Label gt32Label = new Label(curInstrLabel + "gt32");