- Mar 06, 2012
-
-
Eli Friedman authored
llvm-svn: 152136
-
- Mar 05, 2012
-
-
Jim Grosbach authored
Used to allow context sensitive printing of super-register or sub-register references. llvm-svn: 152043
-
Chad Rosier authored
Specifically, remove the magic number when checking to see if the copy has a glue operand and simplify the checking logic. rdar://10930395 llvm-svn: 152041
-
Eli Friedman authored
llvm-svn: 152014
-
- Mar 04, 2012
-
-
Craig Topper authored
llvm-svn: 152001
-
Craig Topper authored
llvm-svn: 151996
-
Craig Topper authored
Use uint8_t instead of enums to store values in X86 disassembler table. Shaves 150k off the size of X86DisassemblerDecoder.o llvm-svn: 151995
-
- Mar 02, 2012
-
-
Chad Rosier authored
In this instance we are generating the tail-call during legalizeDAG. The 2nd floor call can't be a tail call because it clobbers %xmm1, which is defined by the first floor call. The first floor call can't be a tail-call because it's not in the tail position. The only reasonable way I could think to fix this in a target-independent manner was to check for glue logic on the copy reg. rdar://10930395 llvm-svn: 151877
-
- Mar 01, 2012
-
-
Michael J. Spencer authored
llvm-svn: 151849
-
- Feb 29, 2012
-
-
Kevin Enderby authored
So with darwin's otool(1) an x86_64 hello world .o file will print: leaq L_.str(%rip), %rax ## literal pool for: Hello world llvm-svn: 151769
-
Andrew Trick authored
Patch by Tyler Nowicki! llvm-svn: 151743
-
Derek Schuff authored
llvm-svn: 151687
-
- Feb 28, 2012
-
-
Evan Cheng authored
llvm-svn: 151645
-
Daniel Dunbar authored
Revert r151623 "Some ARM implementaions, e.g. A-series, does return stack prediction. ...", it is breaking the Clang build during the Compiler-RT part. llvm-svn: 151630
-
Evan Cheng authored
the processor keeps a return addresses stack (RAS) which stores the address and the instruction execution state of the instruction after a function-call type branch instruction. Calling a "noreturn" function with normal call instructions (e.g. bl) can corrupt RAS and causes 100% return misprediction so LLVM should use a unconditional branch instead. i.e. mov lr, pc b _foo The "mov lr, pc" is issued in order to get proper backtrace. rdar://8979299 llvm-svn: 151623
-
Preston Gurd authored
This patch adds instruction latencies for the SSE instructions to the instruction scheduler for the Intel Atom. llvm-svn: 151590
-
- Feb 27, 2012
-
-
Chad Rosier authored
rdar://10921670 PR11935 llvm-svn: 151543
-
Craig Topper authored
llvm-svn: 151510
-
- Feb 25, 2012
-
-
NAKAMURA Takumi authored
Target/X86: Fix assertion failures and warnings caused by r151382 _ftol2 lowering for i386-*-win32 targets. Patch by Joe Groff. [Joe Groff] Hi everyone. My previous patch applied as r151382 had a few problems: Clang raised a warning, and X86 LowerOperation would assert out for fptoui f64 to i32 because it improperly lowered to an illegal BUILD_PAIR. Here's a patch that addresses these issues. Let me know if any other changes are necessary. Thanks. llvm-svn: 151432
-
- Feb 24, 2012
-
-
Michael J. Spencer authored
used by the Win32 _ftol2 runtime function. Patch by Joe Groff! llvm-svn: 151382
-
Pete Cooper authored
Turn avx insert intrinsic calls into INSERT_SUBVECTOR DAG nodes and remove duplicate patterns for selecting the intrinsics llvm-svn: 151342
-
- Feb 23, 2012
-
-
Kevin Enderby authored
rdar://10873652 As part of this I updated the llvm-mc disassembler C API to always call the SymbolLookUp call back even if there is no getOpInfo call back. If there is a getOpInfo call back that is tried first and then if that gets no information then the SymbolLookUp is called. I also made the code more robust by memset(3)'ing to zero the LLVMOpInfo1 struct before then setting SymbolicOp.Value before for the call to getOpInfo. And also don't use any values from the LLVMOpInfo1 struct if getOpInfo returns 0. And also don't use any of the ReferenceType or ReferenceName values from SymbolLookUp if it returns NULL. rdar://10873563 and rdar://10873683 For the X86 target also fixed bugs so the annotations get printed. Also fixed a few places in the ARM target that was not producing symbolic operands for some instructions. rdar://10878166 llvm-svn: 151267
-
- Feb 22, 2012
-
-
Michael J. Spencer authored
Patch by Joe Groff! llvm-svn: 151183
-
Chad Rosier authored
llvm-svn: 151169
-
Craig Topper authored
Declare register classes as const. Fix a couple pointers to register classes that weren't already const. llvm-svn: 151138
-
Craig Topper authored
Make all pointers to TargetRegisterClass const since they are all pointers to static data that should not be modified. llvm-svn: 151134
-
Aaron Ballman authored
llvm-svn: 151123
-
- Feb 19, 2012
-
-
Ahmed Charles authored
llvm-svn: 150918
-
Craig Topper authored
Remove some unneeded includes and fix ordering in X86ISelLowering.cpp. Remove unneeded 'using namespace'. llvm-svn: 150916
-
Craig Topper authored
llvm-svn: 150913
-
Craig Topper authored
Make a bunch of X86ISelLowering shuffle functions static now that they are no longer needed by isel. llvm-svn: 150908
-
Jia Liu authored
llvm-svn: 150902
-
Craig Topper authored
llvm-svn: 150899
-
- Feb 18, 2012
-
-
Jia Liu authored
Emacs-tag and some comment fix for all ARM, CellSPU, Hexagon, MBlaze, MSP430, PPC, PTX, Sparc, X86, XCore. llvm-svn: 150878
-
Craig Topper authored
llvm-svn: 150874
-
Craig Topper authored
Add X86 assembler and disassembler support for AMD SVM instructions. Original patch by Kay Tiong Khoo. Few tweaks by me for code density and to reduce replication. llvm-svn: 150873
-
- Feb 17, 2012
-
-
Craig Topper authored
llvm-svn: 150795
-
- Feb 16, 2012
-
-
Jakob Stoklund Olesen authored
Call clobbers are now represented with register mask operands. The regmask can easily represent the fact that xmm6 is call-preserved while ymm6 isn't. This is automatically computed by TableGen from the CalleeSavedRegs containing xmm6. llvm-svn: 150709
-
Jakob Stoklund Olesen authored
The different calling conventions and call-preserved registers are represented with regmask operands that are added dynamically. llvm-svn: 150708
-
Jakob Stoklund Olesen authored
Call instructions no longer have a list of 43 call-clobbered registers. Instead, they get a single register mask operand with a bit vector of call-preserved registers. This saves a lot of memory, 42 x 32 bytes = 1344 bytes per call instruction, and it speeds up building call instructions because those 43 imp-def operands no longer need to be added to use-def lists. (And removed and shifted and re-added for every explicit call operand). Passes like LiveVariables, LiveIntervals, RAGreedy, PEI, and BranchFolding are significantly faster because they can deal with call clobbers in bulk. Overall, clang -O2 is between 0% and 8% faster, uniformly distributed depending on call density in the compiled code. Debug builds using clang -O0 are 0% - 3% faster. I have verified that this patch doesn't change the assembly generated for the LLVM nightly test suite when building with -disable-copyprop and -disable-branch-fold. Branch folding behaves slightly differently in a few cases because call instructions have different hash values now. Copy propagation flushes its data structures when it crosses a register mask operand. This causes it to leave a few dead copies behind, on the order of 20 instruction across the entire nightly test suite, including SPEC. Fixing this properly would require the pass to use different data structures. llvm-svn: 150638
-