Displaying 20 results from an estimated 500 matches similar to: "Custom lower multiple return values"
2009 Dec 09
2
[LLVMdev] Unsigned int multiplication using UMUL_LOHI
Hello,
I'm having trouble getting LLVM to use UMUL_LOHI instead of MUL for
unsigned integers. In the TargetLowering constructor I have:
setOperationAction(ISD::MUL, MVT::i32, Expand);
setOperationAction(ISD::SMUL_LOHI, MVT::i32, Legal);
setOperationAction(ISD::UMUL_LOHI, MVT::i32, Legal);
The problem seems to be with the code in LegalizeOp() in LegalizeDAG.cpp.
Here's a snipet of
2009 Nov 13
3
[LLVMdev] legalize dag problem
Hi
I am running into a legalize dag issue after custom lowering a
load. If someone can give me pointers that would be great. I am using
llvm 2.6
When custom lowering a load, the following code gets executed.
Tmp1 = TLI.LowerOperation(Tmp3, DAG);
if (Tmp1.getNode()) {
Tmp3 = LegalizeOp(Tmp1);
Tmp4 = LegalizeOp(Tmp1.getValue(1)); <----------------- what
2014 Sep 26
2
[LLVMdev] Use of custom operations after DAG legalization
I've been working on a backend for a 16-bit microcontroller and I've just updated my base from LLVM 3.4 to LLVM 3.5.0. This threw up a regression failure in my test suite, and having tracked down the cause, I'm now confused about the DAG legalization and optimization process which I thought I understood. I'd be really grateful for advice on whether I've misunderstood how
2008 Sep 12
3
[LLVMdev] Difficulty with reusing DAG nodes.
I'm trying to implement *MUL_LOHI for my processor.
My processor has mulxss (e.g.) that gives the 32 high bits of a 64 bit
multiply.
I tried this in ios2ISelDAGToDAG.cpp:
/// Mul/Div with two results
case ISD::SMUL_LOHI:
case ISD::UMUL_LOHI: {
SDValue Op1 = Node->getOperand(0);
SDValue Op2 = Node->getOperand(1);
AddToISelQueue(Op1);
2009 Nov 13
0
[LLVMdev] legalize dag problem
> My problem is that the second call asserts inside legalize ops at
> ResultVals[Op.getResNo()]; b'cos ResultVals has only 1 element and
> Op.resno is 0.
Looks like you lowered the load improperly. It should return 2 values:
the value loaded and a chain.
--
With best regards, Anton Korobeynikov
Faculty of Mathematics and Mechanics, Saint Petersburg State University
2009 Nov 13
1
[LLVMdev] legalize dag problem
thanks for the help ..I do add the chain and the result.
My code is like this ...
SDValue Ops[] = { load->getChain(), load->getOperand(1),
load->getBasePtr(), des };
DAG.getNode(CustomOpc, NodeTys, Ops, 4);
thanks again!
shrey
On Thu, Nov 12, 2009 at 4:41 PM, Anton Korobeynikov
<anton at korobeynikov.info> wrote:
>> My problem is that the second call asserts inside
2014 Nov 26
2
[LLVMdev] crash with large structure values on the stack
Hello,
This example input crashes if you run it through llc on x86.
[begin example]
; ModuleID = 'test'
%struct_2 = type { [90000 x %struct_1] }
%struct_1 = type { i8 }
define void @testFcn(%struct_2 %in1) {
testFcn_entry:
%in1_ = alloca %struct_2
store %struct_2 %in1, %struct_2* %in1_, align 8
%localStruct_ = alloca %struct_2
store %struct_2 %in1, %struct_2* %localStruct_,
2012 Mar 24
0
[LLVMdev] DAG type Legalizer bug?
The following looks like a bug in the legalizer to me.
DAGTypeLegalizer::SplitRes_MERGE_VALUES(SDNode*N, unsigned ResNo, SDValue& Lo, SDValue& Hi) {
SDValue Op = DisintegrateMERGE_VALUES(N, ResNo);
GetSplitOp(Op, Lo, Hi);
}
DisintegrateMERGE_VALUE() returns SDValue(N, ResNo), where N is the MERGE_VALUE node itself.
Then GetSplitOp() tries to retrieve split result for N from the
2010 Sep 09
2
[LLVMdev] Possible missed optimization? 2.0
>>Note that the isCommutable flag is only really useful for two-address
instructions. If the two inputs are not constrained, nothing is really won
by swapping them.
Ahh i see, good to know that.
>> Does the -view-*-dags output look correct?
They do look correct, there are three Xmul_lohi blocks, one returns the low
part copied into R14 and the rest of combinations get added and merged
2016 Feb 24
2
Invalid number for the given node in SelectionDAG
I'm trying to replace SDIvRem (whch returns two i16 types) with a custom
that returns i32 or i16. I am getting the Assertion (!Node || ResNo <
Node->getNumValues() && "Invalid result number for the given node!")
Seems that it doesn't like returning one value but how do you return more
than one value?
I am doing this in the LowerOperation for the case SDIVREM and a
2011 Sep 05
0
[LLVMdev] arithmetical operands signedness
Hi Christophe,
On 05/09/11 18:35, Christophe de Dinechin wrote:
>
> On 5 sept. 2011, at 17:48, Duncan Sands wrote:
>
>> since the result of a multiply doesn't depend on the signedness, I find it
>> strange that your target differentiates between them. What I'm saying is
>> that if you have (say) two i32 numbers a and b and you do a signed multiply:
>>
2008 Sep 27
1
[PATCH 2/6 v3] PCI: add new general functions
Centralize capability related functions into several new functions and put PCI resource definitions into an enum.
Cc: Jesse Barnes <jbarnes at virtuousgeek.org>
Cc: Randy Dunlap <randy.dunlap at oracle.com>
Cc: Grant Grundler <grundler at parisc-linux.org>
Cc: Alex Chiang <achiang at hp.com>
Cc: Matthew Wilcox <matthew at wil.cx>
Cc: Roland Dreier <rdreier at
2008 Sep 27
1
[PATCH 2/6 v3] PCI: add new general functions
Centralize capability related functions into several new functions and put PCI resource definitions into an enum.
Cc: Jesse Barnes <jbarnes at virtuousgeek.org>
Cc: Randy Dunlap <randy.dunlap at oracle.com>
Cc: Grant Grundler <grundler at parisc-linux.org>
Cc: Alex Chiang <achiang at hp.com>
Cc: Matthew Wilcox <matthew at wil.cx>
Cc: Roland Dreier <rdreier at
2008 Dec 18
2
[LLVMdev] Doubts about lowering of UMUL_LOHI
Hi,
When expanding multiply operation in LegalizeTypes LLVM generates some
nodes such as UMUL_LOHI (please refer file LegalizeIntegerTypes.cpp -
function - ExpandIntegerResult). However while lowering this operation
in LegalizeDAG (please refer file LegalizeDAG.cpp - function -
LegalizeOp) the comment says
"These nodes will only be produced by target-specific lowering.....".
2008 Aug 12
0
SR-IOV: patches are available for Linux kernel [1/4]
[PATCH 1/4] PCI: export pci_read_base and add pci_update_base
Export pci_read_base; add pci_update_base to for PCI BAR update.
Signed-off-by: Yu Zhao <yu.zhao at intel.com>
Signed-off-by: Eddie Dong <eddie.dong at intel.com>
---
drivers/pci/probe.c | 25 ++++++++--------
drivers/pci/setup-res.c | 74 +++++++++++++++++++++++++++--------------------
include/linux/pci.h |
2008 Aug 12
0
SR-IOV: patches are available for Linux kernel [1/4]
[PATCH 1/4] PCI: export pci_read_base and add pci_update_base
Export pci_read_base; add pci_update_base to for PCI BAR update.
Signed-off-by: Yu Zhao <yu.zhao at intel.com>
Signed-off-by: Eddie Dong <eddie.dong at intel.com>
---
drivers/pci/probe.c | 25 ++++++++--------
drivers/pci/setup-res.c | 74 +++++++++++++++++++++++++++--------------------
include/linux/pci.h |
2008 Aug 12
0
SR-IOV: patches are available for Linux kernel [1/4]
[PATCH 1/4] PCI: export pci_read_base and add pci_update_base
Export pci_read_base; add pci_update_base to for PCI BAR update.
Signed-off-by: Yu Zhao <yu.zhao at intel.com>
Signed-off-by: Eddie Dong <eddie.dong at intel.com>
---
drivers/pci/probe.c | 25 ++++++++--------
drivers/pci/setup-res.c | 74 +++++++++++++++++++++++++++--------------------
include/linux/pci.h |
2008 Sep 01
1
[PATCH 1/4 v2] PCI: introduce new base functions
Some basic changes to allocation bus range, MMIO resource for SR-IOV device.
And add new sysfs entry to hotplug core to pass parameter to a slot, which will be used by SR-IOV code.
Signed-off-by: Yu Zhao <yu.zhao at intel.com>
Signed-off-by: Eddie Dong <eddie.dong at intel.com>
---
drivers/pci/bus.c | 63 +++++++++++++-------------
2008 Sep 01
1
[PATCH 1/4 v2] PCI: introduce new base functions
Some basic changes to allocation bus range, MMIO resource for SR-IOV device.
And add new sysfs entry to hotplug core to pass parameter to a slot, which will be used by SR-IOV code.
Signed-off-by: Yu Zhao <yu.zhao at intel.com>
Signed-off-by: Eddie Dong <eddie.dong at intel.com>
---
drivers/pci/bus.c | 63 +++++++++++++-------------
2008 Sep 01
1
[PATCH 1/4 v2] PCI: introduce new base functions
Some basic changes to allocation bus range, MMIO resource for SR-IOV device.
And add new sysfs entry to hotplug core to pass parameter to a slot, which will be used by SR-IOV code.
Signed-off-by: Yu Zhao <yu.zhao at intel.com>
Signed-off-by: Eddie Dong <eddie.dong at intel.com>
---
drivers/pci/bus.c | 63 +++++++++++++-------------