[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 263/437: ARM: Correct wrong offset for load/store of flo
From: |
Andy Wingo |
Subject: |
[Guile-commits] 263/437: ARM: Correct wrong offset for load/store of floats. |
Date: |
Mon, 2 Jul 2018 05:14:33 -0400 (EDT) |
wingo pushed a commit to branch lightning
in repository guile.
commit 72f3e65a6d6ffeeadfb9ba3d5b8980ac2b878a90
Author: pcpa <address@hidden>
Date: Tue Oct 8 01:20:19 2013 -0300
ARM: Correct wrong offset for load/store of floats.
* lib/jit_arm-vfp.c: Correct wrong load/store offset
calculation when the displacement is constant but too
large to use an instruction with an immediate offset.
---
ChangeLog | 6 ++++++
lib/jit_arm-vfp.c | 40 ++++++++++++++++------------------------
2 files changed, 22 insertions(+), 24 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index c81dd88..1fe7608 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-10-08 Paulo Andrade <address@hidden>
+
+ * lib/jit_arm-vfp.c: Correct wrong load/store offset
+ calculation when the displacement is constant but too
+ large to use an instruction with an immediate offset.
+
2013-10-07 Paulo Andrade <address@hidden>
* check/self.c: Extend tests to validate jit_callee_save_p
diff --git a/lib/jit_arm-vfp.c b/lib/jit_arm-vfp.c
index e1e8dfb..c1ee41e 100644
--- a/lib/jit_arm-vfp.c
+++ b/lib/jit_arm-vfp.c
@@ -2096,9 +2096,8 @@ _vfp_ldxi_f(jit_state_t *_jit, jit_int32_t r0,
jit_int32_t r1, jit_word_t i0)
if (jit_fpr_p(r0)) {
if (i0 >= 0) {
assert(!(i0 & 3));
- i0 >>= 2;
- if (i0 < 256)
- VLDR_F32(r0, r1, i0);
+ if (i0 < 1024)
+ VLDR_F32(r0, r1, i0 >> 2);
else {
reg = jit_get_reg(jit_class_gpr);
addi(rn(reg), r1, i0);
@@ -2109,9 +2108,8 @@ _vfp_ldxi_f(jit_state_t *_jit, jit_int32_t r0,
jit_int32_t r1, jit_word_t i0)
else {
i0 = -i0;
assert(!(i0 & 3));
- i0 >>= 2;
- if (i0 < 256)
- VLDRN_F32(r0, r1, i0);
+ if (i0 < 1024)
+ VLDRN_F32(r0, r1, i0 >> 2);
else {
reg = jit_get_reg(jit_class_gpr);
subi(rn(reg), r1, i0);
@@ -2131,9 +2129,8 @@ _vfp_ldxi_d(jit_state_t *_jit, jit_int32_t r0,
jit_int32_t r1, jit_word_t i0)
if (jit_fpr_p(r0)) {
if (i0 >= 0) {
assert(!(i0 & 3));
- i0 >>= 2;
- if (i0 < 256)
- VLDR_F64(r0, r1, i0);
+ if (i0 < 1024)
+ VLDR_F64(r0, r1, i0 >> 2);
else {
reg = jit_get_reg(jit_class_gpr);
addi(rn(reg), r1, i0);
@@ -2144,9 +2141,8 @@ _vfp_ldxi_d(jit_state_t *_jit, jit_int32_t r0,
jit_int32_t r1, jit_word_t i0)
else {
i0 = -i0;
assert(!(i0 & 3));
- i0 >>= 2;
- if (i0 < 256)
- VLDRN_F64(r0, r1, i0);
+ if (i0 < 1024)
+ VLDRN_F64(r0, r1, i0 >> 2);
else {
reg = jit_get_reg(jit_class_gpr);
subi(rn(reg), r1, i0);
@@ -2229,9 +2225,8 @@ _vfp_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t
r0, jit_int32_t r1)
if (jit_fpr_p(r1)) {
if (i0 >= 0) {
assert(!(i0 & 3));
- i0 >>= 2;
- if (i0 < 256)
- VSTR_F32(r1, r0, i0);
+ if (i0 < 1024)
+ VSTR_F32(r1, r0, i0 >> 2);
else {
reg = jit_get_reg(jit_class_gpr);
addi(rn(reg), r0, i0);
@@ -2242,9 +2237,8 @@ _vfp_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t
r0, jit_int32_t r1)
else {
i0 = -i0;
assert(!(i0 & 3));
- i0 >>= 2;
- if (i0 < 256)
- VSTRN_F32(r1, r0, i0);
+ if (i0 < 1024)
+ VSTRN_F32(r1, r0, i0 >> 2);
else {
reg = jit_get_reg(jit_class_gpr);
subi(rn(reg), r0, i0);
@@ -2264,9 +2258,8 @@ _vfp_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t
r0, jit_int32_t r1)
if (jit_fpr_p(r1)) {
if (i0 >= 0) {
assert(!(i0 & 3));
- i0 >>= 2;
- if (i0 < 256)
- VSTR_F64(r1, r0, i0);
+ if (i0 < 0124)
+ VSTR_F64(r1, r0, i0 >> 2);
else {
reg = jit_get_reg(jit_class_gpr);
addi(rn(reg), r0, i0);
@@ -2277,9 +2270,8 @@ _vfp_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t
r0, jit_int32_t r1)
else {
i0 = -i0;
assert(!(i0 & 3));
- i0 >>= 2;
- if (i0 < 256)
- VSTRN_F64(r1, r0, i0);
+ if (i0 < 1024)
+ VSTRN_F64(r1, r0, i0 >> 2);
else {
reg = jit_get_reg(jit_class_gpr);
subi(rn(reg), r0, i0);
- [Guile-commits] 272/437: x86: Correct wrong x87 float indexed store code generation., (continued)
- [Guile-commits] 272/437: x86: Correct wrong x87 float indexed store code generation., Andy Wingo, 2018/07/02
- [Guile-commits] 340/437: ARM: Flush cache page by page, Andy Wingo, 2018/07/02
- [Guile-commits] 339/437: ARM: Correct constants offset check, Andy Wingo, 2018/07/02
- [Guile-commits] 309/437: Do not fail if NULL is passed to init_jit., Andy Wingo, 2018/07/02
- [Guile-commits] 225/437: Second alpha release 1.99a, Andy Wingo, 2018/07/02
- [Guile-commits] 243/437: IA64: Correct code to save/restore r2 used as lightning JIT_FP., Andy Wingo, 2018/07/02
- [Guile-commits] 348/437: S390: Replace s390x filenames with s390, Andy Wingo, 2018/07/02
- [Guile-commits] 376/437: Correct update of on stack vararg double argument pointer, Andy Wingo, 2018/07/02
- [Guile-commits] 378/437: arm: Add initial jit_va_ calls to arm, Andy Wingo, 2018/07/02
- [Guile-commits] 387/437: alpha: Add initial jit_va_ calls to alpha, Andy Wingo, 2018/07/02
- [Guile-commits] 263/437: ARM: Correct wrong offset for load/store of floats.,
Andy Wingo <=
- [Guile-commits] 317/437: Add the new "range" test., Andy Wingo, 2018/07/02
- [Guile-commits] 174/437: Correct off by one label/note name and add align argument to jit_data, Andy Wingo, 2018/07/02
- [Guile-commits] 279/437: Implement and document the new jit_indirect call., Andy Wingo, 2018/07/02
- [Guile-commits] 143/437: Correct testcases in the mips backend., Andy Wingo, 2018/07/02
- [Guile-commits] 322/437: Add assertion to check for register allocation leaks, Andy Wingo, 2018/07/02
- [Guile-commits] 257/437: Correct misplaced check for already visited blocks, Andy Wingo, 2018/07/02
- [Guile-commits] 301/437: GNU lightning 2.0.5 release, Andy Wingo, 2018/07/02
- [Guile-commits] 206/437: Correct jit implementation to pass several test cases., Andy Wingo, 2018/07/02
- [Guile-commits] 297/437: Do not filter -sz.c files in gitignore, Andy Wingo, 2018/07/02
- [Guile-commits] 255/437: IA64: Force sync of instructions in get-jit-size build mode., Andy Wingo, 2018/07/02