> How can you then ever "truncate" from SImode to PSImode? If you use PARTIAL_INT_MODE(), you get a PSImode that has a "default" bitsize (i.e. the value stored in the data structure) that's the same as SImode, that is, 32. There is no way to specify the usable bitsize, so it's "undefined/unspecified" but, IMHO, assumed to be less than the bit size of the parent mode.
One can assert that a PSImode will never have *more* precision than SImode, though, so sign extending SImode to PSImode is never the right thing to do. > btw, what's the relation to fractional int modes? I think fractional_int_mode allows you to specify the precision and byte size, but in my experience, I've had trouble using it, especially if you specify a non-power-of-two byte size.