|
Ran
|
Jobs
1
|
Files
89
|
Run time
3min
|
Badge
README BADGES
|
push
github
ARM64: Fix LDP/STP fusing for unaligned accesses. Thanks to Peter Cawley. (cherry picked from commit 0fa2f1cbc) The arm64 emitting of load/store operation works incorrectly in the case when at least one offset of load/store to be fused into ldp/stp is misaligned. In this case this misaligning is ignored, and instructions are fused, which leads to loading/storing from/to at least one incorrect address. For example, the following instructions: | stur w0, [x1, #17] | stur w0, [x1, #21] May be fused to the following: | stp w0, w0, [x1, #16] This patch prevents fusion in this case by testing the alignment with the help of bitwise ROR by the alignment value. In case of misaligned offset, the value overflows the 7-bit length mask in the check. The negative immediate (7-bit width including sign bit) is limited by the corresponding addition of `64 << sc` (it is harmless in the case of positive values). Sergey Kaplun: * added the description and the test for the problem Part of tarantool/tarantool#11278 Reviewed-by: Sergey Bronnikov <sergeyb@tarantool.org> Signed-off-by: Sergey Kaplun <skaplun@tarantool.org> (cherry picked from commit 4fd46fab4)
5709 of 6046 branches covered (94.43%)
Branch coverage included in aggregate %.
21787 of 23508 relevant lines covered (92.68%)
3936630.11 hits per line
| Lines | Coverage | ∆ | File |
|---|---|---|---|
| 2 |
91.11 |
-0.32% | src/lj_alloc.c |
| 2 |
88.47 |
0.58% | src/lj_crecord.c |
| 2 |
99.18 |
-0.33% | src/lj_gc.c |
| 2 |
78.44 |
-0.16% | src/lj_opt_fold.c |
| 6 |
94.74 |
-4.31% | src/lj_str.c |
| ID | Job ID | Ran | Files | Coverage | |
|---|---|---|---|---|---|
| 1 | 15994754239.1 | 89 |
93.04 |
GitHub Action Run |
| Coverage | ∆ | File | Lines | Relevant | Covered | Missed | Hits/Line | Branch Hits | Branch Misses |
|---|