hotspot/src/cpu/x86/vm/assembler_x86.cpp
void MacroAssembler::sign_extend_short(Register reg) {
{- -------------------------------------------
(1) コード生成:
* movswl 命令が使える環境の場合:
「movswl(movsx) 命令を使う」
* そうではない場合:
「shll(shl) で 24bit 左シフトした後, sarl(sar) で上位 32bit を 0 クリアしながら 24bit 算術右シフト」
---------------------------------------- -}
if (LP64_ONLY(true ||) VM_Version::is_P6()) {
movswl(reg, reg); // movsxw
} else {
shll(reg, 16);
sarl(reg, 16);
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.