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)
commit1876784bb1020c493a28158ce01cd4caf771c823
treef3f1acf18682e46fc0afba6fbd9eaf8eb97e1ee0
parente63d5ed2f98d8f7bd05f4b26b3d88f467cf4a659
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.

llvm-svn: 222038
llvm/utils/TableGen/FastISelEmitter.cpp