Home | History | Annotate | Download | only in x86_64
      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