Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Side by Side Diff: src/IceTargetLoweringX8664.cpp

Issue 1548363002: Subzero. Code organization. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //===- subzero/src/IceTargetLoweringX8664.cpp - x86-64 lowering -----------===// 1 //===- subzero/src/IceTargetLoweringX8664.cpp - x86-64 lowering -----------===//
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 /// \file 10 /// \file
11 /// \brief Implements the TargetLoweringX8664 class, which consists almost 11 /// \brief Implements the TargetLoweringX8664 class, which consists almost
12 /// entirely of the lowering sequence for each high-level instruction. 12 /// entirely of the lowering sequence for each high-level instruction.
13 /// 13 ///
14 //===----------------------------------------------------------------------===// 14 //===----------------------------------------------------------------------===//
15 15
16 #include "IceTargetLoweringX8664.h" 16 #include "IceTargetLoweringX8664.h"
17 17
18 #include "IceTargetLoweringX8664Traits.h" 18 #include "IceTargetLoweringX8664Traits.h"
19 #include "IceTargetLoweringX86Base.h"
20 19
21 namespace X8664 { 20 namespace X8664 {
22 std::unique_ptr<::Ice::TargetLowering> createTargetLowering(::Ice::Cfg *Func) { 21 std::unique_ptr<::Ice::TargetLowering> createTargetLowering(::Ice::Cfg *Func) {
23 return ::Ice::TargetX8664::create(Func); 22 return ::Ice::X8664::TargetX8664::create(Func);
24 } 23 }
25 24
26 std::unique_ptr<::Ice::TargetDataLowering> 25 std::unique_ptr<::Ice::TargetDataLowering>
27 createTargetDataLowering(::Ice::GlobalContext *Ctx) { 26 createTargetDataLowering(::Ice::GlobalContext *Ctx) {
28 return ::Ice::TargetDataX8664::create(Ctx); 27 return ::Ice::X8664::TargetDataX8664::create(Ctx);
29 } 28 }
30 29
31 std::unique_ptr<::Ice::TargetHeaderLowering> 30 std::unique_ptr<::Ice::TargetHeaderLowering>
32 createTargetHeaderLowering(::Ice::GlobalContext *Ctx) { 31 createTargetHeaderLowering(::Ice::GlobalContext *Ctx) {
33 return ::Ice::TargetHeaderX8664::create(Ctx); 32 return ::Ice::X8664::TargetHeaderX8664::create(Ctx);
34 } 33 }
35 34
36 void staticInit() { ::Ice::TargetX8664::staticInit(); } 35 void staticInit() { ::Ice::X8664::TargetX8664::staticInit(); }
37 } // end of namespace X8664 36 } // end of namespace X8664
38 37
39 namespace Ice { 38 namespace Ice {
39 namespace X8664 {
40 40
41 //------------------------------------------------------------------------------ 41 //------------------------------------------------------------------------------
42 // ______ ______ ______ __ ______ ______ 42 // ______ ______ ______ __ ______ ______
43 // /\__ _\ /\ == \ /\ __ \ /\ \ /\__ _\ /\ ___\ 43 // /\__ _\ /\ == \ /\ __ \ /\ \ /\__ _\ /\ ___\
44 // \/_/\ \/ \ \ __< \ \ __ \ \ \ \ \/_/\ \/ \ \___ \ 44 // \/_/\ \/ \ \ __< \ \ __ \ \ \ \ \/_/\ \/ \ \___ \
45 // \ \_\ \ \_\ \_\ \ \_\ \_\ \ \_\ \ \_\ \/\_____\ 45 // \ \_\ \ \_\ \_\ \ \_\ \_\ \ \_\ \ \_\ \/\_____\
46 // \/_/ \/_/ /_/ \/_/\/_/ \/_/ \/_/ \/_____/ 46 // \/_/ \/_/ /_/ \/_/\/_/ \/_/ \/_/ \/_____/
47 // 47 //
48 //------------------------------------------------------------------------------ 48 //------------------------------------------------------------------------------
49 namespace X86Internal { 49 const TargetX8664Traits::TableFcmpType TargetX8664Traits::TableFcmp[] = {
50 const MachineTraits<TargetX8664>::TableFcmpType
51 MachineTraits<TargetX8664>::TableFcmp[] = {
52 #define X(val, dflt, swapS, C1, C2, swapV, pred) \ 50 #define X(val, dflt, swapS, C1, C2, swapV, pred) \
53 { \ 51 { \
54 dflt, swapS, X8664::Traits::Cond::C1, X8664::Traits::Cond::C2, swapV, \ 52 dflt, swapS, X8664::Traits::Cond::C1, X8664::Traits::Cond::C2, swapV, \
55 X8664::Traits::Cond::pred \ 53 X8664::Traits::Cond::pred \
56 } \ 54 } \
57 , 55 ,
58 FCMPX8664_TABLE 56 FCMPX8664_TABLE
59 #undef X 57 #undef X
60 }; 58 };
61 59
62 const size_t MachineTraits<TargetX8664>::TableFcmpSize = 60 const size_t TargetX8664Traits::TableFcmpSize = llvm::array_lengthof(TableFcmp);
63 llvm::array_lengthof(TableFcmp);
64 61
65 const MachineTraits<TargetX8664>::TableIcmp32Type 62 const TargetX8664Traits::TableIcmp32Type TargetX8664Traits::TableIcmp32[] = {
66 MachineTraits<TargetX8664>::TableIcmp32[] = {
67 #define X(val, C_32, C1_64, C2_64, C3_64) \ 63 #define X(val, C_32, C1_64, C2_64, C3_64) \
68 { X8664::Traits::Cond::C_32 } \ 64 { X8664::Traits::Cond::C_32 } \
69 , 65 ,
70 ICMPX8664_TABLE 66 ICMPX8664_TABLE
71 #undef X 67 #undef X
72 }; 68 };
73 69
74 const size_t MachineTraits<TargetX8664>::TableIcmp32Size = 70 const size_t TargetX8664Traits::TableIcmp32Size =
75 llvm::array_lengthof(TableIcmp32); 71 llvm::array_lengthof(TableIcmp32);
76 72
77 const MachineTraits<TargetX8664>::TableIcmp64Type 73 const TargetX8664Traits::TableIcmp64Type TargetX8664Traits::TableIcmp64[] = {
78 MachineTraits<TargetX8664>::TableIcmp64[] = {
79 #define X(val, C_32, C1_64, C2_64, C3_64) \ 74 #define X(val, C_32, C1_64, C2_64, C3_64) \
80 { \ 75 { \
81 X8664::Traits::Cond::C1_64, X8664::Traits::Cond::C2_64, \ 76 X8664::Traits::Cond::C1_64, X8664::Traits::Cond::C2_64, \
82 X8664::Traits::Cond::C3_64 \ 77 X8664::Traits::Cond::C3_64 \
83 } \ 78 } \
84 , 79 ,
85 ICMPX8664_TABLE 80 ICMPX8664_TABLE
86 #undef X 81 #undef X
87 }; 82 };
88 83
89 const size_t MachineTraits<TargetX8664>::TableIcmp64Size = 84 const size_t TargetX8664Traits::TableIcmp64Size =
90 llvm::array_lengthof(TableIcmp64); 85 llvm::array_lengthof(TableIcmp64);
91 86
92 const MachineTraits<TargetX8664>::TableTypeX8664AttributesType 87 const TargetX8664Traits::TableTypeX8664AttributesType
93 MachineTraits<TargetX8664>::TableTypeX8664Attributes[] = { 88 TargetX8664Traits::TableTypeX8664Attributes[] = {
94 #define X(tag, elementty, cvt, sdss, pdps, spsd, pack, width, fld) \ 89 #define X(tag, elementty, cvt, sdss, pdps, spsd, pack, width, fld) \
95 { IceType_##elementty } \ 90 { IceType_##elementty } \
96 , 91 ,
97 ICETYPEX8664_TABLE 92 ICETYPEX8664_TABLE
98 #undef X 93 #undef X
99 }; 94 };
100 95
101 const size_t MachineTraits<TargetX8664>::TableTypeX8664AttributesSize = 96 const size_t TargetX8664Traits::TableTypeX8664AttributesSize =
102 llvm::array_lengthof(TableTypeX8664Attributes); 97 llvm::array_lengthof(TableTypeX8664Attributes);
103 98
104 const uint32_t MachineTraits<TargetX8664>::X86_STACK_ALIGNMENT_BYTES = 16; 99 const uint32_t TargetX8664Traits::X86_STACK_ALIGNMENT_BYTES = 16;
105 const char *MachineTraits<TargetX8664>::TargetName = "X8664"; 100 const char *TargetX8664Traits::TargetName = "X8664";
106 101
107 template <> 102 template <>
108 std::array<llvm::SmallBitVector, RCX86_NUM> 103 std::array<llvm::SmallBitVector, RCX86_NUM>
109 TargetX86Base<TargetX8664>::TypeToRegisterSet = {{}}; 104 TargetX86Base<X8664::Traits>::TypeToRegisterSet = {{}};
110 105
111 template <> 106 template <>
112 std::array<llvm::SmallBitVector, 107 std::array<llvm::SmallBitVector,
113 TargetX86Base<TargetX8664>::Traits::RegisterSet::Reg_NUM> 108 TargetX86Base<X8664::Traits>::Traits::RegisterSet::Reg_NUM>
114 TargetX86Base<TargetX8664>::RegisterAliases = {{}}; 109 TargetX86Base<X8664::Traits>::RegisterAliases = {{}};
115 110
116 template <> 111 template <>
117 llvm::SmallBitVector 112 llvm::SmallBitVector
118 TargetX86Base<TargetX8664>::ScratchRegs = llvm::SmallBitVector(); 113 TargetX86Base<X8664::Traits>::ScratchRegs = llvm::SmallBitVector();
119
120 } // end of namespace X86Internal
121 114
122 //------------------------------------------------------------------------------ 115 //------------------------------------------------------------------------------
123 // __ ______ __ __ ______ ______ __ __ __ ______ 116 // __ ______ __ __ ______ ______ __ __ __ ______
124 // /\ \ /\ __ \/\ \ _ \ \/\ ___\/\ == \/\ \/\ "-.\ \/\ ___\ 117 // /\ \ /\ __ \/\ \ _ \ \/\ ___\/\ == \/\ \/\ "-.\ \/\ ___\
125 // \ \ \___\ \ \/\ \ \ \/ ".\ \ \ __\\ \ __<\ \ \ \ \-. \ \ \__ \ 118 // \ \ \___\ \ \/\ \ \ \/ ".\ \ \ __\\ \ __<\ \ \ \ \-. \ \ \__ \
126 // \ \_____\ \_____\ \__/".~\_\ \_____\ \_\ \_\ \_\ \_\\"\_\ \_____\ 119 // \ \_____\ \_____\ \__/".~\_\ \_____\ \_\ \_\ \_\ \_\\"\_\ \_____\
127 // \/_____/\/_____/\/_/ \/_/\/_____/\/_/ /_/\/_/\/_/ \/_/\/_____/ 120 // \/_____/\/_____/\/_/ \/_/\/_____/\/_/ /_/\/_/\/_/ \/_/\/_____/
128 // 121 //
129 //------------------------------------------------------------------------------ 122 //------------------------------------------------------------------------------
130 namespace { 123 namespace {
(...skipping 912 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 // Repeat the static asserts with respect to the high-level table entries in 1036 // Repeat the static asserts with respect to the high-level table entries in
1044 // case the high-level table has extra entries. 1037 // case the high-level table has extra entries.
1045 #define X(tag, sizeLog2, align, elts, elty, str) \ 1038 #define X(tag, sizeLog2, align, elts, elty, str) \
1046 static_assert(_table1_##tag == _table2_##tag, \ 1039 static_assert(_table1_##tag == _table2_##tag, \
1047 "Inconsistency between ICETYPEX8664_TABLE and ICETYPE_TABLE"); 1040 "Inconsistency between ICETYPEX8664_TABLE and ICETYPE_TABLE");
1048 ICETYPE_TABLE 1041 ICETYPE_TABLE
1049 #undef X 1042 #undef X
1050 } // end of namespace dummy3 1043 } // end of namespace dummy3
1051 } // end of anonymous namespace 1044 } // end of anonymous namespace
1052 1045
1046 } // end of namespace X8664
1053 } // end of namespace Ice 1047 } // end of namespace Ice
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698