TableGen !eq() Operator Patch

Attached is a patch to implement an !eq() operator in TableGen. We use this
for the AVX specification to allow the user to control what kind of pattern
should be used for a particular instruction def. For example, we use it for
reg-mem instructions to let the user choose between a built-in generic reg-mem
pattern, the same pattern that was used for the reg-reg variant of the
instruction or a custom pattern provided by the user.

It only operates on strings.

An alternative to this would be to implement named parameters in TableGen but
that seems like overkill for this case. Named parameters could be useful in
other areas to reduce template complexity but implementing it is non-trivial
given the widespread assumption in the TableGen sources that template
parameters exactly match up with template arguments.

Comments? Ok to commit?

                            -Dave

eq.patch (4.46 KB)

I can't say if this is really the best answer for AVX, but independently of that the patch looks great, please commit.

-Chris

Ok. I'm sure we'll iterate on the AVX stuff quite a bit.

                         -Dave