OLD | NEW |
---|---|
1 //===- subzero/src/IceTargetLoweringX8632.def - x86-32 X-macros -*- C++ -*-===// | 1 //===- subzero/src/IceTargetLoweringX8632.def - x86-32 X-macros -*- C++ -*-===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file defines certain patterns for lowering to x86-32 target | 10 // This file defines certain patterns for lowering to x86-32 target |
11 // instructions, in the form of x-macros. | 11 // instructions, in the form of x-macros. |
12 // | 12 // |
13 //===----------------------------------------------------------------------===// | 13 //===----------------------------------------------------------------------===// |
14 | 14 |
15 #ifndef SUBZERO_SRC_ICETARGETLOWERINGX8632_DEF | 15 #ifndef SUBZERO_SRC_ICETARGETLOWERINGX8632_DEF |
16 #define SUBZERO_SRC_ICETARGETLOWERINGX8632_DEF | 16 #define SUBZERO_SRC_ICETARGETLOWERINGX8632_DEF |
17 | 17 |
18 #define FCMPX8632_TABLE \ | 18 #define SCALAR_FCMPX8632_TABLE \ |
19 /* val, dflt, swap, C1, C2 */ \ | 19 /* val, dflt, swap, C1, C2 */ \ |
20 X(False, 0, 0, Br_None, Br_None) \ | 20 X(False, 0, 0, Br_None, Br_None) \ |
21 X(Oeq, 0, 0, Br_ne, Br_p) \ | 21 X(Oeq, 0, 0, Br_ne, Br_p) \ |
22 X(Ogt, 1, 0, Br_a, Br_None) \ | 22 X(Ogt, 1, 0, Br_a, Br_None) \ |
23 X(Oge, 1, 0, Br_ae, Br_None) \ | 23 X(Oge, 1, 0, Br_ae, Br_None) \ |
24 X(Olt, 1, 1, Br_a, Br_None) \ | 24 X(Olt, 1, 1, Br_a, Br_None) \ |
25 X(Ole, 1, 1, Br_ae, Br_None) \ | 25 X(Ole, 1, 1, Br_ae, Br_None) \ |
26 X(One, 1, 0, Br_ne, Br_None) \ | 26 X(One, 1, 0, Br_ne, Br_None) \ |
27 X(Ord, 1, 0, Br_np, Br_None) \ | 27 X(Ord, 1, 0, Br_np, Br_None) \ |
28 X(Ueq, 1, 0, Br_e, Br_None) \ | 28 X(Ueq, 1, 0, Br_e, Br_None) \ |
29 X(Ugt, 1, 1, Br_b, Br_None) \ | 29 X(Ugt, 1, 1, Br_b, Br_None) \ |
30 X(Uge, 1, 1, Br_be, Br_None) \ | 30 X(Uge, 1, 1, Br_be, Br_None) \ |
31 X(Ult, 1, 0, Br_b, Br_None) \ | 31 X(Ult, 1, 0, Br_b, Br_None) \ |
32 X(Ule, 1, 0, Br_be, Br_None) \ | 32 X(Ule, 1, 0, Br_be, Br_None) \ |
33 X(Une, 1, 0, Br_ne, Br_p) \ | 33 X(Une, 1, 0, Br_ne, Br_p) \ |
34 X(Uno, 1, 0, Br_p, Br_None) \ | 34 X(Uno, 1, 0, Br_p, Br_None) \ |
35 X(True, 1, 0, Br_None, Br_None) \ | 35 X(True, 1, 0, Br_None, Br_None) \ |
36 //#define X(val, dflt, swap, C1, C2) | 36 //#define X(val, dflt, swap, C1, C2) |
37 | 37 |
38 #define VECTOR_FCMPX8632_TABLE \ | |
Jim Stichnoth
2014/07/24 16:16:19
Can you just add swap and cmpps_predicate columns
wala
2014/07/24 17:13:24
Done.
Also used a single table for IceTargetLower
| |
39 /* val, swap, cmpps predicate */ \ | |
40 X(False, 0, Cmpps_Invalid) \ | |
41 X(Oeq, 0, Cmpps_eq) \ | |
42 X(Ogt, 1, Cmpps_lt) \ | |
43 X(Oge, 1, Cmpps_le) \ | |
44 X(Olt, 0, Cmpps_lt) \ | |
45 X(Ole, 0, Cmpps_le) \ | |
46 X(One, 0, Cmpps_Invalid) \ | |
47 X(Ord, 0, Cmpps_ord) \ | |
48 X(Ueq, 0, Cmpps_Invalid) \ | |
49 X(Ugt, 0, Cmpps_nle) \ | |
50 X(Uge, 0, Cmpps_nlt) \ | |
51 X(Ult, 1, Cmpps_nle) \ | |
52 X(Ule, 1, Cmpps_nlt) \ | |
53 X(Une, 0, Cmpps_neq) \ | |
54 X(Uno, 0, Cmpps_unord) \ | |
55 X(True, 0, Cmpps_Invalid) \ | |
56 //#define X(val, swap, pred) | |
57 | |
38 #define ICMPX8632_TABLE \ | 58 #define ICMPX8632_TABLE \ |
39 /* val, C_32, C1_64, C2_64, C3_64 */ \ | 59 /* val, C_32, C1_64, C2_64, C3_64 */ \ |
40 X(Eq, Br_e, Br_None, Br_None, Br_None) \ | 60 X(Eq, Br_e, Br_None, Br_None, Br_None) \ |
41 X(Ne, Br_ne, Br_None, Br_None, Br_None) \ | 61 X(Ne, Br_ne, Br_None, Br_None, Br_None) \ |
42 X(Ugt, Br_a, Br_a, Br_b, Br_a) \ | 62 X(Ugt, Br_a, Br_a, Br_b, Br_a) \ |
43 X(Uge, Br_ae, Br_a, Br_b, Br_ae) \ | 63 X(Uge, Br_ae, Br_a, Br_b, Br_ae) \ |
44 X(Ult, Br_b, Br_b, Br_a, Br_b) \ | 64 X(Ult, Br_b, Br_b, Br_a, Br_b) \ |
45 X(Ule, Br_be, Br_b, Br_a, Br_be) \ | 65 X(Ule, Br_be, Br_b, Br_a, Br_be) \ |
46 X(Sgt, Br_g, Br_g, Br_l, Br_a) \ | 66 X(Sgt, Br_g, Br_g, Br_l, Br_a) \ |
47 X(Sge, Br_ge, Br_g, Br_l, Br_ae) \ | 67 X(Sge, Br_ge, Br_g, Br_l, Br_ae) \ |
48 X(Slt, Br_l, Br_l, Br_g, Br_b) \ | 68 X(Slt, Br_l, Br_l, Br_g, Br_b) \ |
49 X(Sle, Br_le, Br_l, Br_g, Br_be) \ | 69 X(Sle, Br_le, Br_l, Br_g, Br_be) \ |
50 //#define X(val, C_32, C1_64, C2_64, C3_64) | 70 //#define X(val, C_32, C1_64, C2_64, C3_64) |
51 | 71 |
52 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632_DEF | 72 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632_DEF |
OLD | NEW |