Change order of tablegen generated fast-isel instruction code to be
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Fri, 14 Nov 2014 21:05:45 +0000 (21:05 +0000)
committerBill Schmidt <wschmidt@linux.vnet.ibm.com>
Fri, 14 Nov 2014 21:05:45 +0000 (21:05 +0000)
commit6536b834f864aed3abb866718457602e4f4336cb
treef58264bbe36d67d37d2f2a5b3589022c9cda3d09
parent99b3234323c81abd974e98ac226388d4b6b955e5
Change order of tablegen generated fast-isel instruction code to be
based on instruction complexity

The order that tablegen fast-isel instruction code is generated is
currently based on the text of the predicate (using string
less-than). This patch changes this to instead use the instruction
complexity. Because the complexities are not unique a C++ multimap is
used instead of a map.

This fixes the problem where code with no predicate always comes out
first (the empty string always compares as less than all other
strings) thus making the code with predicates dead code. See the FMUL
code in PPCFastISel.cpp for an example. It also more closely matches
the normal codegen ordering. Some error checking in the tablegen
fast-isel code is fixed as well.

Patch by Bill Seurer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222038 91177308-0d34-0410-b5e6-96231b3b80d8
utils/TableGen/FastISelEmitter.cpp