1 %verify "executed" 2 /* 3 * Long integer shift, 2addr version. vA is 64-bit value/result, vB is 4 * 32-bit shift distance. 5 */ 6 /* shl-long/2addr vA, vB */ 7 /* ecx gets shift count */ 8 /* Need to spill rIBASE */ 9 /* rINSTw gets AA */ 10 movzbl rINSTbl,%ecx # ecx<- BA 11 andb $$0xf,rINSTbl # rINST<- A 12 GET_VREG_WORD %eax rINST 0 # eax<- v[AA+0] 13 sarl $$4,%ecx # ecx<- B 14 SPILL(rIBASE) 15 GET_VREG_WORD rIBASE rINST 1 # rIBASE<- v[AA+1] 16 GET_VREG_R %ecx %ecx # ecx<- vBB 17 shrdl rIBASE,%eax 18 sarl %cl,rIBASE 19 testb $$32,%cl 20 je 2f 21 movl rIBASE,%eax 22 sarl $$31,rIBASE 23 2: 24 SET_VREG_WORD rIBASE rINST 1 # v[AA+1]<- rIBASE 25 UNSPILL(rIBASE) 26 FETCH_INST_OPCODE 1 %ecx 27 SET_VREG_WORD %eax rINST 0 # v[AA+0]<- eax 28 ADVANCE_PC 1 29 GOTO_NEXT_R %ecx 30