Avoid high-latency false CPSR dependencies even for tMOVSi.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 4 Apr 2013 18:25:36 +0000 (18:25 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 4 Apr 2013 18:25:36 +0000 (18:25 +0000)
commitee27cac9fac622d3198d4a53130f04653ad09d37
tree7777dc92a31f1b687a9d603eb3a7820b3626af27
parent5622eaeffef44dd09a1dd061299d6c02d9ad4099
Avoid high-latency false CPSR dependencies even for tMOVSi.

The Thumb2SizeReduction pass avoids false CPSR dependencies, except it
still aggressively creates tMOVi8 instructions because they are so
common.

Avoid creating false CPSR dependencies even for tMOVi8 instructions when
the the CPSR flags are known to have high latency. This allows integer
computation to overlap floating point computations.

Also process blocks in a reverse post-order and propagate high-latency
flags to successors.

<rdar://problem/13468102>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178773 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/Thumb2SizeReduction.cpp
test/CodeGen/ARM/avoid-cpsr-rmw.ll