Displaying 20 results from an estimated 35 matches for "sdtcisvt".
Did you mean:
sdtcisint
2017 Sep 15
2
Changes to 'ADJCALLSTACK*' and 'callseq_*' between LLVM v4.0 and v5.0
...Reg 0x15c9bb988, Register:i32 %I18,
0x15c9bb578
0x15c9bb9f0: i32 = Register %I18
0x15c9bb578: i32,ch,glue = CopyFromReg 0x15c967b38,
Register:i32 %vreg0
0x15c9bb510: i32 = Register %vreg0
My TD for this has:
def SDT_MYCallSeqStart : SDCallSeqStart<[SDTCisVT<0, i32>, SDTCisVT<1,
i32>]>;
def SDT_MYCallSeqEnd : SDCallSeqStart<[SDTCisVT<0, i32>, SDTCisVT<1,
i32>]>;
def MYCallseqStart : SDNode<"ISD::CALLSEQ_START", SDT_MYCallSeqStart,
[SDNPHasChain, SDNPOutGlue]>;...
2017 Sep 15
0
Changes to 'ADJCALLSTACK*' and 'callseq_*' between LLVM v4.0 and v5.0
...15c9bb578
> 0x15c9bb9f0: i32 = Register %I18
> 0x15c9bb578: i32,ch,glue = CopyFromReg 0x15c967b38,
> Register:i32 %vreg0
> 0x15c9bb510: i32 = Register %vreg0
>
> My TD for this has:
>
> def SDT_MYCallSeqStart : SDCallSeqStart<[SDTCisVT<0, i32>, SDTCisVT<1,
> i32>]>;
> def SDT_MYCallSeqEnd : SDCallSeqStart<[SDTCisVT<0, i32>, SDTCisVT<1,
> i32>]>;
> def MYCallseqStart : SDNode<"ISD::CALLSEQ_START", SDT_MYCallSeqStart,
> [SDNPHas...
2017 Sep 19
1
Changes to 'ADJCALLSTACK*' and 'callseq_*' between LLVM v4.0 and v5.0
...r as I can tell, my implementation is pretty much identical to all of the in-tree targets, but I’m missing something and can’t see what it is. I have simplified my TD description to just:
def MyCallseqStart : SDNode<"ISD::CALLSEQ_START",
SDCallSeqStart<[SDTCisVT<0, i32>, SDTCisVT<1, i32>]>,
[SDNPHasChain, SDNPOutGlue]>;
def MyCallseqEnd : SDNode<"ISD::CALLSEQ_END",
SDCallSeqEnd<[SDTCisVT<0, i32>, SDTCisVT<1, i32>]>,
[SDNPHasChain...
2016 Mar 28
0
RFC: atomic operations on SI+
...U/SIInstrInfo.td
> @@ -114,6 +114,15 @@ def SItbuffer_store : SDNode<"AMDGPUISD::TBUFFER_STORE_FORMAT",
> [SDNPMayStore, SDNPMemOperand, SDNPHasChain]
> >;
>
> +def SIcmp_swap : SDNode<"AMDGPUISD::CMP_SWAP",
> + SDTypeProfile<1, 2,
> + [SDTCisVT<0, v2i32>, // return value (should be i32)
> + SDTCisVT<1, i64>, // address
> + SDTCisVT<2, v2i32> // src followed by cmp
> + ]>,
> + [SDNPMayLoad, SDNPMayStore, SDNPMemOperand, SDNPHasChain]
> +>;
> +
> def SIload_input : SDNode<&qu...
2016 Mar 25
2
RFC: atomic operations on SI+
Hi Tom, Matt,
I'm working on a project that needs few coherent atomic operations (HSA
mode: load, store, compare-and-swap) for std::atomic_uint in HCC.
the attached patch implements atomic compare and swap for SI+
(untested). I tried to stay within what was available, but there are
few issues that I was unsure how to address:
1.) it currently uses v2i32 for both input and output. This
2009 Feb 19
1
[LLVMdev] help: about how to use tblgen to constraint operand.
I define a pattern to move two 32bits gpr to 64bits fpr. like arm instructure fmdrr.
But I need to use an even/odd register pair to save its 2 operands.
I define in mytarget.td:
myfmdrr:
SDTypeProfile<1, 2, [SDTCisVT<0, f64>, SDTCisVT<1, i32>,
SDTCisSameAs<1, 2>]>;
def my_fmdrr : ...........
def myFMDRR : ....
(outs FPR: $result), ins(GPR: $op1, GPR:$op2 )
[(setFPR: $result, (my_fmdrr GPR: $op1, GPR:$op2) )]
I create myfmdrr instructure in...
2010 Nov 08
2
[LLVMdev] Creating tablegen patterns for intrinsics with no return value.
...structions. If the instruction has a return value I am able to correctly match it, but if I try to create some tablegen code that has no return value, the instruction gets deleted.
Here is my profile/node/pattern.
Profile:
def SDTIL_BinAtomNoRet : SDTypeProfile<0, 3, [
SDTCisPtrTy<0>, SDTCisVT<1, i32>, SDTCisVT<2, i32>
]>;
Node:
def atom_g_add_noret : SDNode<"AMDILISD::ATOM_G_ADD_NORET", SDTIL_BinAtomNoRet, [SDNPHasChain]>;
Pattern:
def ATOM_G_ADD_NORET : BinAtomNoRet<IL_OP_UAV_ADD,
"_id($id)", atom_g_add_noret>;
I am Loweri...
2013 Apr 12
1
[LLVMdev] Problem with Store of i8 in a global address
...om Hexagon the following, adapting it to my registers:
- In ISelLowering.h: CONST32 and CONST32_GP
- In ISelLowering.cpp: LowerGlobalAddress
- In TargetObjectFile.cpp: isGlobalInSmallSection
- In InstrInfo.td:
def SDTmyCONST32 : SDTypeProfile<1, 1, [
SDTCisVT<0, i32>,
SDTCisVT<1, i32>,
SDTCisPtrTy<0>]>;
def myCONST32 : SDNode<"myISD::CONST32", SDTmyCONST32>;
def myCONST32_GP : SDNode<"myISD::CONST32_GP", SDTmy...
2012 Oct 06
2
[LLVMdev] Pairing Registers on a Target Similar to Mips?
...lass is easy enough to implement in the
RegisterInfo.td file.
The next thing I wanted to do is create a Pseudo-Element similar to the
ExtractElementF64 in mips. I added the following Code to InstrFPU.td (and
added the CopyF64 ISD to another file):
def SDT_MipsCopyF64 : SDTypeProfile<1, 1, [SDTCisVT<0, i64>,
SDTCisVT<1, f64>]>;
def MipsCopyF64 : SDNode<"MIPSISD::CopyF64",
SDT_MIPSCopyF64>;
I also changed CPU64Regs to CPU64PRegs ( My 64 bit paired register class)
in the DMFC1 rule f...
2007 Jun 14
1
[LLVMdev] Node definitions, Pseudo ops and lowering SELECT/COND_BRANCH to branch instructions
...ipermail/llvmdev/2006-October/006892.html
but was wondering if anyone could comment on this process in a little
more detail.
I presume I need to define various target independent nodes, like below ...
def SDT_SABREcondbr : SDTypeProfile<0,3, // no result, 3 operands,
rega, regb, immediate
[ SDTCisVT<1,i32>, SDTCisVT<2,OtherVT> ]>;
def SABREcondbranch: SDNode <"SABREISD::COND_BRANCH" , SDT_SABREcondbr,
[SDNPHasChain]>;
def COND_BRANCH: Pseudo<(ops IntRegs:$a, IntRegs:$b, target:$dst),
"${:comment}COND_BRANCH $a, $b, $dst...
2010 Nov 08
0
[LLVMdev] Creating tablegen patterns for intrinsics with no return value.
...r an existing example, have a look at the memory barrier instruction definitions for the ARM target (DMB and DMB_MCR in ARMInstrInfo.td).
Regards,
Jim
>
> Here is my profile/node/pattern.
> Profile:
> def SDTIL_BinAtomNoRet : SDTypeProfile<0, 3, [
> SDTCisPtrTy<0>, SDTCisVT<1, i32>, SDTCisVT<2, i32>
> ]>;
> Node:
> def atom_g_add_noret : SDNode<"AMDILISD::ATOM_G_ADD_NORET", SDTIL_BinAtomNoRet, [SDNPHasChain]>;
>
> Pattern:
> def ATOM_G_ADD_NORET : BinAtomNoRet<IL_OP_UAV_ADD,
> "_id($id)",...
2009 Feb 20
2
[LLVMdev] help: about how to use tblgen to constraint operand.
...'s. In other cases, they are copies.
Evan
On Feb 19, 2009, at 2:00 AM, 任坤 wrote:
I define a pattern to move two 32bits gpr to 64bits fpr. like arm instructure fmdrr.
But I need to use an even/odd register pair to save its 2 operands.
I define in mytarget.td:
myfmdrr:
SDTypeProfile<1, 2, [SDTCisVT<0, f64>, SDTCisVT<1, i32>,
SDTCisSameAs<1, 2>]>;
def my_fmdrr : ...........
def myFMDRR : ....
(outs FPR: $result), ins(GPR: $op1, GPR:$op2 )
[(setFPR: $result, (my_fmdrr GPR: $op1, GPR:$op2) )]
I create myfmdrr instructure in...
2010 Nov 08
1
[LLVMdev] Creating tablegen patterns for intrinsics with no return value.
...0x8502eb8, 0x8502f40
I probably have other issues, but solving this should help me solve other issues.
Thanks again,
Micah
>
> >
> > Here is my profile/node/pattern.
> > Profile:
> > def SDTIL_BinAtomNoRet : SDTypeProfile<0, 3, [
> > SDTCisPtrTy<0>, SDTCisVT<1, i32>, SDTCisVT<2, i32>
> > ]>;
> > Node:
> > def atom_g_add_noret : SDNode<"AMDILISD::ATOM_G_ADD_NORET",
> SDTIL_BinAtomNoRet, [SDNPHasChain]>;
> >
> > Pattern:
> > def ATOM_G_ADD_NORET : BinAtomNoRet<IL_OP_UAV_ADD,...
2016 Feb 03
2
New register class and patterns
...[SDTCisSameAs<0, 1>]>;
>
>
> I think for setting an implicit register, you still need to have 1 result
> here.
>
> If you look at SDTX86CmpPTest, I think this is similar to what you are
> trying to do.
>
> -Matt
>
def SDTX86CmpPTest : SDTypeProfile<1, 2, [SDTCisVT<0, i32>,
SDTCisVec<1>,
SDTCisSameAs<2, 1>]>;
This is confusing to me. This tells me that there is 1 result but and 2
operands. But then it says that operands 2 and 1 are of the same type,
SDTCi...
2008 Jul 10
2
[LLVMdev] Implementing llvm.atomic.cmp.swap.i32 on PowerPC
...1, isBarrier = 1 in
def TCRETURNdi8 :Pseudo< (outs),
Index: lib/Target/PowerPC/PPCInstrInfo.td
===================================================================
--- lib/Target/PowerPC/PPCInstrInfo.td (revision 52957)
+++ lib/Target/PowerPC/PPCInstrInfo.td (working copy)
@@ -42,17 +42,23 @@
SDTCisVT<0, i32>, SDTCisPtrTy<1>, SDTCisVT<2, OtherVT>, SDTCisVT<3, OtherVT>
]>;
-
-def SDT_PPClarx : SDTypeProfile<1, 2, [
- SDTCisInt<0>, SDTCisPtrTy<1>, SDTCisVT<2, i32>
+def SDT_PPCatomic_load_add : SDTypeProfile<1, 2, [
+ SDTCisInt<0>, SDTCi...
2012 Oct 09
0
[LLVMdev] Pairing Registers on a Target Similar to Mips?
...in the
> RegisterInfo.td file.
>
> The next thing I wanted to do is create a Pseudo-Element similar to the
> ExtractElementF64 in mips. I added the following Code to InstrFPU.td (and
> added the CopyF64 ISD to another file):
>
> def SDT_MipsCopyF64 : SDTypeProfile<1, 1, [SDTCisVT<0, i64>,
> SDTCisVT<1, f64>]>;
>
> def MipsCopyF64 : SDNode<"MIPSISD::CopyF64",
> SDT_MIPSCopyF64>;
>
> I also changed CPU64Regs to CPU64PRegs ( My 64 bit paired registe...
2009 Feb 20
0
[LLVMdev] help: about how to use tblgen to constraint operand.
...2:00 AM, 任坤 wrote:
>
>> I define a pattern to move two 32bits gpr to 64bits fpr. like arm
>> instructure fmdrr.
>> But I need to use an even/odd register pair to save its 2 operands.
>> I define in mytarget.td:
>>
>> myfmdrr:
>> SDTypeProfile<1, 2, [SDTCisVT<0, f64>, SDTCisVT<1, i32>,
>> SDTCisSameAs<1, 2>]>;
>> def my_fmdrr : ...........
>> def myFMDRR : ....
>> (outs FPR: $result), ins(GPR: $op1, GPR:$op2 )
>> [(setFPR: $result, (my_fmdrr GPR: $op1, GP...
2008 Jul 08
0
[LLVMdev] Implementing llvm.atomic.cmp.swap.i32 on PowerPC
PPCTargetLowering::EmitInstrWithCustomInserter has a reference
to the current MachineFunction for other purposes. Can you use
MachineFunction::getRegInfo instead?
Dan
On Jul 8, 2008, at 1:56 PM, Gary Benson wrote:
> Would it be acceptable to change MachineInstr::getRegInfo from private
> to public so I can use it from
> PPCTargetLowering::EmitInstrWithCustomInserter?
>
>
2008 Jul 11
2
[LLVMdev] Implementing llvm.atomic.cmp.swap.i32 on PowerPC
...1, isBarrier = 1 in
def TCRETURNdi8 :Pseudo< (outs),
Index: lib/Target/PowerPC/PPCInstrInfo.td
===================================================================
--- lib/Target/PowerPC/PPCInstrInfo.td (revision 53464)
+++ lib/Target/PowerPC/PPCInstrInfo.td (working copy)
@@ -42,17 +42,23 @@
SDTCisVT<0, i32>, SDTCisPtrTy<1>, SDTCisVT<2, OtherVT>, SDTCisVT<3, OtherVT>
]>;
-
-def SDT_PPClarx : SDTypeProfile<1, 2, [
- SDTCisInt<0>, SDTCisPtrTy<1>, SDTCisVT<2, i32>
+def SDT_PPCatomic_load_add : SDTypeProfile<1, 2, [
+ SDTCisInt<0>, SDTCi...
2008 Jul 11
0
[LLVMdev] Implementing llvm.atomic.cmp.swap.i32 on PowerPC
Hi Gary,
This does not patch cleanly for me (PPCISelLowering.cpp). Can you
prepare a updated patch?
Thanks,
Evan
On Jul 10, 2008, at 11:45 AM, Gary Benson wrote:
> Cool, that worked. New patch attached...
>
> Cheers,
> Gary
>
> Evan Cheng wrote:
>> Just cast both values to const TargetRegisterClass*.
>>
>> Evan
>>
>> On Jul 10, 2008, at 7:36