Note that in general we're trying to avoid introducing target dependent stuff into the gimple/SSA optimizers. We should consider the vectorization code as the exception rather than the rule for this kind of thing.
Well, these exceptions are starting to pile up however. Besides ivopts, which is the very last pass in the tree optimization pipeline, the tree-ssa-math-opts.c pass to optimize reciprocals is already using optabs to guide its optimizations. Every now and then, also, I'm working on moving switch statement expansion to the tree level (which is also target dependent). This will allow VRP to cut dead parts of a switch statement's decision tree, for example, which would be close to impossible on RTL, unless you want to rewrite VRP there.
Paolo