OLD | NEW |
1 //===- subzero/src/llvm2ice.cpp - Driver for testing ----------------------===// | 1 //===- subzero/src/llvm2ice.cpp - Driver for testing ----------------------===// |
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 a driver that uses LLVM capabilities to parse a | 10 // This file defines a driver that uses LLVM capabilities to parse a |
(...skipping 26 matching lines...) Expand all Loading... |
37 clEnumValN(Ice::IceV_Deleted, "del", "Include deleted instructions"), | 37 clEnumValN(Ice::IceV_Deleted, "del", "Include deleted instructions"), |
38 clEnumValN(Ice::IceV_InstNumbers, "instnum", | 38 clEnumValN(Ice::IceV_InstNumbers, "instnum", |
39 "Print instruction numbers"), | 39 "Print instruction numbers"), |
40 clEnumValN(Ice::IceV_Preds, "pred", "Show predecessors"), | 40 clEnumValN(Ice::IceV_Preds, "pred", "Show predecessors"), |
41 clEnumValN(Ice::IceV_Succs, "succ", "Show successors"), | 41 clEnumValN(Ice::IceV_Succs, "succ", "Show successors"), |
42 clEnumValN(Ice::IceV_Liveness, "live", "Liveness information"), | 42 clEnumValN(Ice::IceV_Liveness, "live", "Liveness information"), |
43 clEnumValN(Ice::IceV_RegManager, "rmgr", "Register manager status"), | 43 clEnumValN(Ice::IceV_RegManager, "rmgr", "Register manager status"), |
44 clEnumValN(Ice::IceV_RegOrigins, "orig", "Physical register origins"), | 44 clEnumValN(Ice::IceV_RegOrigins, "orig", "Physical register origins"), |
45 clEnumValN(Ice::IceV_LinearScan, "regalloc", "Linear scan details"), | 45 clEnumValN(Ice::IceV_LinearScan, "regalloc", "Linear scan details"), |
46 clEnumValN(Ice::IceV_Frame, "frame", "Stack frame layout details"), | 46 clEnumValN(Ice::IceV_Frame, "frame", "Stack frame layout details"), |
47 clEnumValN(Ice::IceV_Timing, "time", "Pass timing details"), | |
48 clEnumValN(Ice::IceV_AddrOpt, "addropt", "Address mode optimization"), | 47 clEnumValN(Ice::IceV_AddrOpt, "addropt", "Address mode optimization"), |
49 clEnumValN(Ice::IceV_All, "all", "Use all verbose options"), | 48 clEnumValN(Ice::IceV_All, "all", "Use all verbose options"), |
50 clEnumValN(Ice::IceV_Most, "most", | 49 clEnumValN(Ice::IceV_Most, "most", |
51 "Use all verbose options except 'regalloc' and 'time'"), | 50 "Use all verbose options except 'regalloc' and 'time'"), |
52 clEnumValN(Ice::IceV_None, "none", "No verbosity"), clEnumValEnd)); | 51 clEnumValN(Ice::IceV_None, "none", "No verbosity"), clEnumValEnd)); |
53 static cl::opt<Ice::TargetArch> TargetArch( | 52 static cl::opt<Ice::TargetArch> TargetArch( |
54 "target", cl::desc("Target architecture:"), cl::init(Ice::Target_X8632), | 53 "target", cl::desc("Target architecture:"), cl::init(Ice::Target_X8632), |
55 cl::values( | 54 cl::values( |
56 clEnumValN(Ice::Target_X8632, "x8632", "x86-32"), | 55 clEnumValN(Ice::Target_X8632, "x8632", "x86-32"), |
57 clEnumValN(Ice::Target_X8632, "x86-32", "x86-32 (same as x8632)"), | 56 clEnumValN(Ice::Target_X8632, "x86-32", "x86-32 (same as x8632)"), |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 Os->SetUnbuffered(); | 155 Os->SetUnbuffered(); |
157 std::ofstream Lfs; | 156 std::ofstream Lfs; |
158 if (LogFilename != "-") { | 157 if (LogFilename != "-") { |
159 Lfs.open(LogFilename.c_str(), std::ofstream::out); | 158 Lfs.open(LogFilename.c_str(), std::ofstream::out); |
160 } | 159 } |
161 raw_os_ostream *Ls = new raw_os_ostream(LogFilename == "-" ? std::cout : Lfs); | 160 raw_os_ostream *Ls = new raw_os_ostream(LogFilename == "-" ? std::cout : Lfs); |
162 Ls->SetUnbuffered(); | 161 Ls->SetUnbuffered(); |
163 | 162 |
164 Ice::ClFlags Flags; | 163 Ice::ClFlags Flags; |
165 Flags.DisableInternal = DisableInternal; | 164 Flags.DisableInternal = DisableInternal; |
166 Flags.SubzeroTimingEnabled = SubzeroTimingEnabled; | |
167 Flags.DisableTranslation = DisableTranslation; | 165 Flags.DisableTranslation = DisableTranslation; |
168 Flags.DisableGlobals = DisableGlobals; | 166 Flags.DisableGlobals = DisableGlobals; |
169 Flags.FunctionSections = FunctionSections; | 167 Flags.FunctionSections = FunctionSections; |
170 Flags.UseIntegratedAssembler = UseIntegratedAssembler; | 168 Flags.UseIntegratedAssembler = UseIntegratedAssembler; |
171 Flags.UseSandboxing = UseSandboxing; | 169 Flags.UseSandboxing = UseSandboxing; |
172 Flags.DumpStats = DumpStats; | 170 Flags.DumpStats = DumpStats; |
173 Flags.DefaultGlobalPrefix = DefaultGlobalPrefix; | 171 Flags.DefaultGlobalPrefix = DefaultGlobalPrefix; |
174 Flags.DefaultFunctionPrefix = DefaultFunctionPrefix; | 172 Flags.DefaultFunctionPrefix = DefaultFunctionPrefix; |
175 | 173 |
176 Ice::GlobalContext Ctx(Ls, Os, VMask, TargetArch, OptLevel, TestPrefix, | 174 Ice::GlobalContext Ctx(Ls, Os, VMask, TargetArch, OptLevel, TestPrefix, |
177 Flags); | 175 Flags); |
| 176 Ice::TimerMarker T("szmain", &Ctx); |
178 | 177 |
179 int ErrorStatus = 0; | 178 int ErrorStatus = 0; |
180 if (BuildOnRead) { | 179 if (BuildOnRead) { |
181 Ice::PNaClTranslator Translator(&Ctx, Flags); | 180 Ice::PNaClTranslator Translator(&Ctx, Flags); |
182 Translator.translate(IRFilename); | 181 Translator.translate(IRFilename); |
183 ErrorStatus = Translator.getErrorStatus(); | 182 ErrorStatus = Translator.getErrorStatus(); |
184 } else { | 183 } else { |
185 // Parse the input LLVM IR file into a module. | 184 // Parse the input LLVM IR file into a module. |
186 SMDiagnostic Err; | 185 SMDiagnostic Err; |
187 Ice::Timer T; | 186 Ice::TimerMarker("parse", &Ctx); |
188 Module *Mod = | 187 Module *Mod = |
189 NaClParseIRFile(IRFilename, InputFileFormat, Err, getGlobalContext()); | 188 NaClParseIRFile(IRFilename, InputFileFormat, Err, getGlobalContext()); |
190 | 189 |
191 if (SubzeroTimingEnabled) { | |
192 std::cerr << "[Subzero timing] IR Parsing: " << T.getElapsedSec() | |
193 << " sec\n"; | |
194 } | |
195 | |
196 if (!Mod) { | 190 if (!Mod) { |
197 Err.print(argv[0], errs()); | 191 Err.print(argv[0], errs()); |
198 return 1; | 192 return 1; |
199 } | 193 } |
200 | 194 |
201 Ice::Converter Converter(Mod, &Ctx, Flags); | 195 Ice::Converter Converter(Mod, &Ctx, Flags); |
202 Converter.convertToIce(); | 196 Converter.convertToIce(); |
203 ErrorStatus = Converter.getErrorStatus(); | 197 ErrorStatus = Converter.getErrorStatus(); |
204 } | 198 } |
| 199 if (SubzeroTimingEnabled) |
| 200 Ctx.dumpTimers(); |
205 const bool FinalStats = true; | 201 const bool FinalStats = true; |
206 Ctx.dumpStats("_FINAL_", FinalStats); | 202 Ctx.dumpStats("_FINAL_", FinalStats); |
207 return ErrorStatus; | 203 return ErrorStatus; |
208 } | 204 } |
OLD | NEW |