Displaying 11 results from an estimated 11 matches for "tricoretargetlow".
2012 Aug 22
2
[LLVMdev] Passing return values on the stack & storing arbitrary sized integers
...t;>>
>>> And the DX and EX registers are defined this way:
>> The regclasses look fine... So, you need to figure out why
>> getRepRegClassFor() returns NULL in this case.
> Well, that's rather easy :-) The register class is not registered in
> the constructor of TriCoreTargetLowering. Maybe, some background is
> missing here:
>
> - I added the ER register class for MVT::i64 and I had to take care of
> quite a lot of stuff as the TriCore does not really support 64-bit
> operations (it just offers these register pairs but almost no
> operations working on t...
2012 Aug 22
0
[LLVMdev] Passing return values on the stack & storing arbitrary sized integers
...sub_odd)];
>> }
>>
>> And the DX and EX registers are defined this way:
> The regclasses look fine... So, you need to figure out why
> getRepRegClassFor() returns NULL in this case.
Well, that's rather easy :-) The register class is not registered in
the constructor of TriCoreTargetLowering. Maybe, some background is
missing here:
- I added the ER register class for MVT::i64 and I had to take care of
quite a lot of stuff as the TriCore does not really support 64-bit
operations (it just offers these register pairs but almost no
operations working on them).
- Eli mentioned that i...
2012 Aug 21
2
[LLVMdev] Passing return values on the stack & storing arbitrary sized integers
Fabian,
> here are the definitions of these register classes:
>
> // Data register class
> def DR : RegisterClass<"TriCore", [i32], 32,
> (add D0, D1, D2, D3, D4, D5, D6, D7,
> D8, D9, D10, D11, D12, D13, D14, D15)>;
>
> // Extended-size data register class
> def ER :
2012 Jun 13
2
[LLVMdev] Instructions working on 64bit registers without true support for 64bit operations
...ceptional operations are division and
multiplication, for instance. In the tablegen files these registers
and the corresponding register class are modelled accordingly and the
instruction selector also selects them.
The paired 64bit register class is however not added within the
constructor of the TriCoreTargetLowering class. So, at some point
GetCostForDef is called for a MVT::i64 in connection with a division
instruction and this call segfaults as there just is no matching
register class available for TriCore.
Unfortunately, just adding the register class for MVT::i64 does not
help either. In that case th...
2012 Aug 15
5
[LLVMdev] More Back-End Porting Troubles
...he zext instruction from i32 to i64. In
principle, this is very easy on the TriCore. Zext the argument in the
lower part of the 64bit register pair and write 0 to higher part.
Finally, these parts are glued together using ISD::BUILD_PAIR.
However, when I try to insert such nodes into the DAG within
TriCoreTargetLowering, I run into an assertion:
llc: /home/scheler/git/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp:704:
void llvm::InstrEmitter::EmitMachineNode(llvm::SDNode*, bool, bool,
llvm::DenseMap<llvm::SDValue, unsigned int>&): Assertion
`NumMIOperands >= II.getNumOperands() && NumMI...
2012 Aug 15
0
[LLVMdev] More Back-End Porting Troubles
...i32 to i64. In
> principle, this is very easy on the TriCore. Zext the argument in the
> lower part of the 64bit register pair and write 0 to higher part.
> Finally, these parts are glued together using ISD::BUILD_PAIR.
> However, when I try to insert such nodes into the DAG within
> TriCoreTargetLowering, I run into an assertion:
>
> llc:
> /home/scheler/git/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp:704:
> void llvm::InstrEmitter::EmitMachineNode(llvm::SDNode*, bool, bool,
> llvm::DenseMap<llvm::SDValue, unsigned int>&): Assertion
> `NumMIOperands >= II.get...
2012 Aug 16
2
[LLVMdev] More Back-End Porting Troubles
...gt; principle, this is very easy on the TriCore. Zext the argument in the
>> lower part of the 64bit register pair and write 0 to higher part.
>> Finally, these parts are glued together using ISD::BUILD_PAIR.
>> However, when I try to insert such nodes into the DAG within
>> TriCoreTargetLowering, I run into an assertion:
>>
>> llc:
>> /home/scheler/git/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp:704:
>> void llvm::InstrEmitter::EmitMachineNode(llvm::SDNode*, bool, bool,
>> llvm::DenseMap<llvm::SDValue, unsigned int>&): Assertion
>> `Num...
2012 Aug 23
0
[LLVMdev] Passing return values on the stack & storing arbitrary sized integers
...EX registers are defined this way:
>>>
>>> The regclasses look fine... So, you need to figure out why
>>> getRepRegClassFor() returns NULL in this case.
>>
>> Well, that's rather easy :-) The register class is not registered in
>> the constructor of TriCoreTargetLowering. Maybe, some background is
>> missing here:
>>
>> - I added the ER register class for MVT::i64 and I had to take care of
>> quite a lot of stuff as the TriCore does not really support 64-bit
>> operations (it just offers these register pairs but almost no
>>...
2012 Aug 23
0
[LLVMdev] Passing return values on the stack & storing arbitrary sized integers
...DX and EX registers are defined this way:
>>>> The regclasses look fine... So, you need to figure out why
>>>> getRepRegClassFor() returns NULL in this case.
>>> Well, that's rather easy :-) The register class is not registered in
>>> the constructor of TriCoreTargetLowering. Maybe, some background is
>>> missing here:
>>>
>>> - I added the ER register class for MVT::i64 and I had to take care of
>>> quite a lot of stuff as the TriCore does not really support 64-bit
>>> operations (it just offers these register pairs bu...
2012 Jun 13
0
[LLVMdev] Instructions working on 64bit registers without true support for 64bit operations
...ion and
> multiplication, for instance. In the tablegen files these registers
> and the corresponding register class are modelled accordingly and the
> instruction selector also selects them.
>
> The paired 64bit register class is however not added within the
> constructor of the TriCoreTargetLowering class. So, at some point
> GetCostForDef is called for a MVT::i64 in connection with a division
> instruction and this call segfaults as there just is no matching
> register class available for TriCore.
>
> Unfortunately, just adding the register class for MVT::i64 does not
>...
2012 Aug 16
0
[LLVMdev] More Back-End Porting Troubles
...is very easy on the TriCore. Zext the argument in the
> >> lower part of the 64bit register pair and write 0 to higher part.
> >> Finally, these parts are glued together using ISD::BUILD_PAIR.
> >> However, when I try to insert such nodes into the DAG within
> >> TriCoreTargetLowering, I run into an assertion:
> >>
> >> llc:
> >> /home/scheler/git/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp:704:
> >> void llvm::InstrEmitter::EmitMachineNode(llvm::SDNode*, bool, bool,
> >> llvm::DenseMap<llvm::SDValue, unsigned int>&)...