My testing for the widening multiplies patches came back clean. I've committed it upstream, and merged it to Linaro GCC 4.6.
The testing for my Thumb2 constants patches failed (bootstrap failure on ARM), so can't commit that right away. The failure is a SIGSEGV in the stage 2 compiler building it's own libgcc. This is going to be tricky to pin down!
Continued work on widening operations in the GCC middle-end. I now have it doing all the arbitrary width widening operations that I want. I've tested that it didn't do the wrong thing for just about all permutations of input and output types, but I've yet to do anything like a bootstrap test or anything. There's still quite a lot more work to do in tidying it up.
---- Upstream patched requiring review: * NEON scheduling patch http://gcc.gnu.org/ml/gcc-patches/2011-02/msg01431.html