<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:Monospace;
panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-priority:99;
mso-style-link:"Balloon Text Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:8.0pt;
font-family:"Tahoma","sans-serif";}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
span.BalloonTextChar
{mso-style-name:"Balloon Text Char";
mso-style-priority:99;
mso-style-link:"Balloon Text";
font-family:"Tahoma","sans-serif";}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m trying to complete the lowering for a new microcontroller. I’m using LLVM 3.8.<o:p></o:p></p>
<p class="MsoNormal">For now this lowering crashes on ‘Store’ node, which is actually not yet defined.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’ve tried to map the ISel ‘Store’ node to architecture specific instructions.<o:p></o:p></p>
<p class="MsoNormal">I’ve define the following semantic to my architecture specific instructions:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Monospace"> def MOVSUTO_SU_rr : CLPSUInst_rr<0b1000001100,<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Monospace"> (ins SURegisterOperand:$RegA),<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Monospace"> (outs SURegisterOperand:$RegB),<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Monospace">
</span><span lang="FR-BE" style="font-size:10.0pt;font-family:Monospace">[],<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="FR-BE" style="font-size:10.0pt;font-family:Monospace"> "movsuto_su\t$RegA,$RegB","RR",<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span lang="FR-BE" style="font-size:10.0pt;font-family:Monospace">
</span><span style="font-size:10.0pt;font-family:Monospace;color:#1A1A1A">[(store</span><span style="font-size:10.0pt;font-family:Monospace"> (i16 SURegisterOperand:$RegA), i16:$RegB)], NoItinerary><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Monospace"> {<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Monospace"> bits<9> RegA;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Monospace"> bits<9> RegB;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Monospace"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Monospace"> let Inst{19-11} = RegA;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Monospace"> let Inst{8-0} = RegB;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Monospace"> }<o:p></o:p></span></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Monospace">SURegisterOperand are 16 bits operands.</span><o:p></o:p></p>
<p class="MsoNormal">During the generation of ISelection matchers tables, I got the following assertion.<o:p></o:p></p>
<p class="MsoNormal">This assertion start to occur when the pattern is introduced on the
<span style="font-size:10.0pt;font-family:Monospace">MOVSUTO_SU_rr.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Monospace"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Monospace">How to avoid such assertion? What is a concrete type? According to the definition of SURegisterOperand, these are 16 bits signed integer.
</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[ 33%] Building CLPGenDAGISel.inc...<o:p></o:p></p>
<p class="MsoNormal">llvm-tblgen: /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/utils/TableGen/CodeGenDAGPatterns.h:74: llvm::MVT::SimpleValueType llvm::EEVT::TypeSet::getConcrete() const: Assertion `isConcrete() && "Type isn't concrete yet"' failed.<o:p></o:p></p>
<p class="MsoNormal">#0 0x0000000000633741 llvm::sys::PrintStackTrace(llvm::raw_ostream&) /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/lib/Support/Unix/Signals.inc:322:0<o:p></o:p></p>
<p class="MsoNormal">#1 0x0000000000633abd PrintStackTraceSignalHandler(void*) /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/lib/Support/Unix/Signals.inc:380:0<o:p></o:p></p>
<p class="MsoNormal">#2 0x0000000000632242 llvm::sys::RunSignalHandlers() /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/lib/Support/Signals.cpp:44:0<o:p></o:p></p>
<p class="MsoNormal">#3 0x0000000000633259 SignalHandler(int) /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/lib/Support/Unix/Signals.inc:210:0<o:p></o:p></p>
<p class="MsoNormal">#4 0x00000031fec0f790 __restore_rt (/lib64/libpthread.so.0+0x31fec0f790)<o:p></o:p></p>
<p class="MsoNormal">#5 0x00000031fe832625 __GI_raise (/lib64/libc.so.6+0x31fe832625)<o:p></o:p></p>
<p class="MsoNormal">#6 0x00000031fe833e05 __GI_abort (/lib64/libc.so.6+0x31fe833e05)<o:p></o:p></p>
<p class="MsoNormal">#7 0x00000031fe82b74e __assert_fail_base (/lib64/libc.so.6+0x31fe82b74e)<o:p></o:p></p>
<p class="MsoNormal">#8 0x00000031fe82b810 __GI___assert_perror_fail (/lib64/libc.so.6+0x31fe82b810)<o:p></o:p></p>
<p class="MsoNormal">#9 0x000000000047b8fe llvm::EEVT::TypeSet::getConcrete() const /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/utils/TableGen/CodeGenDAGPatterns.h:75:0<o:p></o:p></p>
<p class="MsoNormal">#10 0x000000000047be57 llvm::TreePatternNode::getType(unsigned int) const /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/utils/TableGen/CodeGenDAGPatterns.h:371:0<o:p></o:p></p>
<p class="MsoNormal">#11 0x0000000000523c1d (anonymous namespace)::MatcherGen::EmitResultInstructionAsOperand(llvm::TreePatternNode const*, llvm::SmallVectorImpl<unsigned int>&) /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/utils/TableGen/DAGISelMatcherGen.cpp:844:0<o:p></o:p></p>
<p class="MsoNormal">#12 0x0000000000524608 (anonymous namespace)::MatcherGen::EmitResultOperand(llvm::TreePatternNode const*, llvm::SmallVectorImpl<unsigned int>&) /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/utils/TableGen/DAGISelMatcherGen.cpp:942:0<o:p></o:p></p>
<p class="MsoNormal">#13 0x0000000000524768 (anonymous namespace)::MatcherGen::EmitResultCode() /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/utils/TableGen/DAGISelMatcherGen.cpp:966:0<o:p></o:p></p>
<p class="MsoNormal">#14 0x0000000000524b26 llvm::ConvertPatternToMatcher(llvm::PatternToMatch const&, unsigned int, llvm::CodeGenDAGPatterns const&) /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/utils/TableGen/DAGISelMatcherGen.cpp:1021:0<o:p></o:p></p>
<p class="MsoNormal">#15 0x0000000000510f36 (anonymous namespace)::DAGISelEmitter::run(llvm::raw_ostream&) /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/utils/TableGen/DAGISelEmitter.cpp:153:0<o:p></o:p></p>
<p class="MsoNormal">#16 0x0000000000511089 llvm::EmitDAGISel(llvm::RecordKeeper&, llvm::raw_ostream&) /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/utils/TableGen/DAGISelEmitter.cpp:171:0<o:p></o:p></p>
<p class="MsoNormal">#17 0x00000000005c74fd (anonymous namespace)::LLVMTableGenMain(llvm::raw_ostream&, llvm::RecordKeeper&) /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/utils/TableGen/TableGen.cpp:129:0<o:p></o:p></p>
<p class="MsoNormal">#18 0x000000000065016c llvm::TableGenMain(char*, bool (*)(llvm::raw_ostream&, llvm::RecordKeeper&)) /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/lib/TableGen/Main.cpp:109:0<o:p></o:p></p>
<p class="MsoNormal">#19 0x00000000005c79d5 main /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/utils/TableGen/TableGen.cpp:188:0<o:p></o:p></p>
<p class="MsoNormal">#20 0x00000031fe81ed5d __libc_start_main (/lib64/libc.so.6+0x31fe81ed5d)<o:p></o:p></p>
<p class="MsoNormal">#21 0x0000000000404fb9 _start (/home/dte/Projects/CLP/build_dir/bin/llvm-tblgen+0x404fb9)<o:p></o:p></p>
<p class="MsoNormal">Stack dump:<o:p></o:p></p>
<p class="MsoNormal">0. Program arguments: ../../../bin/llvm-tblgen -gen-dag-isel -I /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/lib/Target/CLP -I /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/lib/Target -I /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/include
/home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/lib/Target/CLP/CLP.td -o /home/dte/Projects/CLP/build_dir/lib/Target/CLP/CLPGenDAGISel.inc.tmp
<o:p></o:p></p>
<p class="MsoNormal">/bin/sh: line 1: 82456 Aborted (core dumped) ../../../bin/llvm-tblgen -gen-dag-isel -I /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/lib/Target/CLP -I /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/lib/Target
-I /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/include /home/dte/Projects/CLP/clp-llvm/trunk/llvm-project/llvm/lib/Target/CLP/CLP.td -o /home/dte/Projects/CLP/build_dir/lib/Target/CLP/CLPGenDAGISel.inc.tmp<o:p></o:p></p>
<p class="MsoNormal">gmake[2]: *** [lib/Target/CLP/CLPGenDAGISel.inc.tmp] Error 134<o:p></o:p></p>
<p class="MsoNormal">gmake[1]: *** [lib/Target/CLP/CMakeFiles/CLPCommonTableGen.dir/all] Error 2<o:p></o:p></p>
<p class="MsoNormal">gmake: *** [all] Error 2<o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:12.0pt;font-family:"Times New Roman","serif""><br>
<br>
<br>
<br>
<br>
<br>
<o:p></o:p></span></p>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="536" style="width:402.0pt">
<tbody>
<tr>
<td style="padding:0cm 0cm 0cm 0cm">
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman","serif""><img width="536" height="49" id="_x0000_i1025" src="http://www.spacebel.be/wp-content/uploads/2011/06/image-sign-sbp.jpg" alt="http://www.spacebel.be/wp-content/uploads/2011/06/image-sign-sbp.jpg"></span><span style="font-size:12.0pt;font-family:"Times New Roman","serif""><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="border:solid silver 1.0pt;padding:0cm 0cm 0cm 0cm">
<p class="MsoNormal" align="center" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:center">
<b><span lang="FR-BE" style="font-size:10.0pt">Dominique Torette</span></b><span lang="FR-BE" style="font-size:10.0pt">
<br>
System Architect<br>
Rue des Chasseurs Ardennais - Liège Science Park - B-4031 Angleur <br>
Tel: +32 (0) 4 361 81 11 - Fax: +32 (0) 4 361 81 20 <br>
</span><span style="font-size:10.0pt"><a href="http://www.spacebel.be/"><span lang="FR-BE" style="color:blue">www.spacebel.be</span></a></span><span lang="FR-BE" style="font-size:12.0pt;font-family:"Times New Roman","serif""><o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span lang="FR-BE"><o:p> </o:p></span></p>
</div>
<br clear="both">
------------------------------------------------------------------------------<BR>
<BR>
E-MAIL DISCLAIMER<BR>
<BR>
The present message may contain confidential and/or legally privileged information. If you are not the intended addressee and in case of a transmission error, please notify the sender immediately and destroy this E-mail. Disclosure, reproduction or distribution of this document and its possible attachments is strictly forbidden.<BR>
<BR>
SPACEBEL denies all liability for incomplete, improper, inaccurate, intercepted, (partly) destroyed, lost and/or belated transmission of the current information given that unencrypted electronic transmission cannot currently be guaranteed to be secure or error free.<BR>
Upon request or in conformity with formal, contractual agreements, an originally signed hard copy will be sent to you to confirm the information contained in this E-mail.<BR>
<BR>
SPACEBEL denies all liability where E-mail is used for private use.<BR>
<BR>
SPACEBEL cannot be held responsible for possible viruses that might corrupt this message and/or your computer system.<BR>
-------------------------------------------------------------------------------<BR>
</body>
</html>