Phil Tomson via llvm-dev
2016-Jan-13 17:59 UTC
[llvm-dev] Type inference in TableGen DAG patterns
Given the following definitions: def SDT_XSTGMVINI : SDTypeProfile<1, 1, [SDTCisInt<0>]>; def XSTGMVINI : SDNode<"XSTGISD::MVINI", SDT_XSTGMVINI>; def SDT_RELADDR : SDTypeProfile<1, 2, []>; def XSTGRELADDR : SDNode<"XSTGISD::RELADDR", SDT_RELADDR>; let Constraints = "$dst = $addr", Uses= [GRP] in { def RelAddr : XSTGPseudo< (outs GPRC:$dst), //(ins GPRC:$spoff, GPRC:$addr), (ins i64imm:$spoff, i64imm:$addr), "! RELADDR $spoff, $dst", [(set GPRC:$dst, (XSTGRELADDR i64:$spoff, (XSTGMVINI i64:$addr) ) )]>; } When I compile I get: XSTGInstrInfo.td:903:3: error: In RelAddr: Could not infer all types in pattern! def RelAddr : XSTGPseudo< (outs GPRC:$dst), ^ I thought that perhaps I could explicitly add the type in like this: let Constraints = "$dst = $addr", Uses= [GRP] in { def RelAddr : XSTGPseudo< (outs GPRC:$dst), //(ins GPRC:$spoff, GPRC:$addr), (ins i64imm:$spoff, i64imm:$addr), "! RELADDR $spoff, $dst", [(set GPRC:$dst, (XSTGRELADDR i64:$spoff, i64:(XSTGMVINI i64:$addr) ) )]>; } But that causes another problem: XSTGInstrInfo.td:908:73: error: expected variable name in dag literal i64:(XSTGMVINI i64:$addr) ^ How can this be resolved? Phil -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160113/fc307bad/attachment-0001.html>
Krzysztof Parzyszek via llvm-dev
2016-Jan-13 18:26 UTC
[llvm-dev] Type inference in TableGen DAG patterns
On 1/13/2016 11:59 AM, Phil Tomson via llvm-dev wrote:> > XSTGInstrInfo.td:908:73: error: expected variable name in dag literal > > i64:(XSTGMVINI i64:$addr) > ^ > How can this be resolved?Try (i64 (XSTGMVINI ...)) -Krzysztof -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
Phil Tomson via llvm-dev
2016-Jan-13 20:04 UTC
[llvm-dev] Type inference in TableGen DAG patterns
Thanks, that worked. So that's basically a cast, then? I have another question about expanding that pseudo op, but I'll post it separately. Phil On Wed, Jan 13, 2016 at 10:26 AM, Krzysztof Parzyszek via llvm-dev < llvm-dev at lists.llvm.org> wrote:> On 1/13/2016 11:59 AM, Phil Tomson via llvm-dev wrote: > >> >> XSTGInstrInfo.td:908:73: error: expected variable name in dag literal >> >> i64:(XSTGMVINI i64:$addr) >> ^ >> How can this be resolved? >> > > Try (i64 (XSTGMVINI ...)) > > -Krzysztof > > -- > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted > by The Linux Foundation > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160113/7825d68f/attachment.html>
Reasonably Related Threads
- Expanding a PseudoOp and accessing the DAG
- Expanding a PseudoOp and accessing the DAG
- TableGen error message: top-level forms in instruction pattern should have void types
- TableGen error message: top-level forms in instruction pattern should have void types
- TableGen error message: top-level forms in instruction pattern should have void types