- Aug 10, 2009
-
-
Owen Anderson authored
llvm-svn: 78595
-
Owen Anderson authored
llvm-svn: 78593
-
Owen Anderson authored
Start moving TargetLowering away from using full MVTs and towards SimpleValueType, which will simplify the privatization of IntegerType in the future. llvm-svn: 78584
-
- Aug 06, 2009
-
-
Anton Korobeynikov authored
subtle bug with small code model. llvm-svn: 78255
-
- Aug 05, 2009
-
-
Dan Gohman authored
Instead of awkwardly encoding calling-convention information with ISD::CALL, ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering provides three virtual functions for targets to override: LowerFormalArguments, LowerCall, and LowerRet, which replace the custom lowering done on the special nodes. They provide the same information, but in a more immediately usable format. This also reworks much of the target-independent tail call logic. The decision of whether or not to perform a tail call is now cleanly split between target-independent portions, and the target dependent portion in IsEligibleForTailCallOptimization. This also synchronizes all in-tree targets, to help enable future refactoring and feature work. llvm-svn: 78142
-
- Aug 03, 2009
-
-
Anton Korobeynikov authored
llvm-svn: 77965
-
Anton Korobeynikov authored
Add 'Indirect' LocInfo class and use to pass __m128 on win64. Also minore fixes here and there (mostly __m64). llvm-svn: 77964
-
Anton Korobeynikov authored
Cleanup Darwin MMX calling conv stuff - make the stuff more generic. This also fixes a subtle bug, when 6th v1i64 argument passed wrongly. llvm-svn: 77963
-
Anton Korobeynikov authored
Unbreak Win64 CC. Step one: honour register save area, fix some alignment and provide a different set of call-clobberred registers. llvm-svn: 77962
-
Rafael Espindola authored
Thanks to Eli Friedman for noticing it. llvm-svn: 77942
-
Rafael Espindola authored
Fixes PR4669 llvm-svn: 77940
-
- Aug 01, 2009
-
-
Dan Gohman authored
llvm-svn: 77795
-
- Jul 31, 2009
-
-
Chris Lattner authored
initialize method, which can be called when an MCContext is available. llvm-svn: 77687
-
- Jul 30, 2009
-
-
Dan Gohman authored
classes. And define its SubRegClassList. llvm-svn: 77601
-
Evan Cheng authored
Optimize some common usage patterns of atomic built-ins __sync_add_and_fetch() and __sync_sub_and_fetch. When the return value is not used (i.e. only care about the value in the memory), x86 does not have to use add to implement these. Instead, it can use add, sub, inc, dec instructions with the "lock" prefix. This is currently implemented using a bit of instruction selection trick. The issue is the target independent pattern produces one output and a chain and we want to map it into one that just output a chain. The current trick is to select it into a merge_values with the first definition being an implicit_def. The proper solution is to add new ISD opcodes for the no-output variant. DAG combiner can then transform the node before it gets to target node selection. Problem #2 is we are adding a whole bunch of x86 atomic instructions when in fact these instructions are identical to the non-lock versions. We need a way to add target specific information to target nodes and have this information carried over to machine instructions. Asm printer (or JIT) can use this information to add the "lock" prefix. llvm-svn: 77582
-
- Jul 29, 2009
-
-
Eric Christopher authored
llvm-svn: 77480
-
Chris Lattner authored
llvm-svn: 77438
-
Eric Christopher authored
llvm-svn: 77415
-
Eric Christopher authored
to ptest instruction plus setcc. Revamp ptest instruction. Add test. llvm-svn: 77407
-
- Jul 28, 2009
-
-
Owen Anderson authored
llvm-svn: 77366
-
Chris Lattner authored
mode, and "ld64" (the default linker) falls back to it in -static mode. llvm-svn: 77334
-
Chris Lattner authored
it is highly specific to the object file that will be generated in the end, this introduces a new TargetLoweringObjectFile interface that is implemented for each of ELF/MachO/COFF/Alpha/PIC16 and XCore. Though still is still a brutal and ugly refactoring, this is a major step towards goodness. This patch also: 1. fixes a bunch of dangling pointer problems in the PIC16 backend. 2. disables the TargetLowering copy ctor which PIC16 was accidentally using. 3. gets us closer to xcore having its own crazy target section flags and pic16 not having to shadow sections with its own objects. 4. fixes wierdness where ELF targets would set CStringSection but not CStringSection_. Factor the code better. 5. fixes some bugs in string lowering on ELF targets. llvm-svn: 77294
-
- Jul 27, 2009
-
-
Owen Anderson authored
llvm-svn: 77247
-
- Jul 25, 2009
-
-
Owen Anderson authored
Revert the ConstantInt constructors back to their 2.5 forms where possible, thanks to contexts-on-types. More to come. llvm-svn: 77011
-
- Jul 24, 2009
-
-
Eric Christopher authored
to support vector arguments and scalar arguments correctly. Update lowering and fix comment to refer to pinsr* instead of insertps. llvm-svn: 76921
-
- Jul 22, 2009
-
-
Eli Friedman authored
llvm-svn: 76713
-
Owen Anderson authored
llvm-svn: 76702
-
- Jul 21, 2009
-
-
Eli Friedman authored
be useful, and it's currently unused. (Some issues: it isn't actually rich enough to capture the semantics on many architectures, and semantics can vary depending on the type being shifted.) llvm-svn: 76633
-
Dale Johannesen authored
llvm-svn: 76517
-
Dale Johannesen authored
flags set properly. (hasMemory is clearly irrelevant when matching 'i', I don't understand what this was supposed to be doing.) gcc.apple/asm-block-25.c (test passed before by accident, but generated code was wrong) llvm-svn: 76503
-
- Jul 20, 2009
-
-
Chris Lattner authored
llvm-svn: 76441
-
- Jul 18, 2009
-
-
Evan Cheng authored
Fix x86 inline ams 'q' constraint support. In 32-bit mode, it's just like 'Q', i.e. EAX, EDX, ECX, EBX. In 64-bit mode, it just means all the i64r registers. Yeah, that makes sense. llvm-svn: 76248
-
- Jul 15, 2009
-
-
Owen Anderson authored
llvm-svn: 75840
-
- Jul 14, 2009
-
-
Torok Edwin authored
This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed"). llvm-svn: 75640
-
- Jul 11, 2009
-
-
Chris Lattner authored
Basically, using: lea symbol(%rip), %rax is not valid in -static mode, because the current RIP may not be within 32-bits of "symbol" when an app is built partially pic and partially static. The fix for this is to compile it to: lea symbol, %rax It would be better to codegen this as: movq $symbol, %rax but that will come next. The hard part of fixing this bug was fixing abi-isel, which was actively testing for the wrong behavior. Also, the RUN lines are completely impossible to understand what they are testing. To help with this, convert the -static x86-64 codegen tests to use filecheck. This is much more stable and makes it more clear what the codegen is expected to be. llvm-svn: 75382
-
Torok Edwin authored
Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG builds. llvm-svn: 75379
-
- Jul 10, 2009
-
-
Chris Lattner authored
llvm-svn: 75276
-
Chris Lattner authored
add a couple of predicates to test for "stub style pic in PIC mode" and "stub style pic in dynamic-no-pic" mode. llvm-svn: 75273
-
Chris Lattner authored
need for other purposes. llvm-svn: 75243
-
Chris Lattner authored
done in ClassifyGlobalReference instead of reconstructing the info awkwardly. llvm-svn: 75240
-