Commits

David Schneider committed a5909f2

correctly support floats in (get/set)arrayitem

Comments (0)

Files changed (1)

pypy/jit/backend/arm/opassembler.py

             self.mc.ADD_ri(r.ip.value, scale_loc.value, ofs.value)
             scale_loc = r.ip
 
-        if scale.value == 4:
+        if scale.value == 3:
             assert value_loc.is_vfp_reg()
+            if scale_loc.is_reg():
+                self.mc.ADD_rr(r.ip.value, base_loc.value, scale_loc.value)
+                base_loc = r.ip
+                scale_loc = locations.imm(0)
             self.mc.VSTR(value_loc.value, base_loc.value, scale_loc.value, cond=fcond)
         elif scale.value == 2:
             self.mc.STR_rr(value_loc.value, base_loc.value, scale_loc.value, cond=fcond)
             self.mc.ADD_ri(r.ip.value, scale_loc.value, imm=ofs.value)
             scale_loc = r.ip
 
-        if scale.value == 4:
+        if scale.value == 3:
             assert res.is_vfp_reg()
+            if scale_loc.is_reg():
+                self.mc.ADD_rr(r.ip.value, base_loc.value, scale_loc.value)
+                base_loc = r.ip
+                scale_loc = locations.imm(0)
             self.mc.VLDR(res.value, base_loc.value, scale_loc.value, cond=fcond)
         elif scale.value == 2:
             self.mc.LDR_rr(res.value, base_loc.value, scale_loc.value, cond=fcond)