In essentially all occurrences of adaptor constructions in the codebase, an instance of the op is available and only a different value range is being used. Nevertheless, one had to perform the ritual of calling and pass getAttrDictionary(), getProperties and getRegions manually.
This patch changes that by teaching TableGen to generate a new constructor in the adaptor that is constructable using GenericAdaptor(valueRange, op). The (discardable) attr dictionary, properties and the regions are then taken directly from the passed op, with only the value range being taken from the first parameter.
This simplifies a lot of code and also guarantees that all the various getters of the adaptor work in all scenarios.
Does the API rely on deduplication of the template arguments? Otherwise, the SetVector doesn't make much sense.