reimplement support for GS and FS relative address space matching
authorChris Lattner <sabre@nondot.org>
Tue, 21 Sep 2010 22:07:31 +0000 (22:07 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 21 Sep 2010 22:07:31 +0000 (22:07 +0000)
commitb86faa17a4e574580ad029a8082a27ead2fa6013
treee49960eee23ef494c053e074ac4eab6700c1bda6
parent67aff164c039765e3ec19e5a31659250c8427dfb
reimplement support for GS and FS relative address space matching
by having X86DAGToDAGISel::SelectAddr get passed in the parent node
of the operand match (the load/store/atomic op) and having it get
the address space from that, instead of having special FS/GS addr
mode operations that require duplicating the entire instruction set
to support.

This makes FS and GS relative accesses *far* more predictable and
work much better.  It also simplifies the X86 backend a bit, more
to come.

There is still a pending issue with nodes like ISD::PREFETCH and
X86ISD::FLD, which really should be MemSDNode's but aren't.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114491 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelDAGToDAG.cpp
lib/Target/X86/X86Instr64bit.td
lib/Target/X86/X86InstrInfo.td