diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2016-10-25 19:53:38 +0200 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2016-10-25 19:53:38 +0200 |
commit | 88c717e497e0e8a2e6df12418833e46c56291724 (patch) | |
tree | e0f3ce4a7bcbfab44e9d2bf664b1895089387e26 /runtime/arm/i64_smulh.S | |
parent | fc8f28be257464c7b169a61b079ba19675f08e35 (diff) | |
download | compcert-88c717e497e0e8a2e6df12418833e46c56291724.tar.gz compcert-88c717e497e0e8a2e6df12418833e46c56291724.zip |
i64_smulh: revert to conditional branches instead of predicated insns
"subslt" changes the flags, affecting the condition of the "sbclt" that follows.
Diffstat (limited to 'runtime/arm/i64_smulh.S')
-rw-r--r-- | runtime/arm/i64_smulh.S | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/runtime/arm/i64_smulh.S b/runtime/arm/i64_smulh.S index 8e721c68..476f51ce 100644 --- a/runtime/arm/i64_smulh.S +++ b/runtime/arm/i64_smulh.S @@ -61,16 +61,16 @@ FUNCTION(__i64_smulh) ADC r6, r6, r5 @@@ subtract X if Y < 0 cmp Reg1HI, #0 - itt lt - subs.lt r7, r7, Reg0LO - sbcs.lt r6, r6, Reg0HI + bge 1f + subs r7, r7, Reg0LO + sbcs r6, r6, Reg0HI @@@ subtract Y if X < 0 - cmp Reg0HI, #0 - itt lt - subs.lt r7, r7, Reg1LO - sbcs.lt r6, r6, Reg1HI +1: cmp Reg0HI, #0 + bge 2f + subs r7, r7, Reg1LO + sbcs r6, r6, Reg1HI @@@ return result in Reg0 pair - mov Reg0LO, r7 +2: mov Reg0LO, r7 mov Reg0HI, r6 pop {r4, r5, r6, r7} bx lr |