Displaying 12 results from an estimated 12 matches for "null_frag".
2012 Nov 16
2
[LLVMdev] Operand order in dag pattern matching in td files
...ow example. Consider FMA3 pattern
(simplified).
let Constraints = "$src1 = $dst" in {
multiclass fma3s_rm<bits<8> opc, string OpcodeStr, X86MemOperand x86memop,
RegisterClass RC, ValueType OpVT, PatFrag mem_frag,
SDPatternOperator OpNode = null_frag> {
def r : FMA3<opc, MRMSrcReg, (outs RC:$dst),
(ins RC:$src1, RC:$src2, RC:$src3),
!strconcat(OpcodeStr,
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
[(set RC:$dst,
(...
2012 Nov 16
0
[LLVMdev] Operand order in dag pattern matching in td files
...tern
> (simplified).
>
> let Constraints = "$src1 = $dst" in {
> multiclass fma3s_rm<bits<8> opc, string OpcodeStr, X86MemOperand x86memop,
> RegisterClass RC, ValueType OpVT, PatFrag mem_frag,
> SDPatternOperator OpNode = null_frag> {
>
> def r : FMA3<opc, MRMSrcReg, (outs RC:$dst),
> (ins RC:$src1, RC:$src2, RC:$src3),
> !strconcat(OpcodeStr,
> "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
> [(set RC...
2012 Nov 16
1
[LLVMdev] Operand order in dag pattern matching in td files
You've unfortunately chosen a complex example.
Your second question is needs be answered first. null_frag causes the
pattern to be dropped.
Now having covered that the reason the operands are in the order they are
is because the only instruction that doesn't use null_frag is this one
defm r213 : fma3s_rm<opc213, !strconcat(OpStr, !strconcat("213", PackTy)),
x86me...
2014 Apr 24
3
[LLVMdev] tablegen for fast isel
What is the purpose of tablegen created files for fast-isel?
If I make the following change to Makefile in lib/Target/Mips
BUILT_SOURCES = MipsGenRegisterInfo.inc MipsGenInstrInfo.inc \
MipsGenAsmWriter.inc MipsGenCodeEmitter.inc \
MipsGenDAGISel.inc MipsGenCallingConv.inc \
- MipsGenSubtargetInfo.inc MipsGenMCCodeEmitter.inc \
+
2016 Mar 28
0
RFC: atomic operations on SI+
...012,7 @@ defm BUFFER_ATOMIC_SWAP : MUBUF_Atomic <
> mubuf<0x30, 0x40>, "buffer_atomic_swap", VGPR_32, i32, atomic_swap_global
> >;
> defm BUFFER_ATOMIC_CMPSWAP : MUBUF_Atomic <
> - mubuf<0x31, 0x41>, "buffer_atomic_cmpswap", VReg_64, v2i32, null_frag
> + mubuf<0x31, 0x41>, "buffer_atomic_cmpswap", VReg_64, v2i32, SIcmp_swap
> >;
> defm BUFFER_ATOMIC_ADD : MUBUF_Atomic <
> mubuf<0x32, 0x42>, "buffer_atomic_add", VGPR_32, i32, atomic_add_global
> diff --git a/test/CodeGen/AMDGPU/global_at...
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
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
...[(directStore (dstType (OpNode
srcAReg:$srcA)), addr16:$dstD)]>;
def MEM_MEM : SetADIn<asmstr, memhx, memhx,
[(directStore (dstType (OpNode (srcAType
(load addr16:$srcA)))), addr16:$dstD)]>;
}
defm MOV16Copy_ : AD<"mov16", null_frag, GPRBaseRegs, GPRBaseRegs,
i16, i16, simm16, immSExt16x>;
On Tue, Aug 25, 2015 at 1:02 PM, Ryan Taylor <ryta1203 at gmail.com> wrote:
> Quentin,
>
> 1. I'll take a look, it's also picking the reg class by the
> SimpleValueType and then getting the common subclass. C...
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
...e (OpNode
> srcAReg:$srcA)), addr16:$dstD)]>;
> def MEM_MEM : SetADIn<asmstr, memhx, memhx,
> [(directStore (dstType (OpNode (srcAType
> (load addr16:$srcA)))), addr16:$dstD)]>;
> }
>
> defm MOV16Copy_ : AD<"mov16", null_frag, GPRBaseRegs, GPRBaseRegs,
> i16, i16, simm16, immSExt16x>;
>
>
> What is defining VReg?
> It is AD or is it MOV16Copy?
>
> Also what are the arguments of the multiclass AD that you match?
>
>
> On Tue, Aug 25, 2015 at 1:02 PM, Ryan Taylor <ryta1203 at gmail.com&...
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
...srcA)), addr16:$dstD)]>;
>> def MEM_MEM : SetADIn<asmstr, memhx, memhx,
>> [(directStore (dstType (OpNode (srcAType
>> (load addr16:$srcA)))), addr16:$dstD)]>;
>> }
>>
>> defm MOV16Copy_ : AD<"mov16", null_frag, GPRBaseRegs, GPRBaseRegs,
>> i16, i16, simm16, immSExt16x>;
>>
>>
>> What is defining VReg?
>> It is AD or is it MOV16Copy?
>>
>> Also what are the arguments of the multiclass AD that you match?
>>
>>
>> On Tue, Aug 25, 2015 at 1:02 PM...
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
...t;;
>>> def MEM_MEM : SetADIn<asmstr, memhx, memhx,
>>> [(directStore (dstType (OpNode (srcAType
>>> (load addr16:$srcA)))), addr16:$dstD)]>;
>>> }
>>>
>>> defm MOV16Copy_ : AD<"mov16", null_frag, GPRBaseRegs, GPRBaseRegs,
>>> i16, i16, simm16, immSExt16x>;
>>>
>>>
>>> What is defining VReg?
>>> It is AD or is it MOV16Copy?
>>>
>>> Also what are the arguments of the multiclass AD that you match?
>>>
>>>
>...
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
...def MEM_MEM : SetADIn<asmstr, memhx, memhx,
>>>> [(directStore (dstType (OpNode (srcAType
>>>> (load addr16:$srcA)))), addr16:$dstD)]>;
>>>> }
>>>>
>>>> defm MOV16Copy_ : AD<"mov16", null_frag, GPRBaseRegs,
>>>> GPRBaseRegs, i16, i16, simm16, immSExt16x>;
>>>>
>>>>
>>>> What is defining VReg?
>>>> It is AD or is it MOV16Copy?
>>>>
>>>> Also what are the arguments of the multiclass AD that you match?
&g...
2015 Aug 25
4
[LLVMdev] TableGen Register Class not matching for MI in 3.6
Hi Ryan,
> On Aug 24, 2015, at 6:49 PM, Ryan Taylor <ryta1203 at gmail.com> wrote:
>
> Quentin,
>
> I apologize for the spamming here but in getVR (where VReg is assigned an RC), it calls:
>
> const TargetRegisterClass *RC = TLI->getRegClassFor(Op.getSimpleValueType());
> VReg = MRI->createVirtualRegister(RC);
>
> My question is why is it using the