- Aug 22, 2013
-
-
Elena Demikhovsky authored
llvm-svn: 189005
-
Tim Northover authored
Back in the mists of time (2008), it seems TableGen couldn't handle the patterns necessary to match ARM's CMOV node that we convert select operations to, so we wrote a lot of fairly hairy C++ to do it for us. TableGen can deal with it now: there were a few minor differences to CodeGen (see tests), but nothing obviously worse that I could see, so we should probably address anything that *does* come up in a localised manner. llvm-svn: 188995
-
- Aug 16, 2013
-
-
Aaron Ballman authored
llvm-svn: 188524
-
- Aug 14, 2013
-
-
Jack Carter authored
Added v8f16 to ValueTypes.h, ValueTypes.cpp, ValueTypes.td, and CodeGenTarget.cpp Patch by Daniel Sanders llvm-svn: 188326
-
- Aug 12, 2013
-
-
Richard Sandiford authored
Apparently caused a failure on Darwin llvm-svn: 188166
-
Richard Sandiford authored
clang bootstraps intermittently failed for me due a difference in the MCK_Reg ordering in ARMGenAsmMatcher.inc. E.g. in my latest run the stage 1 and stage 3 versions were the same but the stage 2 one was different (though still functionally correct). This meant that the .o comparison failed. MCK_Regs were assigned by iterating over a std::set< std::set<Record*> >, and since std::set is sorted lexicographically, the order depended on the order of the pointer values. This patch replaces the pointer ordering with LessRecordByID. llvm-svn: 188164
-
- Aug 07, 2013
-
-
Reid Kleckner authored
LLVM's coding standards recommend raw_ostream and MemoryBuffer for reading and writing text. This has the side effect of allowing clang to compile more of Support and TableGen in the Microsoft C++ ABI. llvm-svn: 187826
-
- Aug 01, 2013
-
-
Vladimir Medic authored
Moving definition of MnemonicContainsDot field from class Instruction to class AsmParser as suggested. llvm-svn: 187569
-
Hans Wennborg authored
The clients of this code have been updated to all support AliasArgs. This depends on Clang r187538 and lld r187541. llvm-svn: 187546
-
Hans Wennborg authored
This makes option aliases more powerful by enabling them to pass along arguments to the option they're aliasing. For example, if we have a joined option "-foo=", we can now specify a flag option "-bar" to be an alias of that, with the argument "baz". This is especially useful for the cl.exe compatible clang driver, where many options are aliases. For example, this patch enables us to alias "/Ox" to "-O3" (-O is a joined option), and "/WX" to "-Werror" (again, -W is a joined option). Differential Revision: http://llvm-reviews.chandlerc.com/D1245 llvm-svn: 187537
-
- Jul 31, 2013
-
-
Andrew Trick authored
llvm-svn: 187531
-
Tom Stellard authored
This reverts commit 2ca1e4a39c7e0d7a00e66ff5437c6d7ace2404a0. llvm-svn: 187525
-
Vincent Lejeune authored
llvm-svn: 187511
-
Andrew Trick authored
The heuristic that merges register pressure sets was bogus for ARM's S/D regs. llvm-svn: 187479
-
Andrew Trick authored
llvm-svn: 187478
-
- Jul 28, 2013
-
-
Craig Topper authored
Remove use of sprintf added to X86 disassembler tablegen code. Send message with instruction name to errs() instead and use a generic message for the llvm_unreachable. Consistent with other places in this file. llvm-svn: 187333
-
Elena Demikhovsky authored
llvm-svn: 187325
-
Elena Demikhovsky authored
Added 512-bit operands printing. Added instruction formats for KNL instructions. llvm-svn: 187324
-
- Jul 26, 2013
-
-
Aaron Ballman authored
Using a different loop induction variable than the enclosing scope. No functional changes intended. llvm-svn: 187159
-
- Jul 25, 2013
-
-
Justin Holewinski authored
Fix a bug in TableGen where the intrinsic function name recognizer could mis-identify names if one was a prefix substring of the other For two intrinsics 'llvm.nvvm.texsurf.handle' and 'llvm.nvvm.texsurf.handle.internal', TableGen was emitting matching code like: if (Name.startswith("llvm.nvvm.texsurf.handle")) ... if (Name.startswith("llvm.nvvm.texsurf.handle.internal")) ... We can never match "llvm.nvvm.texsurf.handle.internal" here because it will always be erroneously matched by the first condition. The fix is to sort the intrinsic names and emit them in reverse order. llvm-svn: 187119
-
Andrew Trick authored
This lets heuristics easily pick the most important set to follow. llvm-svn: 187108
-
- Jul 24, 2013
-
-
Craig Topper authored
This removes the need to store the asm variant in each row of the single table that existed before. Shaves ~16K off the size of X86AsmParser.o. llvm-svn: 187026
-
- Jul 23, 2013
-
-
Craig Topper authored
llvm-svn: 186929
-
Craig Topper authored
llvm-svn: 186928
-
- Jul 16, 2013
-
-
Vladimir Medic authored
This patch allows targets to define weather the instruction mnemonics in asm matcher tables will contain '.' character. llvm-svn: 186388
-
- Jul 15, 2013
-
-
Aaron Ballman authored
llvm-svn: 186330
-
Craig Topper authored
llvm-svn: 186312
-
- Jul 14, 2013
-
-
Craig Topper authored
llvm-svn: 186274
-
- Jul 06, 2013
-
-
Nick Lewycky authored
functions. Make the function attributes pass add it to known library functions and when it can deduce it. llvm-svn: 185735
-
- Jul 04, 2013
-
-
Craig Topper authored
Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size. llvm-svn: 185606
-
- Jun 27, 2013
-
-
Chad Rosier authored
algorithm when assigning EnumValues to the synthesized registers. The current algorithm, LessRecord, uses the StringRef compare_numeric function. This function compares strings, while handling embedded numbers. For example, the R600 backend registers are sorted as follows: T1 T1_W T1_X T1_XYZW T1_Y T1_Z T2 T2_W T2_X T2_XYZW T2_Y T2_Z In this example, the 'scaling factor' is dEnum/dN = 6 because T0, T1, T2 have an EnumValue offset of 6 from one another. However, in other parts of the register bank, the scaling factors are different: dEnum/dN = 5: KC0_128_W KC0_128_X KC0_128_XYZW KC0_128_Y KC0_128_Z KC0_129_W KC0_129_X KC0_129_XYZW KC0_129_Y KC0_129_Z The diff lists do not work correctly because different kinds of registers have different 'scaling factors'. This new algorithm, LessRecordRegister, tries to enforce a scaling factor of 1. For example, the registers are now sorted as follows: T1 T2 T3 ... T0_W T1_W T2_W ... T0_X T1_X T2_X ... KC0_128_W KC0_129_W KC0_130_W ... For the Mips and R600 I see a 19% and 6% reduction in size, respectively. I did see a few small regressions, but the differences were on the order of a few bytes (e.g., AArch64 was 16 bytes). I suspect there will be even greater wins for targets with larger register files. Patch reviewed by Jakob. rdar://14006013 llvm-svn: 185094
-
- Jun 25, 2013
-
-
Tom Stellard authored
This patch modifies TableGen to generate a function in ${TARGET}GenInstrInfo.inc called getNamedOperandIdx(), which can be used to look up indices for operands based on their names. In order to activate this feature for an instruction, you must set the UseNamedOperandTable bit. For example, if you have an instruction like: def ADD : TargetInstr <(outs GPR:$dst), (ins GPR:$src0, GPR:$src1)>; You can look up the operand indices using the new function, like this: Target::getNamedOperandIdx(Target::ADD, Target::OpName::dst) => 0 Target::getNamedOperandIdx(Target::ADD, Target::OpName::src0) => 1 Target::getNamedOperandIdx(Target::ADD, Target::OpName::src1) => 2 The operand names are case sensitive, so $dst and $DST are considered different operands. This change is useful for R600 which has instructions with a large number of operands, many of which model single bit instruction configuration values. These configuration bits are common across most instructions, but may have a different operand index depending on the instruction type. It is useful to have a convenient way to look up the operand indices, so these bits can be generically set on any instruction. llvm-svn: 184879
-
- Jun 18, 2013
-
-
Stefanus Du Toit authored
For decoding, keep the current behavior of always decoding these as their REP versions. In the future, this could be improved to recognize the cases where these behave as XACQUIRE and XRELEASE and decode them as such. llvm-svn: 184207
-
- Jun 15, 2013
-
-
Andrew Trick authored
And add Sandybridge/Haswell resource buffers. llvm-svn: 184034
-
Andrew Trick authored
Replace the ill-defined MinLatency and ILPWindow properties with with straightforward buffer sizes: MCSchedMode::MicroOpBufferSize MCProcResourceDesc::BufferSize These can be used to more precisely model instruction execution if desired. Disabled some misched tests temporarily. They'll be reenabled in a few commits. llvm-svn: 184032
-
- Jun 10, 2013
-
-
Benjamin Kramer authored
llvm-svn: 183690
-
- Jun 09, 2013
-
-
Benjamin Kramer authored
PR16281. llvm-svn: 183630
-
- Jun 07, 2013
-
-
Arnold Schwaighofer authored
llvm-svn: 183465
-
Arnold Schwaighofer authored
The element passed to push_back is not copied before the vector reallocates. The client needs to copy the element first before passing it to push_back. No test case, will be tested by follow-up swift scheduler model change (it segfaults without this change). llvm-svn: 183459
-
- Jun 06, 2013
-
-
Jakub Staszak authored
llvm-svn: 183426
-