- Mar 25, 2013
-
-
Dave Zarzycki authored
llvm-svn: 177888
-
- Mar 24, 2013
-
-
Jakob Stoklund Olesen authored
This syntax is now preferred: def : Pat<(subc i32:$b, i32:$c), (SUBCCrr $b, $c)>; There is no reason to repeat the types in the output pattern. llvm-svn: 177844
-
Jakob Stoklund Olesen authored
This makes it possible to define instruction patterns like this: def LDri : F3_2<3, 0b000000, (outs IntRegs:$dst), (ins MEMri:$addr), "ld [$addr], $dst", [(set i32:$dst, (load ADDRri:$addr))]>; ~~~ llvm-svn: 177834
-
- Mar 23, 2013
-
-
Jakob Stoklund Olesen authored
Just like register classes, value types can be used in two ways in patterns: (sext_inreg i32:$src, i16) In a named leaf node like i32:$src, the value type simply provides the type of the node directly. This simplifies type inference a lot compared to the current practice of specifiying types indirectly with register classes. As an unnamed leaf node, like i16 above, the value type represents itself as an MVT::Other immediate. llvm-svn: 177828
-
Jakob Stoklund Olesen authored
A register class can appear as a leaf TreePatternNode with and without a name: (COPY_TO_REGCLASS GPR:$src, F8RC) In a named leaf node like GPR:$src, the register class provides type information for the named variable represented by the node. The TypeSet for such a node is the set of value types that the register class can represent. In an unnamed leaf node like F8RC above, the register class represents itself as a kind of immediate. Such a node has the type MVT::i32, we'll never create a virtual register representing it. This change makes it possible to remove the special handling of COPY_TO_REGCLASS in CodeGenDAGPatterns.cpp. llvm-svn: 177825
-
Benjamin Kramer authored
llvm-svn: 177822
-
- Mar 22, 2013
-
-
Sean Silva authored
To use this in conjunction with exuberant ctags to generate a single combined tags file, run tblgen first and then $ ctags --append [...] Since some identifiers have corresponding definitions in C++ code, it can be useful (if using vim) to also use cscope, and :set cscopetagorder=1 so that :tag X will preferentially select the tablegen symbol, while :cscope find g X will always find the C++ symbol. Patch by Kevin Schoedel! (a couple small formatting changes courtesy of clang-format) llvm-svn: 177682
-
- Mar 21, 2013
-
-
Reid Kleckner authored
Native Windows Python will do line ending translation by default, which we don't want in bash scripts. If we're not native Windows Python, then 'b' is ignored. llvm-svn: 177602
-
- Mar 19, 2013
-
-
Ulrich Weigand authored
of complex instruction operands (e.g. address modes). Currently, if a Pat pattern creates an instruction that has a complex operand (i.e. one that consists of multiple sub-operands at the MI level), this operand must match a ComplexPattern DAG pattern with the correct number of output operands. This commit extends TableGen to alternatively allow match a complex operands against multiple separate operands at the DAG level. This allows using Pat patterns to match pre-increment nodes like pre_store (which must have separate operands at the DAG level) onto an instruction pattern that uses a multi-operand memory operand, like the following example on PowerPC (will be committed as a follow-on patch): def STWU : DForm_1<37, (outs ptr_rc:$ea_res), (ins GPRC:$rS, memri:$dst), "stwu $rS, $dst", LdStStoreUpd, []>, RegConstraint<"$dst.reg = $ea_res">, NoEncode<"$ea_res">; def : Pat<(pre_store GPRC:$rS, ptr_rc:$ptrreg, iaddroff:$ptroff), (STWU GPRC:$rS, iaddroff:$ptroff, ptr_rc:$ptrreg)>; Here, the pair of "ptroff" and "ptrreg" operands is matched onto the complex operand "dst" of class "memri" in the "STWU" instruction. Approved by Jakob Stoklund Olesen. llvm-svn: 177428
-
- Mar 18, 2013
-
-
Andrew Trick authored
Properly handle cases where a group of instructions have different SchedRW lists with the same itinerary class. This was supposed to work, but I left in an early break. llvm-svn: 177317
-
Jakob Stoklund Olesen authored
This computes the type of an instruction operand or result based on the records in the instruction's ins and outs lists. llvm-svn: 177244
-
- Mar 17, 2013
-
-
Jakob Stoklund Olesen authored
Not passing vector references around makes it possible to use SmallVector in most places. llvm-svn: 177235
-
- Mar 16, 2013
-
-
Andrew Trick authored
We always supported a mixture of the old itinerary model and new per-operand model, but it required a level of indirection to map itinerary classes to SchedRW lists. This was done for ARM A9. Now we want to define x86 SchedRW lists, with the goal of removing its itinerary classes, but still support the itineraries in the mean time. When I original developed the model, Atom did not have itineraries, so there was no reason to expect this requirement. llvm-svn: 177226
-
- Mar 15, 2013
-
-
Jakob Stoklund Olesen authored
Don't require instructions to inherit Sched<...>. Sometimes it is more convenient to say: let SchedRW = ... in { ... } Which is now possible. llvm-svn: 177199
-
- Mar 14, 2013
-
-
Andrew Trick authored
This is the other half of r177122 that I meant to commit at the same time. llvm-svn: 177123
-
Andrew Trick authored
This allows abitrary groups of processor resources. Using something in a subset automatically counts againts the superset. Currently, this only works if the superset is also a ProcResGroup as opposed to a SuperUnit. This allows SandyBridge to be expressed naturally, which will be checked in shortly. def SBPort01 : ProcResGroup<[SBPort0, SBPort1]>; def SBPort15 : ProcResGroup<[SBPort1, SBPort5]>; def SBPort23 : ProcResGroup<[SBPort2, SBPort3]>; def SBPort015 : ProcResGroup<[SBPort0, SBPort1, SBPort5]>; llvm-svn: 177112
-
- Mar 13, 2013
-
-
NAKAMURA Takumi authored
llvm-svn: 176930
-
- Mar 11, 2013
-
-
Kevin Enderby authored
rdar://13318048 llvm-svn: 176828
-
- Mar 02, 2013
-
-
Andrew Trick authored
Fix the way resources are counted. I'm taking some time to cleanup the way MachineScheduler handles in-order machine resources. Eventually we'll need more PPC/Atom test cases in tree. llvm-svn: 176390
-
- Feb 28, 2013
-
-
Bill Wendling authored
Patch by Journeyer J. Joh! llvm-svn: 176235
-
- Feb 26, 2013
-
-
Michael J. Spencer authored
llvm-svn: 176125
-
Kostya Serebryany authored
These are two related changes (one in llvm, one in clang). LLVM: - rename address_safety => sanitize_address (the enum value is the same, so we preserve binary compatibility with old bitcode) - rename thread_safety => sanitize_thread - rename no_uninitialized_checks -> sanitize_memory CLANG: - add __attribute__((no_sanitize_address)) as a synonym for __attribute__((no_address_safety_analysis)) - add __attribute__((no_sanitize_thread)) - add __attribute__((no_sanitize_memory)) for S in address thread memory If -fsanitize=S is present and __attribute__((no_sanitize_S)) is not set llvm attribute sanitize_S llvm-svn: 176075
-
- Feb 25, 2013
-
-
Matt Beaumont-Gay authored
llvm-svn: 176031
-
- Feb 14, 2013
-
-
Jyotsna Verma authored
llvm-svn: 175185
-
- Feb 13, 2013
-
-
David Peixotto authored
Fixed bug in tablegen conversion when source pseudo instruction has a different number of arguments than the destination instruction. llvm-svn: 175066
-
- Feb 12, 2013
-
-
Guy Benyei authored
Add static cast to unsigned char whenever a character classification function is called with a signed char argument, in order to avoid assertions in Windows Debug configuration. llvm-svn: 175006
-
Kay Tiong Khoo authored
Fixed decode of existing 3dNow prefetchw instruction Intel is scheduled to add a compatible prefetchw (same encoding) to future CPUs llvm-svn: 174920
-
- Feb 11, 2013
-
-
Kostya Serebryany authored
llvm-svn: 174864
-
- Feb 07, 2013
-
-
Daniel Dunbar authored
llvm-svn: 174667
-
- Feb 06, 2013
-
-
Guy Benyei authored
Canonicalize line endings to Linux style also when the --strict-whitespace flag is in use. This flag is supposed to affect horizontal whitespaces only. llvm-svn: 174541
-
Jim Grosbach authored
For example, ARM has several instructions with a literal '#0' immediate in the syntax that's not represented as an actual operand. The asm matcher is expected a token operand, but the parser will have created an immediate operand. This is currently handled by dedicated per-instruction C++ munging of the ParsedAsmOperand list, but will be better handled by this hook. llvm-svn: 174487
-
- Feb 05, 2013
-
-
rdar://12568983Bob Wilson authored
If an Apple llvmCore build is done without assertions, and a client uses the llvmCore headers with assertions enabled, or vice versa, then things will break because some of the structure sizes in the API are different. Use the unifdef tool to make the headers unconditionally match the way the llvmCore libraries were built. llvm-svn: 174460
-
-
Eli Bendersky authored
llvm-svn: 174390
-
Jack Carter authored
and enables the instruction printer to print aliased instructions. Due to usage of RegisterOperands a change in common code (utils/TableGen/AsmWriterEmitter.cpp) is required to get the correct register value if it is a RegisterOperand. Contributer: Vladimir Medic llvm-svn: 174358
-
- Feb 01, 2013
-
-
Andrew Trick authored
Drive by fix. I noticed some missing logic that might bite future users. This shouldn't affect the final output on currently modeled targets. llvm-svn: 174142
-
- Jan 31, 2013
-
-
Daniel Dunbar authored
llvm-svn: 174102
-
Daniel Dunbar authored
llvm-svn: 174101
-
Daniel Dunbar authored
- Also, change the exit code to match 'sh'. llvm-svn: 174089
-
Daniel Dunbar authored
- Testing finds bugs, who knew. llvm-svn: 174087
-