Avoid write-after-write issue hazards for Cortex-A9.
authorBob Wilson <bob.wilson@apple.com>
Tue, 19 Apr 2011 18:11:45 +0000 (18:11 +0000)
committerBob Wilson <bob.wilson@apple.com>
Tue, 19 Apr 2011 18:11:45 +0000 (18:11 +0000)
commitf6a4d3c2f3e1029af252a0f6999edfa3c2f326ee
treebcf774318218b9378fb7f3390036e5281cbba4d8
parentb34d837397053da8e9bff90dd714e24f2a3b98b3
Avoid write-after-write issue hazards for Cortex-A9.

Add a avoidWriteAfterWrite() target hook to identify register classes that
suffer from write-after-write hazards. For those register classes, try to avoid
writing the same register in two consecutive instructions.

This is currently disabled by default.  We should not spill to avoid hazards!
The command line flag -avoid-waw-hazard can be used to enable waw avoidance.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129772 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Target/TargetRegisterInfo.h
lib/CodeGen/RegAllocLinearScan.cpp
lib/Target/ARM/ARMBaseRegisterInfo.cpp
lib/Target/ARM/ARMBaseRegisterInfo.h
test/CodeGen/ARM/fabss.ll
test/CodeGen/ARM/fadds.ll
test/CodeGen/ARM/fdivs.ll
test/CodeGen/ARM/fmuls.ll
test/CodeGen/ARM/fp_convert.ll