@@ -624,6 +624,9 @@ object (self:'a)
624624 | ARMShiftedReg (r , ARMImmSRT (SRType_LSL, n )) ->
625625 let vreg = floc#env#mk_arm_register_variable r in
626626 Ok (XOp (XLsl , [XVar vreg; int_constant_expr n]))
627+ | ARMShiftedReg (r , ARMImmSRT (SRType_ROR, n )) ->
628+ let vreg = floc#env#mk_arm_register_variable r in
629+ Ok (XOp ((Xf " ror" ), [XVar vreg; int_constant_expr n]))
627630 | ARMShiftedReg (r , ARMRegSRT (SRType_LSL, sr )) ->
628631 let vsreg = floc#env#mk_arm_register_variable sr in
629632 let vreg = floc#env#mk_arm_register_variable r in
@@ -633,6 +636,14 @@ object (self:'a)
633636 let vsreg = floc#env#mk_arm_register_variable sr in
634637 let vreg = floc#env#mk_arm_register_variable r in
635638 Ok (XOp (XLsr , [XVar vreg; XVar vsreg]))
639+ | ARMShiftedReg (r , ARMRegSRT (SRType_ASR, sr )) ->
640+ let vsreg = floc#env#mk_arm_register_variable sr in
641+ let vreg = floc#env#mk_arm_register_variable r in
642+ Ok (XOp (XAsr , [XVar vreg; XVar vsreg]))
643+ | ARMShiftedReg (r , ARMRegSRT (SRType_ROR, sr )) ->
644+ let vsreg = floc#env#mk_arm_register_variable sr in
645+ let vreg = floc#env#mk_arm_register_variable r in
646+ Ok (XOp ((Xf " ror" ), [XVar vreg; XVar vsreg]))
636647 | ARMShiftedReg (_ , srt ) ->
637648 Error [__FILE__ ^ " :" ^ (string_of_int __LINE__) ^ " : "
638649 ^ " Shifted reg: " ^ (register_shift_to_string srt)
0 commit comments