Hi, The main reason we have this issue is that DImode can be treated as a vector of size 1. As a result we do not know whether the shift is an integer or SIMD instruction. One way around this is to never use the SIMD variant, another is to introduce V1DImode for vectors of size 1.
Short term I believe the first option is best - I don't think scalar operations executed as SIMD instructions are useful in general, and these shifts are likely never used in reality, so we're adding a lot of complexity and potential bugs . Long term we need to compute register classes and do instruction selection much earlier so this doesn't increase complexity of register allocation and machine descriptors. Wilco