[PATCH] D42477: [AArch64] Improve v8.1-A code-gen for atomic load-subtract

Oliver Stannard via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 24 06:58:52 PST 2018


olista01 created this revision.
olista01 added reviewers: mcrosier, gberry, christof.
Herald added subscribers: kristof.beyls, javed.absar, rengolin, aemerson.

Armv8.1-A added an atomic load-add instruction, but not a load-subtract
instruction. Our current code-generation for atomic load-subtract always
inserts a NEG instruction to negate it's argument, even if it could be
folded into a constant or another instruction.

This adds lowering early in selection DAG to convert a load-subtract
operation into a subtract and a load-add, allowing the normal DAG
optimisations to work on it.

I've left the old tablegen patterns in because they are still needed for
global isel.

Some of the tests in this patch are copied from https://reviews.llvm.org/D35375 by Chad Rosier (which was abandoned).


Repository:
  rL LLVM

https://reviews.llvm.org/D42477

Files:
  lib/Target/AArch64/AArch64ISelLowering.cpp
  lib/Target/AArch64/AArch64ISelLowering.h
  test/CodeGen/AArch64/atomic-ops-lse.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42477.131261.patch
Type: text/x-patch
Size: 6169 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180124/9d7e0d8f/attachment.bin>


More information about the llvm-commits mailing list