|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| ... |  | 
| | 
| 
| 
| | llvm-svn: 156615 | 
| | 
| 
| 
| 
| 
| 
| | This fixes a TODO from 2007 :) Previously, LLVM would emit the wrong
code here (see the update to test/CodeGen/X86/tls-pie.ll).
llvm-svn: 156611 | 
| | 
| 
| 
| 
| 
| | but it generates int3 on x86 instead of ud2.
llvm-svn: 156593 | 
| | 
| 
| 
| | llvm-svn: 156579 | 
| | 
| 
| 
| | llvm-svn: 156541 | 
| | 
| 
| 
| | llvm-svn: 156540 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | the program.
Starting r155461 we are able to select patterns for vbroadcast even when the load op is used by other users.
Fix PR11900.
llvm-svn: 156539 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | The getPointerRegClass() hook will return GR32_TC, or whatever is
appropriate for the current function.
Patch by Yiannis Tsiouris!
llvm-svn: 156459 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | Share the CalleeSavedRegs defs between all calling conventions having no
callee-saved registers.
Patch by Yiannis Tsiouris!
llvm-svn: 156382 | 
| | 
| 
| 
| 
| 
| | done for 128-bit.
llvm-svn: 156375 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | The getPointerRegClass() hook can return register classes that depend on
the calling convention of the current function (ptr_rc_tailcall).
So far, we have been able to infer the calling convention from the
subtarget alone, but as we add support for multiple calling conventions
per target, that no longer works.
Patch by Yiannis Tsiouris!
llvm-svn: 156328 | 
| | 
| 
| 
| 
| 
| 
| | single use.
rdar://11360370
llvm-svn: 156316 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This patch will optimize -(x != 0) on X86
FROM 
cmpl	$0x01,%edi
sbbl	%eax,%eax
notl	%eax
TO
negl %edi
sbbl %eax %eax
In order to generate negl, I added patterns in Target/X86/X86InstrCompiler.td:
def : Pat<(X86sub_flag 0, GR32:$src), (NEG32r GR32:$src)>;
rdar: 10961709
llvm-svn: 156312 | 
| | 
| 
| 
| | llvm-svn: 156287 | 
| | 
| 
| 
| | llvm-svn: 156281 | 
| | 
| 
| 
| 
| 
| | Simplify some of the decode functions.
llvm-svn: 156268 | 
| | 
| 
| 
| 
| 
| | looked through for DAG combine purposes.
llvm-svn: 156266 | 
| | 
| 
| 
| | llvm-svn: 156265 | 
| | 
| 
| 
| | llvm-svn: 156241 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This will be used to determine whether it's profitable to turn a select into a
branch when the branch is likely to be predicted.
Currently enabled for everything but Atom on X86 and Cortex-A9 devices on ARM.
I'm not entirely happy with the name of this flag, suggestions welcome ;)
llvm-svn: 156233 | 
| | 
| 
| 
| | llvm-svn: 156194 | 
| | 
| 
| 
| | llvm-svn: 156159 | 
| | 
| 
| 
| | llvm-svn: 156158 | 
| | 
| 
| 
| | llvm-svn: 156157 | 
| | 
| 
| 
| | llvm-svn: 156156 | 
| | 
| 
| 
| | llvm-svn: 156154 | 
| | 
| 
| 
| 
| 
| | This information in now computed by TableGen.
llvm-svn: 156152 | 
| | 
| 
| 
| 
| 
| | vector elements.
llvm-svn: 156060 | 
| | 
| 
| 
| 
| 
| | lower half correctly. Missed in r155982.
llvm-svn: 156059 | 
| | 
| 
| 
| 
| 
| 
| | and Hybrid for 32 bit, since benchmarks show ILP scheduling is better
most of the time.
llvm-svn: 156028 | 
| | 
| 
| 
| 
| 
| | Lincroft and Medfield.
llvm-svn: 156025 | 
| | 
| 
| 
| 
| 
| | by providing the latencies for the instructions in X86InstrFPStack.td.
llvm-svn: 155996 | 
| | 
| 
| 
| 
| 
| 
| 
| | The commit is intended to fix rdar://10961709.
But it is the root cause of PR12720.
Revert it for now.
llvm-svn: 155992 | 
| | 
| 
| 
| 
| 
| | for AsmPrinter.
llvm-svn: 155982 | 
| | 
| 
| 
| | llvm-svn: 155959 | 
| | 
| 
| 
| | llvm-svn: 155956 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | in order to avoid assertion failures in the register scavenger. The assertion
failures were “Bad machine code: Using an undefined physical register” and
“Bad machine code: MBB exits via unconditional fall-through but its successor
differs from its CFG successor!”.
llvm-svn: 155930 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This patch will optimize the following cases on X86
(a > b) ? (a-b) : 0
(a >= b) ? (a-b) : 0
(b < a) ? (a-b) : 0
(b <= a) ? (a-b) : 0
FROM
movl    %edi, %ecx
subl    %esi, %ecx
cmpl    %edi, %esi
movl    $0, %eax
cmovll  %ecx, %eax
TO
xorl    %eax, %eax
subl    %esi, %edi
cmovll  %eax, %edi
movl    %edi, %eax
rdar: 10734411
llvm-svn: 155919 | 
| | 
| 
| 
| 
| 
| | (to generate debug info for local variables) if stack needs realignment
llvm-svn: 155917 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | The TargetPassManager's default constructor wants to initialize the PassManager
to 'null'. But it's illegal to bind a null reference to a null l-value. Make the
ivar a pointer instead.
PR12468
llvm-svn: 155902 | 
| | 
| 
| 
| | llvm-svn: 155899 | 
| | 
| 
| 
| 
| 
| | Bulldozer feature list.
llvm-svn: 155897 | 
| | 
| 
| 
| | llvm-svn: 155896 | 
| | 
| 
| 
| | llvm-svn: 155891 | 
| | 
| 
| 
| 
| 
| | and HasCLMUL predicates.
llvm-svn: 155890 | 
| | 
| 
| 
| | llvm-svn: 155888 | 
| | 
| 
| 
| | llvm-svn: 155885 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This patch will optimize -(x != 0) on X86
FROM 
cmpl	$0x01,%edi
sbbl	%eax,%eax
notl	%eax
TO
negl %edi
sbbl %eax %eax
llvm-svn: 155853 | 
| | 
| 
| 
| | llvm-svn: 155832 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | On x86-32, structure return via sret lets the callee pop the hidden
pointer argument off the stack, which the caller then re-pushes.
However if the calling convention is fastcc, then a register is used
instead, and the caller should not adjust the stack. This is
implemented with a check of IsTailCallConvention
X86TargetLowering::LowerCall but is now checked properly in
X86FastISel::DoSelectCall.
(this time, actually commit what was reviewed!)
llvm-svn: 155825 |