[PATCH 5/7] AArch64 - disable CB[N]Z TB[N]Z when tracking speculation
Richard Earnshaw
Richard.Earnshaw@arm.com
Mon Jul 9 16:39:00 GMT 2018
The CB[N]Z and TB[N]Z instructions do not expose the comparison through
the condition code flags. This makes it impossible to track speculative
execution through such a branch. We can handle this relatively easily
by simply disabling the patterns in this case.
A side effect of this is that the split patterns for the atomic operations
need to also avoid generating these instructions. They mostly have simple
fall-backs for this already.
* config/aarch64/aarch64.md (cb<optab><mode>1): Disable when
aarch64_track_speculation is true.
(tb<optab><mode>1): Likewise.
* config/aarch64/aarch64.c (aarch64_split_compare_regs): Do not
generate CB[N]Z when tracking speculation.
(aarch64_split_compare_and_swap): Likewise.
(aarch64_split_atomic_op): Likewise.
---
gcc/config/aarch64/aarch64.c | 33 ++++++++++++++++++++++++++++++---
gcc/config/aarch64/aarch64.md | 6 +++---
2 files changed, 33 insertions(+), 6 deletions(-)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0005-AArch64-disable-CB-N-Z-TB-N-Z-when-tracking-speculat.patch
Type: text/x-patch
Size: 3166 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20180709/ff3a8ff0/attachment.bin>
More information about the Gcc-patches
mailing list