summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
diff options
context:
space:
mode:
authorUlrich Weigand <ulrich.weigand@de.ibm.com>2013-03-26 10:56:22 +0000
committerUlrich Weigand <ulrich.weigand@de.ibm.com>2013-03-26 10:56:22 +0000
commit874fc628dfe0df9d94301906fbd96b39430e3041 (patch)
tree75441a98ebe68a799217bdc5bdc255dd3dfaa23d /llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
parent4a0838863b2517d921f4f1b3494ca415efe76d2e (diff)
downloadbcm5719-llvm-874fc628dfe0df9d94301906fbd96b39430e3041.tar.gz
bcm5719-llvm-874fc628dfe0df9d94301906fbd96b39430e3041.zip
PowerPC: Simplify FADD in round-to-zero mode.
As part of the the sequence generated to implement long double -> int conversions, we need to perform an FADD in round-to-zero mode. This is problematical since the FPSCR is not at all modeled at the SelectionDAG level, and thus there is a risk of getting floating point instructions generated out of sequence with the instructions to modify FPSCR. The current code handles this by somewhat "special" patterns that in part have dummy operands, and/or duplicate existing instructions, making them awkward to handle in the asm parser. This commit changes this by leaving the "FADD in round-to-zero mode" as an atomic operation on the SelectionDAG level, and only split it up into real instructions at the MI level (via custom inserter). Since at *this* level the FPSCR *is* modeled (via the "RM" hard register), much of the "special" stuff can just go away, and the resulting patterns can be used by the asm parser. No significant change in generated code expected. llvm-svn: 178006
Diffstat (limited to 'llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud