- Jun 22, 2012
-
-
Lang Hames authored
boolean flag to an enum: { Fast, Standard, Strict } (default = Standard). This option controls the creation by optimizations of fused FP ops that store intermediate results in higher precision than IEEE allows (E.g. FMAs). The behavior of this option is intended to match the behaviour specified by a soon-to-be-introduced frontend flag: '-ffuse-fp-ops'. Fast mode - allows formation of fused FP ops whenever they're profitable. Standard mode - allow fusion only for 'blessed' FP ops. At present the only blessed op is the fmuladd intrinsic. In the future more blessed ops may be added. Strict mode - allow fusion only if/when it can be proven that the excess precision won't effect the result. Note: This option only controls formation of fused ops by the optimizers. Fused operations that are explicitly requested (e.g. FMA via the llvm.fma.* intrinsic) will always be honored, regardless of the value of this option. Internally TargetOptions::AllowExcessFPPrecision has been replaced by TargetOptions::AllowFPOpFusion. llvm-svn: 158956
-
Hal Finkel authored
The existing contraction patterns are replaced with fma/fneg. Overall functionality should be the same. llvm-svn: 158955
-
Nuno Lopes authored
sorry for the churn :S enough for today; going to sleep. llvm-svn: 158953
-
Nuno Lopes authored
remove extractMallocCallFromBitCast, since it was tailor maded for its sole user. Update GlobalOpt accordingly. llvm-svn: 158952
-
Nuno Lopes authored
instcombine: disable optimization of 'invoke null/undef'. I'll move this functionality to SimplifyCFG (since we cannot make changes to the CFG here). Fixes the crashes with the attached test case llvm-svn: 158951
-
-
- Jun 21, 2012
-
-
Jack Carter authored
to be generic across architectures. It has the following description in the gnu sources: Negate the immediate constant Several Architectures such as x86 have local implementations of operand modifier 'n' which go beyond the above description slightly. This won't affect them. Affected files: lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp Added 'n' to the switch cases. test/CodeGen/Generic/asm-large-immediate.ll Generic compiled test (x86 for me) test/CodeGen/Mips/asm-large-immediate.ll Mips compiled version of the generic one Contributer: Jack Carter llvm-svn: 158939
-
Nuno Lopes authored
Update comments accordingly. Make instcombine remove useless invokes to C++'s 'new' allocation function (test attached). llvm-svn: 158937
-
Akira Hatanaka authored
2. re-enable null.ll test 3. fix some minor style violations Patch by Reed Kotler. llvm-svn: 158935
-
Hal Finkel authored
Thanks to Tobias von Koch for pointing out this problem. llvm-svn: 158932
-
Nuno Lopes authored
Thanks to Chandler for pointing out the problem. llvm-svn: 158928
-
Pete Cooper authored
llvm-svn: 158927
-
Jack Carter authored
to be generic across architectures. It has the following description in the gnu sources: Substitute immediate value without immediate syntax Several Architectures such as x86 have local implementations of operand modifier 'c' which go beyond the above description slightly. To make use of the generic modifiers without overriding local implementation one can make a call to the base class method for AsmPrinter::PrintAsmOperand() in the locally derived method's "default" case in the switch statement. That way if it is already defined locally the generic version will never get called. This change is needed when test/CodeGen/generic/asm-large-immediate.ll failed on a native Mips board. The test was assuming a generic implementation was in place. Affected files: lib/Target/Mips/MipsAsmPrinter.cpp: Changed the default case to call the base method. lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp Added 'c' to the switch cases. test/CodeGen/Mips/asm-large-immediate.ll Mips compiled version of the generic one Contributer: Jack Carter llvm-svn: 158925
-
Nuno Lopes authored
hopefully fix the buildbots: some tests have wrong definitions of malloc and were crashing this code on 64 bits machines llvm-svn: 158923
-
Nuno Lopes authored
port the BoundsChecking patch to the new MemoryBuiltin API (i.e., remove most of the code from here). Remove the alloc_size.ll test until we settle on a metadata format that makes everyone happy.. llvm-svn: 158920
-
Nuno Lopes authored
- provide more extensive set of functions to detect library allocation functions (e.g., malloc, calloc, strdup, etc) - provide an API to compute the size and offset of an object pointed by Move a few clients (GVN, AA, instcombine, ...) to the new API. This implementation is a lot more aggressive than each of the custom implementations being replaced. Patch reviewed by Nick Lewycky and Chandler Carruth, thanks. llvm-svn: 158919
-
Nadav Rotem authored
A patch by Tom Stellard with minor changes. llvm-svn: 158918
-
Lang Hames authored
llvm-svn: 158902
-
Evan Cheng authored
_umodsi3 libcalls if they have the same arguments. This optimization was apparently broken if one of the node was replaced in place. rdar://11714607 llvm-svn: 158900
-
Jakob Stoklund Olesen authored
Old code would only update physreg live intervals. llvm-svn: 158881
-
Jakob Stoklund Olesen authored
llvm-svn: 158878
-
Jakob Stoklund Olesen authored
I don't think anyone has been using this functionality for a while, and it is getting in the way of refactoring now. llvm-svn: 158876
-
Jakob Stoklund Olesen authored
Register allocators depend on it being permanently enabled now. llvm-svn: 158873
-
Jakob Stoklund Olesen authored
Deterministically enumerate the virtual registers instead. llvm-svn: 158872
-
Jakob Stoklund Olesen authored
They are living in LiveRegMatrix now. llvm-svn: 158868
-
Jakob Stoklund Olesen authored
Stop depending on the LiveIntervalUnions in RegAllocBase, they are about to be removed. The changes are mostly replacing register alias iterators with regunit iterators, and querying LiveRegMatrix instrad of RegAllocBase. InterferenceCache is converted to work with per-regunit LiveIntervalUnions, and it checks fixed regunit interference separately, using the fixed live intervals provided by LiveIntervalAnalysis. The local splitting helper calcGapWeights() is also considering fixed regunit interference which is kept on the side now. llvm-svn: 158867
-
Jakob Stoklund Olesen authored
Stop using the LiveIntervalUnions provided by RegAllocBase, they will be removed soon. llvm-svn: 158866
-
Jakob Stoklund Olesen authored
Soon we won't need to compute live intervals for physical registers. llvm-svn: 158865
-
Jakob Stoklund Olesen authored
Filter out physreg candidates with regunit interferrence. Also compute regmask interference more efficiently. llvm-svn: 158864
-
- Jun 20, 2012
-
-
Jakob Stoklund Olesen authored
That is a DenseMap iterator keyed by pointers, so the iteration order is nondeterministic. I would like to replace the DenseMap with an IndexedMap which doesn't allow iteration. llvm-svn: 158856
-
Akira Hatanaka authored
llvm-svn: 158855
-
Akira Hatanaka authored
that are generated by TableGen and are already available in MipsGenRegisterInfo.inc. Suggested by Jakob Stoklund Olesen. Also, fix bug in function DecodeAFGR64RegisterClass. Patch by Vladimir Medic. llvm-svn: 158846
-
Kaelyn Uhrain authored
llvm-svn: 158844
-
Kaelyn Uhrain authored
llvm-svn: 158841
-
Pete Cooper authored
Add users of a MERGE_VALUE node to the worklist to process again when the node is removed. Sorry, no test case. Foudn it by inspection of the code llvm-svn: 158839
-
Jakob Stoklund Olesen authored
Regunit live ranges are computed on demand, so when mi-sched calls handleMove, some regunits may not have live ranges yet. That makes updating them easier: Just skip the non-existing ranges. They will be computed correctly from the rescheduled machine code when they are needed. llvm-svn: 158831
-
Nuno Lopes authored
replace usage of EmitGEPOffset() with TargetData::getIndexedOffset() when the GEP offset is known to be constant. With this change, we avoid relying on the IR Builder to constant fold the operations. No functionality change intended. llvm-svn: 158829
-
Jakob Stoklund Olesen authored
llvm-svn: 158827
-
Hal Finkel authored
llvm-svn: 158823
-
Hal Finkel authored
The test case for this will come with the PPC indexed preinc loads commit. llvm-svn: 158822
-