- Apr 18, 2010
-
-
Anton Korobeynikov authored
FU per CPU arch to 32 per intinerary allowing precise modelling of quite complex pipelines in the future. llvm-svn: 101754
-
- Apr 15, 2010
-
-
Dan Gohman authored
llvm-svn: 101376
-
- Apr 14, 2010
-
-
Benjamin Kramer authored
llvm-svn: 101241
-
- Apr 13, 2010
-
-
Sean Callanan authored
code. It used to #include the enhanced disassembly information for the targets it supported straight out of lib/Target/{X86,ARM,...} but now it uses a new interface provided by MCDisassembler, and (so far) implemented by X86 and ARM. Also removed hacky #define-controlled initialization of targets in edis. If clients only want edis to initialize a limited set of targets, they can set --enable-targets on the configure command line. llvm-svn: 101179
-
- Apr 09, 2010
-
-
Johnny Chen authored
We are bound to fail! For proper disassembly, the well-known encoding bits of the instruction must be fully specified. This also removes pseudo instructions from considerations of disassembly, which is a better design and less fragile than the name matchings. llvm-svn: 100899
-
Bob Wilson authored
such that the non-VFP versions have no implicit defs of VFP registers. If any callee-saved VFP registers are marked as having been defined, the prologue/epilogue code will try to save and restore them. Radar 7770432. llvm-svn: 100892
-
Johnny Chen authored
encounters decoding conflicts, instead of wrapping it inside the DEBUG() macro. llvm-svn: 100886
-
- Apr 08, 2010
-
-
Johnny Chen authored
to avoid memcpy() call is no longer necessary. llvm-svn: 100811
-
Benjamin Kramer authored
llvm-svn: 100767
-
Benjamin Kramer authored
llvm-svn: 100754
-
Sean Callanan authored
I also added a rule to the ARM target's Makefile to build the ARM-specific instruction information table for the enhanced disassembler. I will add the test harness for all this stuff in a separate commit. llvm-svn: 100735
-
Chris Lattner authored
llvm-svn: 100709
-
- Apr 07, 2010
-
-
Sean Callanan authored
argument that had to be between 0 and 7 to have any value, firing an assert later in the AsmPrinter. Now, the disassembler rejects instructions with out-of-range values for that immediate. llvm-svn: 100694
-
Eric Christopher authored
llvm-svn: 100691
-
Johnny Chen authored
ARMDecoderEmitter.cpp, with FIXME comment. llvm-svn: 100690
-
Anton Korobeynikov authored
llvm-svn: 100645
-
- Apr 05, 2010
-
-
Jakob Stoklund Olesen authored
When a target instruction wants to set target-specific flags, it should simply set bits in the TSFlags bit vector defined in the Instruction TableGen class. This works well because TableGen resolves member references late: class I : Instruction { AddrMode AM = AddrModeNone; let TSFlags{3-0} = AM.Value; } let AM = AddrMode4 in def ADD : I; TSFlags gets the expected bits from AddrMode4 in this example. llvm-svn: 100384
-
- Apr 04, 2010
-
-
Chris Lattner authored
member of AsmPrinter. Instead, pass it in explicitly. llvm-svn: 100306
-
- Apr 03, 2010
-
-
Chandler Carruth authored
llvm-svn: 100268
-
Chandler Carruth authored
llvm-svn: 100267
-
Johnny Chen authored
is expected. llvm-svn: 100247
-
Johnny Chen authored
llvm-svn: 100244
-
Johnny Chen authored
(Fix build failure) llvm-svn: 100243
-
Johnny Chen authored
backend (ARMDecoderEmitter) which emits the decoder functions for ARM and Thumb, and the disassembler core which invokes the decoder function and builds up the MCInst based on the decoded Opcode. Reviewed by Chris Latter and Bob Wilson. llvm-svn: 100233
-
- Mar 29, 2010
-
-
Chris Lattner authored
doesn't need to be stable because the patterns are fully ordered. Add a first level sort predicate that orders patterns in this order: 1) scalar integer operations 2) scalar floating point 3) vector int 4) vector float. This is a trivial sort on their top level pattern type so it is nice and transitive. The benefit of doing this is that simple integer operations are much more common than insane vector things and isel was trying to match the big complex vector patterns before the simple ones because the complexity of the vector operations was much higher. Since they can't both match, it is best (for compile time) to try the simple integer ones first. This cuts down the # failed match attempts on real code by quite a bit, for example, this reduces backtracks on crafty (as a random example) from 228285 -> 188369. llvm-svn: 99797
-
Chris Lattner authored
llvm-svn: 99796
-
Chris Lattner authored
patterns within the generated matcher. This works great except that the sort fails because the relation defined isn't transitive. I have a much simpler solution coming next, but want to archive the code. llvm-svn: 99795
-
Chris Lattner authored
comment in the generated table. llvm-svn: 99794
-
- Mar 28, 2010
-
-
Chris Lattner authored
where an incorrect number of operands is provided to an sdnode instead of just a few cases. llvm-svn: 99761
-
Chris Lattner authored
and those derived from them. These are obnoxious because they were written as: PatLeaf<(bitconvert). Not having an argument was foiling adding better type checking for operand count matching up with what was required (in this case, bitconvert always requires an operand!) llvm-svn: 99759
-
Chris Lattner authored
transforming it into (add (i32 GPR), 4). This allows us to write type generic multi patterns and have tblgen automatically drop the bitconvert in the case when the types align. This allows us to fold an extra load in the changed testcase. llvm-svn: 99756
-
Chris Lattner authored
llvm-svn: 99747
-
Chris Lattner authored
by rotating it. llvm-svn: 99746
-
Chris Lattner authored
llvm-svn: 99744
-
Chris Lattner authored
1, 1 cases which are by-far the most frequent. This shrinks the X86 isel table from 77014 -> 74657 bytes. llvm-svn: 99740
-
- Mar 27, 2010
-
-
Chris Lattner authored
issues to get here. We now trim the result type list of the CompleteMatch or MorphNodeTo operation to be the same size as the thing we're matching. this means that if you match (add GPR, GPR) with an instruction that produces a normal result and a flag that we now trim the result in tblgen instead of having to do it dynamically. This exposed a bunch of inconsistencies in result counting that happened to be getting lucky since the days of the old isel. llvm-svn: 99728
-
Chris Lattner authored
same vt multiple times for a register. For example, ECX is in 5 different i32 reg classes, just return 1 i32 instead of 5. llvm-svn: 99727
-
Chris Lattner authored
from two places in CodeGenDAGPatterns.cpp, and use it in DAGISelMatcherGen.cpp instead of using an incorrect predicate that happened to get lucky on our current targets. llvm-svn: 99726
-
Chris Lattner authored
results forward. We can now handle an instruction that produces one implicit def and one result instead of one or the other when not at the root of the pattern. llvm-svn: 99725
-
Chris Lattner authored
the index comments nested under OPC_SwitchOpcode were off by one. This fixes the comments. llvm-svn: 99722
-