<div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important">I’m hitting TableGen errors trying to match the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">smullohi <lhs> <rhs></code> node in TableGen.</p>
<p style="margin:0px 0px 1.2em!important"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">smullohi</code> returns two results, which is the problem. I am not sure how to match against multiple results. The only other nodes to return two operands are <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">umullohi</code>, <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">udivrem</code>, and <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">sdivrem</code>. There are no examples of these in TableGen in tree.</p>
<p style="margin:0px 0px 1.2em!important">The closest I can get is this:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248);white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important">        set (R1, R0, (umullohi GPR8:$lhs, GPR8:$rhs))
</code></pre><p style="margin:0px 0px 1.2em!important">Which fails:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248);white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important">        Assertion failed: (Ops.size() >= NumSrcResults && "Didn't provide enough results"), function EmitResultCode, file /Users/dylanmckay/projects/llvm/avr-llvm/utils/TableGen/DAGISelMatcherGen.cpp, line 989.

0  libLLVMSupport.dylib     0x0000000108e8c47e llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 46

1  libLLVMSupport.dylib     0x0000000108e8c8c9 PrintStackTraceSignalHandler(void*) + 25

2  libLLVMSupport.dylib     0x0000000108e89069 llvm::sys::RunSignalHandlers() + 425

3  libLLVMSupport.dylib     0x0000000108e8cc29 SignalHandler(int) + 345

4  libsystem_platform.dylib 0x00007fff947f5eaa _sigtramp + 26

5  libLLVMSupport.dylib     0x0000000108eafec9 llvm::sys::DynamicLibrary::Invalid + 9361

6  libLLVMSupport.dylib     0x0000000108e8c8eb raise + 27

7  libLLVMSupport.dylib     0x0000000108e8c9a2 abort + 18

8  libLLVMSupport.dylib     0x0000000108e8c981 __assert_rtn + 129

9  llvm-tblgen              0x000000010893f524 (anonymous namespace)::MatcherGen::EmitResultCode() + 964

10 llvm-tblgen              0x000000010893e12f llvm::ConvertPatternToMatcher(llvm::PatternToMatch const&, unsigned int, llvm::CodeGenDAGPatterns const&) + 143

11 llvm-tblgen              0x0000000108927ca5 (anonymous namespace)::DAGISelEmitter::run(llvm::raw_ostream&) + 3205

12 llvm-tblgen              0x0000000108926fd6 llvm::EmitDAGISel(llvm::RecordKeeper&, llvm::raw_ostream&) + 54

13 llvm-tblgen              0x0000000108a6dfc8 (anonymous namespace)::LLVMTableGenMain(llvm::raw_ostream&, llvm::RecordKeeper&) + 328

14 libLLVMTableGen.dylib    0x0000000108fd7cb1 llvm::TableGenMain(char*, bool (*)(llvm::raw_ostream&, llvm::RecordKeeper&)) + 2385

15 llvm-tblgen              0x0000000108a6de5b main + 91

16 libdyld.dylib            0x00007fff946fe5ad start + 1
</code></pre><div title="MDH:SSdtIGhpdHRpbmcgVGFibGVHZW4gZXJyb3JzIHRyeWluZyB0byBtYXRjaCB0aGUgYHNtdWxsb2hp
ICZsdDtsaHMmZ3Q7ICZsdDtyaHMmZ3Q7YCBub2RlIGluIFRhYmxlR2VuLjxkaXY+PGJyPjwvZGl2
PjxkaXY+YHNtdWxsb2hpYCByZXR1cm5zIHR3byByZXN1bHRzLCB3aGljaCBpcyB0aGUgcHJvYmxl
bS4gSSBhbSBub3Qgc3VyZSBob3cgdG8gbWF0Y2ggYWdhaW5zdCBtdWx0aXBsZSByZXN1bHRzLiBU
aGUgb25seSBvdGhlciBub2RlcyB0byByZXR1cm4gdHdvIG9wZXJhbmRzIGFyZSBgdW11bGxvaGlg
LCBgdWRpdnJlbWAsIGFuZCBgc2RpdnJlbWAuIFRoZXJlIGFyZSBubyBleGFtcGxlcyBvZiB0aGVz
ZSBpbiBUYWJsZUdlbiBpbiB0cmVlLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhlIGNsb3Nl
c3QgSSBjYW4gZ2V0IGlzIHRoaXM6PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48
ZGl2PgoKCgoKCgoKPHAgY2xhc3M9IiI+PHNwYW4gY2xhc3M9IiI+c2V0IChSMSwgUjAsICh1bXVs
bG9oaSBHUFI4OiRsaHMsIEdQUjg6JHJocykpPC9zcGFuPjwvcD48L2Rpdj48ZGl2PmBgYDwvZGl2
PjxkaXY+PGJyPjwvZGl2PjxkaXY+V2hpY2ggZmFpbHM6PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp
dj5gYGA8L2Rpdj48ZGl2PgoKCgoKCgoKPHAgY2xhc3M9IiI+PHNwYW4gY2xhc3M9IiI+QXNzZXJ0
aW9uIGZhaWxlZDogKE9wcy5zaXplKCkgJmd0Oz0gTnVtU3JjUmVzdWx0cyAmYW1wOyZhbXA7ICJE
aWRuJ3QgcHJvdmlkZSBlbm91Z2ggcmVzdWx0cyIpLCBmdW5jdGlvbiBFbWl0UmVzdWx0Q29kZSwg
ZmlsZSAvVXNlcnMvZHlsYW5tY2theS9wcm9qZWN0cy9sbHZtL2F2ci1sbHZtL3V0aWxzL1RhYmxl
R2VuL0RBR0lTZWxNYXRjaGVyR2VuLmNwcCwgbGluZSA5ODkuPC9zcGFuPjwvcD4KPHAgY2xhc3M9
IiI+PHNwYW4gY2xhc3M9IiI+MCZuYnNwOyBsaWJMTFZNU3VwcG9ydC5keWxpYiAmbmJzcDsgJm5i
c3A7IDB4MDAwMDAwMDEwOGU4YzQ3ZSBsbHZtOjpzeXM6OlByaW50U3RhY2tUcmFjZShsbHZtOjpy
YXdfb3N0cmVhbSZhbXA7KSArIDQ2PC9zcGFuPjwvcD4KPHAgY2xhc3M9IiI+PHNwYW4gY2xhc3M9
IiI+MSZuYnNwOyBsaWJMTFZNU3VwcG9ydC5keWxpYiAmbmJzcDsgJm5ic3A7IDB4MDAwMDAwMDEw
OGU4YzhjOSBQcmludFN0YWNrVHJhY2VTaWduYWxIYW5kbGVyKHZvaWQqKSArIDI1PC9zcGFuPjwv
cD4KPHAgY2xhc3M9IiI+PHNwYW4gY2xhc3M9IiI+MiZuYnNwOyBsaWJMTFZNU3VwcG9ydC5keWxp
YiAmbmJzcDsgJm5ic3A7IDB4MDAwMDAwMDEwOGU4OTA2OSBsbHZtOjpzeXM6OlJ1blNpZ25hbEhh
bmRsZXJzKCkgKyA0MjU8L3NwYW4+PC9wPgo8cCBjbGFzcz0iIj48c3BhbiBjbGFzcz0iIj4zJm5i
c3A7IGxpYkxMVk1TdXBwb3J0LmR5bGliICZuYnNwOyAmbmJzcDsgMHgwMDAwMDAwMTA4ZThjYzI5
IFNpZ25hbEhhbmRsZXIoaW50KSArIDM0NTwvc3Bhbj48L3A+CjxwIGNsYXNzPSIiPjxzcGFuIGNs
YXNzPSIiPjQmbmJzcDsgbGlic3lzdGVtX3BsYXRmb3JtLmR5bGliIDB4MDAwMDdmZmY5NDdmNWVh
YSBfc2lndHJhbXAgKyAyNjwvc3Bhbj48L3A+CjxwIGNsYXNzPSIiPjxzcGFuIGNsYXNzPSIiPjUm
bmJzcDsgbGliTExWTVN1cHBvcnQuZHlsaWIgJm5ic3A7ICZuYnNwOyAweDAwMDAwMDAxMDhlYWZl
YzkgbGx2bTo6c3lzOjpEeW5hbWljTGlicmFyeTo6SW52YWxpZCArIDkzNjE8L3NwYW4+PC9wPgo8
cCBjbGFzcz0iIj48c3BhbiBjbGFzcz0iIj42Jm5ic3A7IGxpYkxMVk1TdXBwb3J0LmR5bGliICZu
YnNwOyAmbmJzcDsgMHgwMDAwMDAwMTA4ZThjOGViIHJhaXNlICsgMjc8L3NwYW4+PC9wPgo8cCBj
bGFzcz0iIj48c3BhbiBjbGFzcz0iIj43Jm5ic3A7IGxpYkxMVk1TdXBwb3J0LmR5bGliICZuYnNw
OyAmbmJzcDsgMHgwMDAwMDAwMTA4ZThjOWEyIGFib3J0ICsgMTg8L3NwYW4+PC9wPgo8cCBjbGFz
cz0iIj48c3BhbiBjbGFzcz0iIj44Jm5ic3A7IGxpYkxMVk1TdXBwb3J0LmR5bGliICZuYnNwOyAm
bmJzcDsgMHgwMDAwMDAwMTA4ZThjOTgxIF9fYXNzZXJ0X3J0biArIDEyOTwvc3Bhbj48L3A+Cjxw
IGNsYXNzPSIiPjxzcGFuIGNsYXNzPSIiPjkmbmJzcDsgbGx2bS10YmxnZW4mbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgMHgwMDAwMDAwMTA4OTNmNTI0IChh
bm9ueW1vdXMgbmFtZXNwYWNlKTo6TWF0Y2hlckdlbjo6RW1pdFJlc3VsdENvZGUoKSArIDk2NDwv
c3Bhbj48L3A+CjxwIGNsYXNzPSIiPjxzcGFuIGNsYXNzPSIiPjEwIGxsdm0tdGJsZ2VuJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IDB4MDAwMDAwMDEwODkz
ZTEyZiBsbHZtOjpDb252ZXJ0UGF0dGVyblRvTWF0Y2hlcihsbHZtOjpQYXR0ZXJuVG9NYXRjaCBj
b25zdCZhbXA7LCB1bnNpZ25lZCBpbnQsIGxsdm06OkNvZGVHZW5EQUdQYXR0ZXJucyBjb25zdCZh
bXA7KSArIDE0Mzwvc3Bhbj48L3A+CjxwIGNsYXNzPSIiPjxzcGFuIGNsYXNzPSIiPjExIGxsdm0t
dGJsZ2VuJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IDB4
MDAwMDAwMDEwODkyN2NhNSAoYW5vbnltb3VzIG5hbWVzcGFjZSk6OkRBR0lTZWxFbWl0dGVyOjpy
dW4obGx2bTo6cmF3X29zdHJlYW0mYW1wOykgKyAzMjA1PC9zcGFuPjwvcD4KPHAgY2xhc3M9IiI+
PHNwYW4gY2xhc3M9IiI+MTIgbGx2bS10YmxnZW4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgMHgwMDAwMDAwMTA4OTI2ZmQ2IGxsdm06OkVtaXREQUdJU2Vs
KGxsdm06OlJlY29yZEtlZXBlciZhbXA7LCBsbHZtOjpyYXdfb3N0cmVhbSZhbXA7KSArIDU0PC9z
cGFuPjwvcD4KPHAgY2xhc3M9IiI+PHNwYW4gY2xhc3M9IiI+MTMgbGx2bS10YmxnZW4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgMHgwMDAwMDAwMTA4YTZk
ZmM4IChhbm9ueW1vdXMgbmFtZXNwYWNlKTo6TExWTVRhYmxlR2VuTWFpbihsbHZtOjpyYXdfb3N0
cmVhbSZhbXA7LCBsbHZtOjpSZWNvcmRLZWVwZXImYW1wOykgKyAzMjg8L3NwYW4+PC9wPgo8cCBj
bGFzcz0iIj48c3BhbiBjbGFzcz0iIj4xNCBsaWJMTFZNVGFibGVHZW4uZHlsaWImbmJzcDsgJm5i
c3A7IDB4MDAwMDAwMDEwOGZkN2NiMSBsbHZtOjpUYWJsZUdlbk1haW4oY2hhciosIGJvb2wgKCop
KGxsdm06OnJhd19vc3RyZWFtJmFtcDssIGxsdm06OlJlY29yZEtlZXBlciZhbXA7KSkgKyAyMzg1
PC9zcGFuPjwvcD4KPHAgY2xhc3M9IiI+PHNwYW4gY2xhc3M9IiI+MTUgbGx2bS10YmxnZW4mbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgMHgwMDAwMDAwMTA4
YTZkZTViIG1haW4gKyA5MTwvc3Bhbj48L3A+CjxwIGNsYXNzPSIiPjxzcGFuIGNsYXNzPSIiPjE2
IGxpYmR5bGQuZHlsaWImbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAw
eDAwMDA3ZmZmOTQ2ZmU1YWQgc3RhcnQgKyAxPC9zcGFuPjwvcD48L2Rpdj48ZGl2PmBgYDwvZGl2
Pg==" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0">​</div></div></div>