Home | History | Annotate | Download | only in x86
      1 %default {"instr1":"","instr2":"","instr3":""}
      2     /*
      3      * Generic 64-bit unary operation.
      4      * Operand in %ecx:%eax
      5      *
      6      * For: neg-long, not-long
      7      */
      8     /* unop vA, vB */
      9     movzbl    rINSTbl,%ecx            # ecx<- BA
     10     sarl      $$4,%ecx                # ecx<- B
     11     andb      $$0xf,rINSTbl           # rINST<- A
     12     GET_VREG_WORD %eax %ecx 0         # eax<- v[B+0]
     13     GET_VREG_WORD %ecx %ecx 1         # ecx<- v[B+1]
     14     $instr1   # ex: negl %eax
     15     $instr2   # ex: adcl $$0,%ecx
     16     $instr3   # ex: negl %ecx
     17     SET_VREG_WORD %eax rINST 0        # v[A+0] <- eax
     18     GET_INST_OPCODE 1 %eax
     19     SET_VREG_WORD %ecx rINST 1        # v[A+1] <- ecx
     20     ADVANCE_PC 1
     21     GOTO_NEXT_R %eax
     22