'Use "arithmetic shift right" as "less than zero"

Is the following:

psrad xmm0, 31        ; arithmetic (sign-extend) shift right

equivalent to:

xorps xmm1, xmm1      ; zero
cmpps xmm0, xmm1, 1   ; less than

I am interested to know, because the shift instruction has lower latency (1 instead of usually 4), at least on Intel chips (somehow a certain table says that Zen cmpps has latency 1).

Are there any reasons not to use the shift instruction?

I suppose psrad will not handle NaNs correctly and maybe will not raise floating point exceptions? (Not that this is a huge concern).

I have heard that switching between floating point and integer operations (still on simd unit) can have an impact, but never could verify that. Would that be a concern?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source