| * Long integer shift. This is different from the generic 32/64-bit |
| * binary operations because vAA/vBB are 64-bit but vCC (the shift |
| * distance) is 32-bit. Also, Dalvik requires us to mask off the low |
| * 6 bits of the shift distance. x86 shifts automatically mask off |
| * the low 5 bits of %cl, so have to handle the 64 > shiftcount > 31 |
| /* shr-long vAA, vBB, vCC */ |
| /* ecx gets shift count */ |
| movzbl 2(rPC),%eax # eax<- BB |
| movzbl 3(rPC),%ecx # ecx<- CC |
| GET_VREG_WORD(%edx,%eax,1) # edx<- v[BB+1] |
| GET_VREG (%ecx,%ecx) # ecx<- vCC |
| GET_VREG_WORD(%eax,%eax,0) # eax<- v[BB+0] |
| SET_VREG_WORD(%edx,%ecx,1) # v[BB+1]<- edx |
| SET_VREG_WORD(%eax,%ecx,0) # v[BB+0]<- eax |