OSDN Git Service

[CodeGen] Split out the notions of MI invariance and MI dereferenceability.
authorJustin Lebar <jlebar@google.com>
Sun, 11 Sep 2016 01:38:58 +0000 (01:38 +0000)
committerJustin Lebar <jlebar@google.com>
Sun, 11 Sep 2016 01:38:58 +0000 (01:38 +0000)
commitc71d5b41efd662fc262220af694474b4a7ebad81
tree5c7a2849cbbd3d53df75ac1e0090801bc1c71edc
parentd9a1d02b59898ce53be73677c73b197be9edd44c
[CodeGen] Split out the notions of MI invariance and MI dereferenceability.

Summary:
An IR load can be invariant, dereferenceable, neither, or both.  But
currently, MI's notion of invariance is IR-invariant &&
IR-dereferenceable.

This patch splits up the notions of invariance and dereferenceability at
the MI level.  It's NFC, so adds some probably-unnecessary
"is-dereferenceable" checks, which we can remove later if desired.

Reviewers: chandlerc, tstellarAMD

Subscribers: jholewinski, arsenm, nemanjai, llvm-commits

Differential Revision: https://reviews.llvm.org/D23371

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281151 91177308-0d34-0410-b5e6-96231b3b80d8
24 files changed:
include/llvm/CodeGen/MachineMemOperand.h
include/llvm/CodeGen/SelectionDAGNodes.h
lib/CodeGen/MIRParser/MILexer.cpp
lib/CodeGen/MIRParser/MILexer.h
lib/CodeGen/MIRParser/MIParser.cpp
lib/CodeGen/MIRPrinter.cpp
lib/CodeGen/MachineInstr.cpp
lib/CodeGen/MachinePipeliner.cpp
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
lib/CodeGen/SelectionDAG/FastISel.cpp
lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
lib/CodeGen/SelectionDAG/SelectionDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/Target/AArch64/AArch64ISelLowering.cpp
lib/Target/AMDGPU/R600ISelLowering.cpp
lib/Target/AMDGPU/SIISelLowering.cpp
lib/Target/ARM/ARMBaseInstrInfo.cpp
lib/Target/ARM/ARMISelLowering.cpp
lib/Target/ARM/ARMInstrInfo.cpp
lib/Target/NVPTX/NVPTXISelLowering.cpp
lib/Target/PowerPC/PPCISelLowering.cpp
lib/Target/PowerPC/PPCISelLowering.h
lib/Target/SystemZ/SystemZISelDAGToDAG.cpp
lib/Target/X86/X86InstrInfo.cpp