Page MenuHomePhabricator

[AArch64] AArch64CondBrTuningPass generates wrong branch instructions

Authored by labrinea on Jun 28 2017, 1:45 AM.



Some conditional branch instructions generated by this pass are checking the wrong condition code. The instructions TBZ and TBNZ are transformed into B.GE and B.LT instead of B.PL and B.MI respectively. They should only be checking the Negative bit.

Diff Detail


Event Timeline

labrinea created this revision.Jun 28 2017, 1:45 AM
gberry accepted this revision.Jun 28 2017, 7:02 AM

Good catch. @mcrosier These test could probably be improved a little by making clear which way the branch was going by checking for the store instruction before the ret.

This revision is now accepted and ready to land.Jun 28 2017, 7:02 AM
gberry added inline comments.Jun 28 2017, 7:12 AM
25 ↗(On Diff #104359)

This comment should be fixed.

This revision was automatically updated to reflect the committed changes.
mcrosier edited edge metadata.Jun 28 2017, 11:01 AM

Thanks for the fix, Alexandros!

I'll improve the test cases shortly, Geoff.

25 ↗(On Diff #104359)

I'll update this shortly.