1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 19:42:54 +02:00
llvm-mirror/include/llvm/Target
Oliver Stannard 1a1cf03fd4 [AArch64] Improve v8.1-A code-gen for atomic load-and
Armv8.1-A added an atomic load-clear instruction (which performs bitwise
and with the complement of it's operand), but not a load-and
instruction. Our current code-generation for atomic load-and always
inserts an MVN instruction to invert its argument, even if it could be
folded into a constant or another instruction.

This adds lowering early in selection DAG to convert a load-and
operation into an xor with -1 and a load-clear, allowing the normal DAG
optimisations to work on it.

To do this, I've had to add a new ISD opcode, ATOMIC_LOAD_CLR. I don't
see any easy way to do this with an AArch64-specific ISD node, because
the code-generation for atomic operations assumes the SDNodes are of
type AtomicSDNode.

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

Differential revision: https://reviews.llvm.org/D42478

llvm-svn: 324908
2018-02-12 17:03:11 +00:00
..
GlobalISel [GlobalISel][TableGen] Add support for SDNodeXForm 2018-01-16 18:44:05 +00:00
GenericOpcodes.td Revert r319691: [globalisel][tablegen] Split atomic load/store into separate opcode and enable for AArch64. 2017-12-05 05:52:07 +00:00
Target.td [TableGen] Give the option of tolerating duplicate register names 2017-12-07 09:51:55 +00:00
TargetCallingConv.td
TargetIntrinsicInfo.h GlobalISel: support translation of intrinsic calls. 2016-07-29 22:32:36 +00:00
TargetItinerary.td [NFC] Fix comment of class InstrStage 2018-02-12 15:02:49 +00:00
TargetMachine.h Add a TargetOption to enable/disable GlobalISel 2018-01-17 22:34:21 +00:00
TargetOptions.h Add a TargetOption to enable/disable GlobalISel 2018-01-17 22:34:21 +00:00
TargetSchedule.td [TargetSchedule] Expose sub-units of a ProcResGroup in MCProcResourceDesc. 2018-02-08 08:46:48 +00:00
TargetSelectionDAG.td [AArch64] Improve v8.1-A code-gen for atomic load-and 2018-02-12 17:03:11 +00:00