[FastISel][X86] Add large code model support for materializing floating-point constants.
authorJuergen Ributzka <juergen@apple.com>
Wed, 13 Aug 2014 22:25:35 +0000 (22:25 +0000)
committerJuergen Ributzka <juergen@apple.com>
Wed, 13 Aug 2014 22:25:35 +0000 (22:25 +0000)
commitb677a877c8ae9a52b834e75def8086ea0f54a0a5
treec5de26c2be550da532a75fa45e085a92cf2c0959
parent0701e5d43bce14f30c7793f8c7f970ca8bac16ad
[FastISel][X86] Add large code model support for materializing floating-point constants.

In the large code model for X86 floating-point constants are placed in the
constant pool and materialized by loading from it. Since the constant pool
could be far away, a PC relative load might not work. Therefore we first
materialize the address of the constant pool with a movabsq and then load
from there the floating-point value.

Fixes <rdar://problem/17674628>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215595 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86FastISel.cpp
test/CodeGen/X86/fast-isel-constpool.ll