Home | History | Annotate | Download | only in x86_64
      1 %default {"wide":"0"}
      2 /*
      3  * Generic 32-bit "shift/2addr" operation.
      4  */
      5     /* shift/2addr vA, vB */
      6     movl    rINST, %ecx                     # ecx <- BA
      7     sarl    $$4, %ecx                       # ecx <- B
      8     GET_VREG %ecx, %rcx                     # ecx <- vBB
      9     andb    $$0xf, rINSTbl                  # rINST <- A
     10     .if $wide
     11     GET_WIDE_VREG %rax, rINSTq              # rax <- vAA
     12     $instr                                  # ex: sarl %cl, %eax
     13     SET_WIDE_VREG %rax, rINSTq
     14     .else
     15     GET_VREG %eax, rINSTq                   # eax <- vAA
     16     $instr                                  # ex: sarl %cl, %eax
     17     SET_VREG %eax, rINSTq
     18     .endif
     19     ADVANCE_PC_FETCH_AND_GOTO_NEXT 1
     20