1%default {"preinstr":"", "instr":"", "wide":"0"}
2/*
3 * Generic 32/64-bit unary operation.  Provide an "instr" line that
4 * specifies an instruction that performs "result = op eax".
5 */
6    /* unop vA, vB */
7    movl    rINST, %ecx                     # rcx <- A+
8    sarl    $$4,rINST                       # rINST <- B
9    .if ${wide}
10    GET_WIDE_VREG %rax, rINSTq              # rax <- vB
11    .else
12    GET_VREG %eax, rINSTq                   # eax <- vB
13    .endif
14    andb    $$0xf,%cl                       # ecx <- A
15$preinstr
16$instr
17    .if ${wide}
18    SET_WIDE_VREG %rax, %rcx
19    .else
20    SET_VREG %eax, %rcx
21    .endif
22    ADVANCE_PC_FETCH_AND_GOTO_NEXT 1
23