blob: b860dfddd3e749a4fa54672757a4b38d15411886 [file] [log] [blame]
Bill Buzbee3b0b4b92016-02-02 13:45:36 +00001%default {"opcode":"lsl"}
2 /*
3 * Generic 64-bit shift operation.
4 */
5 /* binop/2addr vA, vB */
6 lsr w1, wINST, #12 // w1<- B
7 ubfx w2, wINST, #8, #4 // w2<- A
8 GET_VREG w1, w1 // x1<- vB
9 GET_VREG_WIDE x0, w2 // x0<- vA
10 FETCH_ADVANCE_INST 1 // advance rPC, load rINST
Vladimir Markoe6220222016-07-20 14:25:30 +010011 $opcode x0, x0, x1 // Do the shift. Only low 6 bits of x1 are used.
Bill Buzbee3b0b4b92016-02-02 13:45:36 +000012 GET_INST_OPCODE ip // extract opcode from rINST
13 SET_VREG_WIDE x0, w2 // vAA<- result
14 GOTO_OPCODE ip // jump to next instruction
15 /* 10-13 instructions */