%default {"wide":"0"} | |
/* | |
* Generic 32-bit "shift/2addr" operation. | |
*/ | |
/* shift/2addr vA, vB */ | |
movl rINST, %ecx # ecx <- BA | |
sarl $$4, %ecx # ecx <- B | |
GET_VREG %ecx, %rcx # ecx <- vBB | |
andb $$0xf, rINSTbl # rINST <- A | |
.if $wide | |
GET_WIDE_VREG %rax, rINSTq # rax <- vAA | |
$instr # ex: sarl %cl, %eax | |
SET_WIDE_VREG %rax, rINSTq | |
.else | |
GET_VREG %eax, rINSTq # eax <- vAA | |
$instr # ex: sarl %cl, %eax | |
SET_VREG %eax, rINSTq | |
.endif | |
ADVANCE_PC_FETCH_AND_GOTO_NEXT 1 |