- Aug 26, 2009
-
-
Dan Gohman authored
leads to partial-register definitions. To help avoid redundant zero-extensions, also teach the h-register matching patterns that use movzbl to match anyext as well as zext. llvm-svn: 80099
-
- Aug 15, 2009
-
-
Dan Gohman authored
the register save area if %al is 0. This avoids touching xmm regsiters when they aren't actually used. llvm-svn: 79061
-
- Aug 12, 2009
-
-
Daniel Dunbar authored
llvm-svn: 78733
-
Daniel Dunbar authored
- Used to mark fake instructions which don't correspond to an actual machine instruction (or are duplicates of a real instruction). This is to be used for "special cases" in the .td files, which should be ignored by things like the assembler and disassembler. We still need a good solution to handle pervasive duplication, like with the Int_ instructions. - Set the bit on fake "mov 0" style instructions, which allows turning an assembler matcher warning into a hard error. - -2 FIXMEs. llvm-svn: 78731
-
- Aug 11, 2009
-
-
Sean Callanan authored
tables. llvm-svn: 78721
-
Chris Lattner authored
llvm-svn: 78680
-
Sean Callanan authored
INT i8. These instructions are only for interpretation by disassemblers, not for emission, so they do not as yet have patterns. llvm-svn: 78630
-
- Aug 10, 2009
-
-
Daniel Dunbar authored
llvm-svn: 78587
-
Daniel Dunbar authored
structure. llvm-svn: 78581
-
- Aug 09, 2009
-
-
Daniel Dunbar authored
- We can now discriminate SUB32ri8 from SUB32ri, for example. llvm-svn: 78530
-
Daniel Dunbar authored
-2 FIXMEs. llvm-svn: 78523
-
- Aug 06, 2009
-
-
Anton Korobeynikov authored
llvm-svn: 78299
-
Anton Korobeynikov authored
llvm-svn: 78293
-
- Aug 05, 2009
-
-
Dan Gohman authored
PR4572. A few tests have some minor code regressions due to different coalescing. llvm-svn: 78217
-
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
Unbreak Win64 CC. Step one: honour register save area, fix some alignment and provide a different set of call-clobberred registers. llvm-svn: 77962
-
- Aug 02, 2009
-
-
Dan Gohman authored
llvm-svn: 77894
-
Dan Gohman authored
llvm-svn: 77893
-
- Jul 30, 2009
-
-
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
-
Dan Gohman authored
due to x86 encoding restrictions. This is currently off by default because it may cause code quality regressions. This is for PR4572. llvm-svn: 77565
-
- Jul 24, 2009
-
-
Sean Callanan authored
for the assembler/disassembler to use. llvm-svn: 76914
-
- Jul 22, 2009
-
-
Sean Callanan authored
assembler / disassembler. llvm-svn: 76712
-
- Jul 21, 2009
-
-
Evan Cheng authored
llvm-svn: 76536
-
- Jul 11, 2009
-
-
Chris Lattner authored
never be generated. llvm-svn: 75305
-
- Jun 30, 2009
-
-
David Greene authored
Add 256-bit memory operand support. llvm-svn: 74548
-
- Jun 27, 2009
-
-
David Greene authored
Add feature flags for AVX and FMA and fix some SSE4A feature flag initialization problems. llvm-svn: 74350
-
- Jun 24, 2009
-
-
Sean Callanan authored
llvm-svn: 74022
-
- Jun 20, 2009
-
-
Chris Lattner authored
a global with that gets printed with the :mem modifier. All operands to lea's should be handled with the lea32mem operand kind, and this allows the TLS stuff to do this. There are several better ways to do this, but I went for the minimal change since I can't really test this (beyond make check). This also makes the use of EBX explicit in the operand list in the 32-bit, instead of implicit in the instruction. llvm-svn: 73834
-
Chris Lattner authored
it as a pcrel immediate instead. This gets pc-rel weirdness out of the main printoperand codepath. llvm-svn: 73829
-
- Jun 19, 2009
-
-
Eli Friedman authored
Patch by Benedict Gaster. llvm-svn: 73753
-
- Jun 15, 2009
-
-
Bill Wendling authored
llvm-svn: 73417
-
Bill Wendling authored
that push immediate operands of 1, 2, and 4 bytes (extended to the native register size in each case). The assembly mnemonics are "pushl" and "pushq." One such instruction appears at the beginning of the "start" function , so this is essential for accurate disassembly when unwinding." Patch by Sean Callanan! llvm-svn: 73407
-
- Jun 03, 2009
-
-
Dan Gohman authored
relocation model on x86-64. Higher level logic should override the relocation model to PIC on x86_64-apple-darwin. llvm-svn: 72746
-
- Jun 02, 2009
-
-
Evan Cheng authored
llvm-svn: 72734
-
Dale Johannesen authored
llvm-svn: 72712
-
Dale Johannesen authored
ADDC/ADDE use MVT::i1 (later, whatever it gets legalized to) instead of MVT::Flag. Remove CARRY_FALSE in favor of 0; adjust all target-independent code to use this format. Most targets will still produce a Flag-setting target-dependent version when selection is done. X86 is converted to use i32 instead, which means TableGen needs to produce different code in xxxGenDAGISel.inc. This keys off the new supportsHasI1 bit in xxxInstrInfo, currently set only for X86; in principle this is temporary and should go away when all other targets have been converted. All relevant X86 instruction patterns are modified to represent setting and using EFLAGS explicitly. The same can be done on other targets. The immediate behavior change is that an ADC/ADD pair are no longer tightly coupled in the X86 scheduler; they can be separated by instructions that don't clobber the flags (MOV). I will soon add some peephole optimizations based on using other instructions that set the flags to feed into ADC. llvm-svn: 72707
-
- May 29, 2009
-
-
Evan Cheng authored
llvm-svn: 72558
-
- May 20, 2009
-
-
Evan Cheng authored
llvm-svn: 72160
-
Evan Cheng authored
llvm-svn: 72154
-
- May 18, 2009
-
-
Dale Johannesen authored
llvm-svn: 72045
-