OSDN Git Service

Infer instruction properties from single-instruction patterns.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 24 Aug 2012 22:46:53 +0000 (22:46 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 24 Aug 2012 22:46:53 +0000 (22:46 +0000)
commit4ad27eda29413d45a98912877ab2706efbc1e86e
tree00cdc3e1b2b10a39826eb59f63bfd08462fb5a35
parent7778ee1ed9f9e8a3aa4911ff4adcf15e46588e03
Infer instruction properties from single-instruction patterns.

Previously, instructions without a primary patterns wouldn't get their
properties inferred. Now, we use all single-instruction patterns for
inference, including 'def : Pat<>' instances.

This causes a lot of instruction flags to change.

- Many instructions no longer have the UnmodeledSideEffects flag because
  their flags are now inferred from a pattern.

- Instructions with intrinsics will get a mayStore flag if they already
  have UnmodeledSideEffects and a mayLoad flag if they already have
  mayStore. This is because intrinsics properties are linear.

- Instructions with atomic_load patterns get a mayStore flag because
  atomic loads can't be reordered. The correct workaround is to create
  pseudo-instructions instead of using normal loads. PR13693.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162614 91177308-0d34-0410-b5e6-96231b3b80d8
test/CodeGen/Hexagon/newvaluejump.ll
test/CodeGen/Hexagon/newvaluestore.ll
utils/TableGen/CodeGenDAGPatterns.cpp