- Mar 26, 2013
-
-
Michael Liao authored
- It's still considered aligned when the specified alignment is larger than the natural alignment; - The new alignment for the high 128-bit vector should be min(16, alignment) as the pointer is advanced by 16, a power-of-2 offset. llvm-svn: 177947
-
Jakob Stoklund Olesen authored
The model isn't hooked up by this patch because the instruction set isn't fully annotated yet. llvm-svn: 177942
-
Jakob Stoklund Olesen authored
All the instructions tagged with IIC_DEFAULT had nothing in common, and we already have a NoItineraries class to represent untagged instructions. llvm-svn: 177937
-
Jakob Stoklund Olesen authored
llvm-svn: 177936
-
Jakob Stoklund Olesen authored
llvm-svn: 177935
-
- Mar 25, 2013
-
-
NAKAMURA Takumi authored
llvm-svn: 177910
-
NAKAMURA Takumi authored
llvm-svn: 177909
-
Dave Zarzycki authored
llvm-svn: 177888
-
Dave Zarzycki authored
This fixes Apple bug: 13493622 llvm-svn: 177887
-
- Mar 21, 2013
-
-
Jakob Stoklund Olesen authored
llvm-svn: 177611
-
Jakob Stoklund Olesen authored
It's not yet clear if these instructions need a more careful model. llvm-svn: 177599
-
Jakob Stoklund Olesen authored
This is used for all the expensive system instructions. llvm-svn: 177598
-
- Mar 20, 2013
-
-
Jakob Stoklund Olesen authored
llvm-svn: 177592
-
Jakob Stoklund Olesen authored
llvm-svn: 177591
-
Michael Liao authored
- After moving logic recognizing vector shift with scalar amount from DAG combining into DAG lowering, we declare to customize all vector shifts even vector shift on AVX is legal. As a result, the cost model needs special tuning to identify these legal cases. llvm-svn: 177586
-
Jakob Stoklund Olesen authored
llvm-svn: 177540
-
Jakob Stoklund Olesen authored
llvm-svn: 177539
-
Michael Liao authored
- Move SRA/SRL/SHL lowering support from DAG combination to DAG lowering to support extended 256-bit integer in AVX but not AVX2. llvm-svn: 177478
-
Michael Liao authored
- Prepare moving logic from DAG combining into DAG lowering. There's no functionality change. llvm-svn: 177477
-
Michael Liao authored
- no functionality change llvm-svn: 177476
-
Jakob Stoklund Olesen authored
llvm-svn: 177461
-
Jakob Stoklund Olesen authored
llvm-svn: 177460
-
Jakob Stoklund Olesen authored
llvm-svn: 177459
-
- Mar 19, 2013
-
-
Chad Rosier authored
logic as a QOI cleanup. No functional change. Tests already in place. rdar://13456414 llvm-svn: 177446
-
Jakob Stoklund Olesen authored
Add a new WriteZero SchedWrite type for the common dependency-breaking instructions that clear a register. llvm-svn: 177442
-
Chad Rosier authored
an X86Operand, but also performs a Sema lookup and adds the sizing directive when appropriate. Use this when parsing a bracketed statement. This is necessary to get the instruction matching correct as well. Test case coming on clang side. rdar://13455408 llvm-svn: 177439
-
Ulrich Weigand authored
def : Pat<(load (i64 (X86Wrapper tglobaltlsaddr :$dst))), (MOV64rm tglobaltlsaddr :$dst)>; This pattern is invalid because the MOV64rm instruction expects a source operand of type "i64mem", which is a subclass of X86MemOperand and thus actually consists of five MI operands, but the Pat provides only a single MI operand ("tglobaltlsaddr" matches an SDnode of type ISD::TargetGlobalTLSAddress and provides a single output). Thus, if the pattern were ever matched, subsequent uses of the MOV64rm instruction pattern would access uninitialized memory. In addition, with the TableGen patch I'm about to check in, this would actually be reported as a build-time error. Fortunately, the pattern does in fact never match, for at least two independent reasons. First, the code generator actually never generates a pattern of the form (load (X86Wrapper (tglobaltlsaddr))). For most combinations of TLS and code models, (tglobaltlsaddr) represents just an offset that needs to be added to some base register, so it is never directly dereferenced. The only exception is the initial-exec model, where (tglobaltlsaddr) refers to the (pc-relative) address of a GOT slot, which *is* in fact directly dereferenced: but in that case, the X86WrapperRIP node is used, not X86Wrapper, so the Pat doesn't match. Second, even if some patterns along those lines *were* ever generated, we should not need an extra Pat pattern to match it. Instead, the original MOV64rm instruction pattern ought to match directly, since it uses an "addr" operand, which is implemented via the SelectAddr C++ routine; this routine is supposed to accept the full range of input DAGs that may be implemented by a single mov instruction, including those cases involving ISD::TargetGlobalTLSAddress (and actually does so e.g. in the initial-exec case as above). To avoid build breaks (due to the above-mentioned error) after the TableGen patch is checked in, I'm removing this Pat here. llvm-svn: 177426
-
Nadav Rotem authored
Patch by Ahmad, Muhammad T <muhammad.t.ahmad@intel.com> llvm-svn: 177421
-
Jakob Stoklund Olesen authored
llvm-svn: 177418
-
Jakob Stoklund Olesen authored
llvm-svn: 177417
-
Chad Rosier authored
logic as a QOI cleanup. rdar://13445327 llvm-svn: 177413
-
Chad Rosier authored
parsed one. Test case coming shortly. rdar://13446980 llvm-svn: 177347
-
- Mar 18, 2013
-
-
Jakob Stoklund Olesen authored
We hitch a ride with the existing OpndItins class that was used to add instruction itinerary classes in the many multiclasses in this file. Use the link provided by the X86FoldableSchedWrite.Folded to find the right SchedWrite for folded loads. llvm-svn: 177326
-
Jakob Stoklund Olesen authored
This new-style scheduling information is going to replace the instruction iteneraries. This also serves as a test case for Andy's fix in r177317. llvm-svn: 177323
-
Anton Korobeynikov authored
MinGW is almost completely compatible to MSVC, with the exception of the _tls_array global not being available. Patch by David Nadlinger! llvm-svn: 177257
-
Craig Topper authored
llvm-svn: 177243
-
Craig Topper authored
llvm-svn: 177242
-
- Mar 16, 2013
-
-
Craig Topper authored
Previously we weren't skipping the VVVV encoded register. Based on patch by Michael Liao. llvm-svn: 177221
-
Jakob Stoklund Olesen authored
Since almost all X86 instructions can fold loads, use a multiclass to define register/memory pairs of SchedWrites. An X86FoldableSchedWrite represents the register version of an instruction. It holds a reference to the SchedWrite to use when the instruction folds a load. This will be used inside multiclasses that define rr and rm instruction versions together. llvm-svn: 177210
-
- Mar 15, 2013
-
-
Eric Christopher authored
llvm-svn: 177135
-