[llvm-commits] CVS: llvm/lib/Target/CBackend/Writer.cpp
Chris Lattner
clattner at apple.com
Sun Jan 7 23:17:44 PST 2007
> + // Emit some helper functions for dealing with FCMP instruction's
> + // predicates
> + Out << "static inline int llvm_fcmp_ord(double X, double Y) { ";
> + Out << "return X == X && Y == Y; }\n";
> + Out << "static inline int llvm_fcmp_uno(double X, double Y) { ";
> + Out << "return X != X || Y != Y; }\n";
> + Out << "static inline int llvm_fcmp_ueq(double X, double Y) { ";
> + Out << "return X == Y || X != X || Y != Y; }\n";
These would be more obvious if written as:
return X == Y || llvm_fcmp_uno(X, Y)
> + Out << "static inline int llvm_fcmp_ult(double X, double Y) { ";
> + Out << "return X < Y || X != X || Y != Y; }\n";
> + Out << "static inline int llvm_fcmp_ugt(double X, double Y) { ";
> + Out << "return X > Y || X != X || Y != Y; }\n";
> + Out << "static inline int llvm_fcmp_ule(double X, double Y) { ";
> + Out << "return X <= Y || X != X || Y != Y; }\n";
> + Out << "static inline int llvm_fcmp_uge(double X, double Y) { ";
> + Out << "return X >= Y || X != X || Y != Y; }\n";
> + Out << "static inline int llvm_fcmp_une(double X, double Y) { ";
> + Out << "return X != Y || X != X || Y != Y; }\n";
> + Out << "static inline int llvm_fcmp_oeq(double X, double Y) { ";
> + Out << "return X == Y && X == X && Y == Y; }\n";
> + Out << "static inline int llvm_fcmp_olt(double X, double Y) { ";
> + Out << "return X < Y && X == X && Y == Y; }\n";
> + Out << "static inline int llvm_fcmp_ogt(double X, double Y) { ";
> + Out << "return X > Y && X == X && Y == Y; }\n";
> + Out << "static inline int llvm_fcmp_ole(double X, double Y) { ";
> + Out << "return X <= Y && X == X && Y == Y; }\n";
> + Out << "static inline int llvm_fcmp_oge(double X, double Y) { ";
> + Out << "return X >= Y && X == X && Y == Y; }\n";
You can drop the 2nd and 3rd term of each of thse.
> + Out << "static inline int llvm_fcmp_one(double X, double Y) { ";
> + Out << "return X != Y && X == X && Y == Y; }\n";
This one is needed though.
-Chris
More information about the llvm-commits
mailing list