- Aug 06, 2012
-
-
Jack Carter authored
These 2 relocations gain access to the highest and the second highest 16 bits of a 64 bit object. R_MIPS_HIGHER %higher(A+S) The %higher(x) function is [ (((long long) x + 0x80008000LL) >> 32) & 0xffff ]. R_MIPS_HIGHEST %highest(A+S) The %highest(x) function is [ (((long long) x + 0x800080008000LL) >> 48) & 0xffff ]. llvm-svn: 161348
-
Hal Finkel authored
The MFTB instruction itself is being phased out, and its functionality is provided by MFSPR. According to the ISA docs, using MFSPR works on all known chips except for the 601 (which did not have a timebase register anyway) and the POWER3. Thanks to Adhemerval Zanella for pointing this out! llvm-svn: 161346
-
Eric Christopher authored
Patch by David Hill. llvm-svn: 161344
-
Roman Divacky authored
llvm-svn: 161328
-
Craig Topper authored
Implement proper handling for pcmpistri/pcmpestri intrinsics. Requires custom handling in DAGISelToDAG due to limitations in TableGen's implicit def handling. Fixes PR11305. llvm-svn: 161318
-
- Aug 05, 2012
-
-
Craig Topper authored
llvm-svn: 161306
-
Craig Topper authored
Use a COPY node instead of an explicit MOVA opcode in the custom insterter for pcmpestrm/pcmpistrm. Allows the register allocator to handle it better and prevent wasted identity moves. llvm-svn: 161305
-
- Aug 04, 2012
-
-
Hal Finkel authored
On PPC64, this can be done with a simple TableGen pattern. To enable this, I've added the (otherwise missing) readcyclecounter SDNode definition to TargetSelectionDAG.td. llvm-svn: 161302
-
Anton Korobeynikov authored
llvm-svn: 161301
-
Anton Korobeynikov authored
(this corresponds by spilling/reloading regs in DTriple / DQuad reg classes). No testcase, found by inspection. llvm-svn: 161300
-
Anton Korobeynikov authored
were missed for no reason. This fixes PR13377 llvm-svn: 161299
-
Benjamin Kramer authored
Postpone the deletion of the old name in StructType::setName to allow using a slice of the old name. Fixes PR13522. Add a rudimentary unit test to exercise the behavior. llvm-svn: 161296
-
Jakob Stoklund Olesen authored
TwoAddressInstructionPass doesn't remat any more. llvm-svn: 161285
-
Jakob Stoklund Olesen authored
llvm-svn: 161284
-
Bob Wilson authored
This patch is mostly just refactoring a bunch of copy-and-pasted code, but it also adds a check that the call instructions are readnone or readonly. That check was already present for sin, cos, sqrt, log2, and exp2 calls, but it was missing for the rest of the builtins being handled in this code. llvm-svn: 161282
-
Jakob Stoklund Olesen authored
No functional change intended, except replacing a DenseMap with a SmallDenseMap which should behave identically. llvm-svn: 161281
-
Jakob Stoklund Olesen authored
This is far from complete, and only changes behavior when the -early-live-intervals flag is passed to llc. llvm-svn: 161273
-
Akira Hatanaka authored
Change these to patterns. 2. Add another 16 instructions. Patch by Reed Kotler. llvm-svn: 161272
-
Jakob Stoklund Olesen authored
This option runs LiveIntervals before TwoAddressInstructionPass which will eventually learn to exploit and update the analysis. Eventually, LiveIntervals will run before PHIElimination, and we can get rid of LiveVariables. llvm-svn: 161270
-
Jakob Stoklund Olesen authored
Previously, the identity copy would survive through register allocation before it was removed by the rewriter. llvm-svn: 161269
-
- Aug 03, 2012
-
-
Bob Wilson authored
The previous change caused fast isel to not attempt handling any calls to builtin functions. That included things like "printf" and caused some noticable regressions in compile time. I wanted to avoid having fast isel keep a separate list of functions that had to be kept in sync with what the code in SelectionDAGBuilder.cpp was handling. I've resolved that here by moving the list into TargetLibraryInfo. This is somewhat redundant in SelectionDAGBuilder but it will ensure that we keep things consistent. llvm-svn: 161263
-
Bob Wilson authored
I noticed that SelectionDAGBuilder::visitCall was missing a check for memcmp in TargetLibraryInfo, so that it would use custom code for memcmp calls even with -fno-builtin. I also had to add a new -disable-simplify-libcalls option to llc so that I could write a test for this. llvm-svn: 161262
-
Jakob Stoklund Olesen authored
The 'unused' state of a value number can be represented as an invalid def SlotIndex. This also exposed code that shouldn't have been looking at unused value VNInfos. llvm-svn: 161258
-
Jakob Stoklund Olesen authored
Unused VNInfos should be left alone. Their def SlotIndex doesn't point to anything. llvm-svn: 161257
-
Matt Beaumont-Gay authored
llvm-svn: 161256
-
Jakob Stoklund Olesen authored
The only real user of the flag was removeCopyByCommutingDef(), and it has been switched to LiveIntervals::hasPHIKill(). All the code changed by this patch was only concerned with computing and propagating the flag. llvm-svn: 161255
-
Jakob Stoklund Olesen authored
The VNInfo::HAS_PHI_KILL is only half supported. We precompute it in LiveIntervalAnalysis, but it isn't properly updated by live range splitting and functions like shrinkToUses(). It is only used in one place: RegisterCoalescer::removeCopyByCommutingDef(). This patch changes that function to use a new LiveIntervals::hasPHIKill() function that computes the flag for a given value number. llvm-svn: 161254
-
Jakob Stoklund Olesen authored
llvm-svn: 161242
-
Jakob Stoklund Olesen authored
This functionality was added before we started running DeadMachineInstructionElim on all targets. It serves no purpose now. llvm-svn: 161241
-
Gabor Greif authored
this makes this hack a bit more bearable for poor souls who need to pass custom preprocessor flags to the build process llvm-svn: 161240
-
Bob Wilson authored
Fast isel doesn't currently have support for translating builtin function calls to target instructions. For embedded environments where the library functions are not available, this is a matter of correctness and not just optimization. Most of this patch is just arranging to make the TargetLibraryInfo available in fast isel. <rdar://problem/12008746> llvm-svn: 161232
-
Bob Wilson authored
This just provides a way to look up a LibFunc::Func enum value for a function name. Alphabetize the enums and function names so we can use a binary search. llvm-svn: 161231
-
Jush Lu authored
llvm-svn: 161230
-
Bill Wendling authored
The "findUsedStructTypes" method is very expensive to run. It needs to be optimized so that LTO can run faster. Splitting this method out of the Module class will help this occur. For instance, it can keep a list of seen objects so that it doesn't process them over and over again. llvm-svn: 161228
-
Eric Christopher authored
but somehow managed to be dropped later. Patch by Karel Gardas. llvm-svn: 161226
-
Jim Grosbach authored
llvm-svn: 161222
-
- Aug 02, 2012
-
-
Jim Grosbach authored
llvm-svn: 161220
-
Jim Grosbach authored
Now that TableGen supports references to NAME w/o it being explicitly referenced in the definition's own name, use that to simplify assembly InstAlias definitions in multiclasses. llvm-svn: 161218
-
Manman Ren authored
Add more comments and use early returns to reduce nesting in isLoadFoldable. Also disable folding for V_SET0 to avoid introducing a const pool entry and a const pool load. rdar://10554090 and rdar://11873276 llvm-svn: 161207
-
Jim Grosbach authored
Previously, def NAME values were only populated, and references to NAME resolved, when NAME was referenced in the 'def' entry of the multiclass sub-entry. e.g., multiclass foo<...> { def prefix_#NAME : ... } It's useful, however, to be able to reference NAME even when the default def name is used. For example, when a multiclass has 'def : Pat<...>' or 'def : InstAlias<...>' entries which refer to earlier instruction definitions in the same multiclass. e.g., multiclass myMulti<RegisterClass rc> { def _r : myI<(outs rc:$d), (ins rc:$r), "r $d, $r", []>; def : InstAlias<\"wilma $r\", (!cast<Instruction>(NAME#\"_r\") rc:$r, rc:$r)>; } llvm-svn: 161198
-