This is the first of three patches which creates stubs used for
authorReed Kotler <rkotler@mips.com>
Tue, 14 May 2013 02:00:24 +0000 (02:00 +0000)
committerReed Kotler <rkotler@mips.com>
Tue, 14 May 2013 02:00:24 +0000 (02:00 +0000)
commit2c4657d9b7b83c1b000fd3da6a2a14de7843eb23
tree0616a9cc57b7ebe7d3224ac6c09f9b9362dd204e
parent5ec6d1a9cdf1318aa951a0ab81703706aeeac71f
This is the first of three patches which creates stubs used for
Mips16/32 floating point interoperability.

When Mips16 code calls external functions that would normally have some
of its parameters or return values passed in floating point registers,
it needs (Mips32) helper functions to do this because while in Mips16 mode
there is no ability to access the floating point registers.

In Pic mode, this is done with a set of predefined functions in libc.
This case is already handled in llvm for Mips16.

In static relocation mode, for efficiency reasons, the compiler generates
stubs that the linker will use if it turns out that the external function
is a Mips32 function. (If it's Mips16, then it does not need the helper
stubs).

These stubs are identically named and the linker knows about these tricks
and will not create multiple copies and will delete them if they are not
needed.

llvm-svn: 181753
llvm/lib/Target/Mips/Mips16HardFloat.cpp
llvm/test/CodeGen/Mips/hf16call32.ll [new file with mode: 0644]