   SSE's _mm_cmpord_ps() ?
  Anyone have a clue what this does? The Intel docs say nothing except "compares for ordered". This is the closest I've found to any kind of hint...http://gcc.gnu.org/ml/gcc-bugs/2004-12/msg01666.htmlIt seems to have something to do with whether a float value is NaN, Inf, or one of those special cases... but I don't know why it takes two arguments. It seems like if one of the floats in one of the components is a NaN, then they are "not ordered"...? But that's just from a little experimentation...EDIT: And it still makes no sense to need two arguments in that case...?[Edited by - discman1028 on September 6, 2007 7:40:26 PM]
  I think you've basically got it, looking at the IA reference for that instruction it basically just says that - the relationship is false if either is NaN and true if both arent.  Must have some use :)   ;  Thx for that investigatory work...Well I agree it has use, but why two arguments...? My only thought is that maybe it was just as cheap to throw an "or" operation into the intrinsic, and check two arguments at a time.For my (and most people's?) uses, I'd probably just pass the same argument twice, wrap it, and call it "IsNaN()"...   ;  I've no idea, my initial thought when seeing the instruction was that it meant lexicographically ordered (i.e. bitwise), but the intel docs just say the above.   I'm guessing that it's simply because it was cheap (or free) to do and they had an opcode to spare :)  Either that or theres some functionality to it that we've missed - I'm no SSE guru!   