Displaying 11 results from an estimated 11 matches for "unknown_libcall".
2017 Oct 07
2
Bug 20871 -- is there a fix or work around?
...et.hasSinCos()) {
setLibcallName(RTLIB::SINCOS_F32, "sincosf");
This will make the Legalizer choose the brute force approach below:
void DAGTypeLegalizer::ExpandIntRes_MUL(SDNode *N,
SDValue &Lo, SDValue &Hi) {
...
if (LC == RTLIB::UNKNOWN_LIBCALL || !TLI.getLibcallName(LC)) {
// We'll expand the multiplication by brute force because we have no other
// options. This is a trivially-generalized version of the code from
// Hacker's Delight (itself derived from Knuth's Algorithm M from section
// 4.3.1).
------------...
2017 Mar 29
3
clang 4.0.0: Invalid code for builtin floating point function with -mfloat-abi=hard -ffast-math (ARM)
On 29 March 2017 at 02:33, Saleem Abdulrasool <compnerd at compnerd.org> wrote:
> sin/cos are libm functions, and so a libcall to those need to honour the
> floating point ABI requests. The calling convention to be followed there
> should match `-mfloat-abi` (that is, -mfloat-abi=hard => AAPCS/VFP,
> -mfloat-abi=soft => AAPCS).
Exactly, but they're not, and that's
2013 Sep 29
0
[LLVMdev] SDIV >128bit, DAG->DAG error in LegalizeIntegerTypes
I'm getting the following error when trying to SDIV integers greater
than 128bit (on an AMD64 target).
LegalizeIntegerTypes.cpp:2047: void
llvm::DAGTypeLegalizer::ExpandIntRes_SDIV(llvm::SDNode*, llvm::SDValue&,
llvm::SDValue&): Assertion `LC != RTLIB::UNKNOWN_LIBCALL && "Unsupported
SDIV!"' failed.
Stack dump:
0. Running pass 'X86 DAG->DAG Instruction Selection' on function
'@_entry'
However, not all SDIV on such integers fails, the below works:
@a = global i200 undef
@b = global i64 undef
define void @_entry() {...
2009 Dec 01
2
[LLVMdev] Possible bug in ExpandShiftWithUnknownAmountBit
.....
} else {
...
}
if ((Action == TargetLowering::Legal && TLI.isTypeLegal(NVT)) ||
Action == TargetLowering::Custom) { <== False
...
}
if (N->getOpcode() == ISD::SHL) { <== Branch taken
} else if (N->getOpcode() == ISD::SRL) {
...
} else {
...
}
if (LC != RTLIB::UNKNOWN_LIBCALL && TLI.getLibcallName(LC)) { <== Returns
False as I set the lib call name to NULL from the target selection lowering
constructor
...
}
if (!ExpandShiftWithUnknownAmountBit(N, Lo, Hi)) { <== Expand returns true
...
}
Thanks,
Javier
On Tue, 01 Dec 2009 11:07:21 +0100, Duncan Sand...
2009 Dec 01
0
[LLVMdev] Possible bug in ExpandShiftWithUnknownAmountBit
Hi Javier,
> The problem is the implementation of the expansion. Perhaps an example
> can help illustrate better. Take the case of a 64-bit integer shifted
> left by say 6 bits and is decomposed using 32-bit registers. Because 6
> is less than the 32 (the register size) the resulting low part should be
> equal to the source low part shifted left by 6 bits. The current
>
2017 Oct 05
3
Bug 20871 -- is there a fix or work around?
Looks like I have run into the same issue reported in:
https://bugs.llvm.org/show_bug.cgi?id=20871
Is there a fix or work-around for it? The bug report seems to be still open.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171005/46c1282d/attachment.html>
2017 May 19
2
When a libcall will be generated?
Hi All,
I am looking at a linker error under O2:
undefined symbol __lshrdi3
I have two questions here:
1. Does that mean our libgcc (?) doesn't implement __lshrdi3? Or more
generally, why I have
such linker error?
2. Seems some operations are combined, and replaced with __lshrdi3 call.
I am interested in
when such libcall will be generated? Could you show me one
2009 Dec 01
2
[LLVMdev] Possible bug in ExpandShiftWithUnknownAmountBit
Hi Duncan,
The problem is the implementation of the expansion. Perhaps an example
can help illustrate better. Take the case of a 64-bit integer shifted
left by say 6 bits and is decomposed using 32-bit registers. Because 6
is less than the 32 (the register size) the resulting low part should be
equal to the source low part shifted left by 6 bits. The current
implementation places a zero
2009 May 21
0
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
On Wed, May 20, 2009 at 4:55 PM, Dan Gohman <gohman at apple.com> wrote:
> Can you explain why you chose the approach of using a new pass?
> I pictured removing LegalizeDAG's type legalization code would
> mostly consist of finding all the places that use TLI.getTypeAction
> and just deleting code for handling its Expand and Promote. Are you
> anticipating something more
2009 May 20
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
On May 20, 2009, at 1:34 PM, Eli Friedman wrote:
> On Wed, May 20, 2009 at 1:19 PM, Eli Friedman
> <eli.friedman at gmail.com> wrote:
>
>> Per subject, this patch adding an additional pass to handle vector
>>
>> operations; the idea is that this allows removing the code from
>>
>> LegalizeDAG that handles illegal types, which should be a significant
2009 May 21
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
...xpand unsupported unary vector operators by unrolling them.
- if (VT.isVector()) {
- Result = LegalizeOp(UnrollVectorOp(Op));
- break;
- }
+ assert(!VT.isVector() && "Vector should be already expanded!");
RTLIB::Libcall LC = RTLIB::UNKNOWN_LIBCALL;
switch(Node->getOpcode()) {
@@ -3959,11 +3366,7 @@
case ISD::FPOWI: {
MVT VT = Node->getValueType(0);
- // Expand unsupported unary vector operators by unrolling them.
- if (VT.isVector()) {
- Result = LegalizeOp(UnrollVectorOp(Op));
- break;
- }
+ as...