Home | History | Annotate | Download | only in arm64
      1 %default {"opcode":"shl"}
      2     /*
      3      * 64-bit shift operation.
      4      *
      5      * For: shl-long, shr-long, ushr-long
      6      */
      7     /* binop vAA, vBB, vCC */
      8     FETCH w0, 1                         // w0<- CCBB
      9     lsr      w3, wINST, #8               // w3<- AA
     10     lsr      w2, w0, #8                  // w2<- CC
     11     GET_VREG w2, w2                     // w2<- vCC (shift count)
     12     and      w1, w0, #255                // w1<- BB
     13     GET_VREG_WIDE x1, w1                // x1<- vBB
     14     FETCH_ADVANCE_INST 2                // advance rPC, load rINST
     15     $opcode  x0, x1, x2                 // Do the shift. Only low 6 bits of x2 are used.
     16     GET_INST_OPCODE ip                  // extract opcode from rINST
     17     SET_VREG_WIDE x0, w3                // vAA<- x0
     18     GOTO_OPCODE ip                      // jump to next instruction
     19     /* 11-14 instructions */
     20