//===- subzero/src/IceTargetLoweringX8664.def - x86-64 X-macros -*- C++ -*-===// // // The Subzero Code Generator // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file defines certain patterns for lowering to x86-64 target // instructions, in the form of x-macros. // //===----------------------------------------------------------------------===// #ifndef SUBZERO_SRC_ICETARGETLOWERINGX8664_DEF #define SUBZERO_SRC_ICETARGETLOWERINGX8664_DEF #define FCMPX8664_TABLE \ /* <---- scalar comparison ----> <- vector comparison -> */ \ /* val, dflt, swap, C1, C2, swap, predicate */ \ X(False, 0, 0, Br_None, Br_None, 0, Cmpps_Invalid) \ X(Oeq, 0, 0, Br_ne, Br_p, 0, Cmpps_eq) \ X(Ogt, 1, 0, Br_a, Br_None, 1, Cmpps_lt) \ X(Oge, 1, 0, Br_ae, Br_None, 1, Cmpps_le) \ X(Olt, 1, 1, Br_a, Br_None, 0, Cmpps_lt) \ X(Ole, 1, 1, Br_ae, Br_None, 0, Cmpps_le) \ X(One, 1, 0, Br_ne, Br_None, 0, Cmpps_Invalid) \ X(Ord, 1, 0, Br_np, Br_None, 0, Cmpps_ord) \ X(Ueq, 1, 0, Br_e, Br_None, 0, Cmpps_Invalid) \ X(Ugt, 1, 1, Br_b, Br_None, 0, Cmpps_nle) \ X(Uge, 1, 1, Br_be, Br_None, 0, Cmpps_nlt) \ X(Ult, 1, 0, Br_b, Br_None, 1, Cmpps_nle) \ X(Ule, 1, 0, Br_be, Br_None, 1, Cmpps_nlt) \ X(Une, 1, 0, Br_ne, Br_p, 0, Cmpps_neq) \ X(Uno, 1, 0, Br_p, Br_None, 0, Cmpps_unord) \ X(True, 1, 0, Br_None, Br_None, 0, Cmpps_Invalid) \ //#define X(val, dflt, swapS, C1, C2, swapV, pred) #define ICMPX8664_TABLE \ /* val, C_32, C1_64, C2_64, C3_64 */ \ X(Eq, Br_e, Br_None, Br_ne, Br_e) \ X(Ne, Br_ne, Br_ne, Br_None, Br_ne) \ X(Ugt, Br_a, Br_a, Br_b, Br_a) \ X(Uge, Br_ae, Br_a, Br_b, Br_ae) \ X(Ult, Br_b, Br_b, Br_a, Br_b) \ X(Ule, Br_be, Br_b, Br_a, Br_be) \ X(Sgt, Br_g, Br_g, Br_l, Br_a) \ X(Sge, Br_ge, Br_g, Br_l, Br_ae) \ X(Slt, Br_l, Br_l, Br_g, Br_b) \ X(Sle, Br_le, Br_l, Br_g, Br_be) \ //#define X(val, C_32, C1_64, C2_64, C3_64) #endif // SUBZERO_SRC_ICETARGETLOWERINGX8664_DEF