Commit Graph

263 Commits

Author SHA1 Message Date
Andrew Lenharth 9b254eed32 llvm.memory.barrier, and impl for x86 and alpha
llvm-svn: 47204
2008-02-16 01:24:58 +00:00
Chris Lattner eb63b09206 upgrade some entries, remove stuff that is done.
llvm-svn: 47109
2008-02-14 06:19:02 +00:00
Chris Lattner ff5998e66b add a note, remove a done deed.
llvm-svn: 45869
2008-01-11 18:00:13 +00:00
Arnold Schwaighofer 6cf72fbbaf Improve tail call optimized call's argument lowering. Before this
commit all arguments where moved to the stack slot where they would
reside on a normal function call before the lowering to the tail call
stack slot. This was done to prevent arguments overwriting each other.
Now only arguments sourcing from a FORMAL_ARGUMENTS node or a
CopyFromReg node with virtual register (could also be a caller's
argument) are lowered indirectly.

 --This line, and those below, will be ignored--

M    X86/X86ISelLowering.cpp
M    X86/README.txt

llvm-svn: 45867
2008-01-11 16:49:42 +00:00
Chris Lattner 9129f51f9b add a testcase
llvm-svn: 45768
2008-01-09 00:37:18 +00:00
Chris Lattner ef81aa75f6 add a note that is important for some fp apps.
llvm-svn: 45723
2008-01-07 21:59:58 +00:00
Chris Lattner 3b6a82118b Fold comparisons against a constant nan, and optimize ORD/UNORD
comparisons with a constant.  This allows us to compile isnan to:

_foo:
	fcmpu cr7, f1, f1
	mfcr r2
	rlwinm r3, r2, 0, 31, 31
	blr 

instead of:

LCPI1_0:					;  float
	.space	4
_foo:
	lis r2, ha16(LCPI1_0)
	lfs f0, lo16(LCPI1_0)(r2)
	fcmpu cr7, f1, f0
	mfcr r2
	rlwinm r3, r2, 0, 31, 31
	blr 

llvm-svn: 45405
2007-12-29 08:37:08 +00:00
Chris Lattner 33de0c6e92 this xform is implemented.
llvm-svn: 45404
2007-12-29 08:19:39 +00:00
Chris Lattner 8013bd339b avoid going through a stack slot to convert from fpstack to xmm reg
if we are just going to store it back anyway.  This improves things 
like:
double foo();
void bar(double *P) { *P = foo(); }

llvm-svn: 45399
2007-12-29 06:41:28 +00:00
Chris Lattner 62ba67c0f7 add a note
llvm-svn: 45397
2007-12-29 05:51:58 +00:00
Chris Lattner d798002401 add a note.
llvm-svn: 45387
2007-12-28 21:50:40 +00:00
Chris Lattner 6c234bf58f add a simple hack
llvm-svn: 45343
2007-12-24 19:27:46 +00:00
Chris Lattner 2583a66295 add an obvious load folding missed optzn.
llvm-svn: 45161
2007-12-18 16:48:14 +00:00
Chris Lattner ad05e17491 add a note
llvm-svn: 44637
2007-12-05 22:58:19 +00:00
Chris Lattner ab98c41337 add a note
llvm-svn: 44299
2007-11-24 06:13:33 +00:00
Chris Lattner 389d430c49 add a note
llvm-svn: 43642
2007-11-02 17:04:20 +00:00
Evan Cheng c826ac533b New entry.
llvm-svn: 43420
2007-10-28 04:01:09 +00:00
Evan Cheng 7f3d02471d Loosen up iv reuse to allow reuse of the same stride but a larger type when truncating from the larger type to smaller type is free.
e.g.
Turns this loop:
LBB1_1: # entry.bb_crit_edge
        xorl    %ecx, %ecx
        xorw    %dx, %dx
        movw    %dx, %si
LBB1_2: # bb
        movl    L_X$non_lazy_ptr, %edi
        movw    %si, (%edi)
        movl    L_Y$non_lazy_ptr, %edi
        movw    %dx, (%edi)
		addw    $4, %dx
		incw    %si
		incl    %ecx
		cmpl    %eax, %ecx
		jne     LBB1_2  # bb
	
into

LBB1_1: # entry.bb_crit_edge
        xorl    %ecx, %ecx
        xorw    %dx, %dx
LBB1_2: # bb
        movl    L_X$non_lazy_ptr, %esi
        movw    %cx, (%esi)
        movl    L_Y$non_lazy_ptr, %esi
        movw    %dx, (%esi)
        addw    $4, %dx
		incl    %ecx
        cmpl    %eax, %ecx
        jne     LBB1_2  # bb

llvm-svn: 43375
2007-10-26 01:56:11 +00:00
Arnold Schwaighofer 1f0da1fefb Corrected many typing errors. And removed 'nest' parameter handling
for fastcc from X86CallingConv.td.  This means that nested functions
are not supported for calling convention 'fastcc'.

llvm-svn: 42934
2007-10-12 21:30:57 +00:00
Evan Cheng 409fa443fc Update.
llvm-svn: 42922
2007-10-12 18:22:55 +00:00
Arnold Schwaighofer 9ccea99165 Added tail call optimization to the x86 back end. It can be
enabled by passing -tailcallopt to llc.  The optimization is
performed if the following conditions are satisfied:
* caller/callee are fastcc
* elf/pic is disabled OR
  elf/pic enabled + callee is in module + callee has
  visibility protected or hidden

llvm-svn: 42870
2007-10-11 19:40:01 +00:00
Dan Gohman 6d28778bfd This is done.
llvm-svn: 42785
2007-10-09 15:42:21 +00:00
Evan Cheng 42a13757de This is done.
llvm-svn: 42656
2007-10-05 22:34:59 +00:00
Chris Lattner 1f2b5f0e13 add a note.
llvm-svn: 42607
2007-10-04 15:47:27 +00:00
Chris Lattner 4bdb84fe53 add a note
llvm-svn: 42579
2007-10-03 17:10:03 +00:00
Chris Lattner 21ba176c4b Bill's example is still not enough to repro this, but it has other issues that
seem significant as well.

llvm-svn: 42564
2007-10-03 03:40:24 +00:00
Bill Wendling 3efc0758ae Another micro-opt.
llvm-svn: 42554
2007-10-02 21:49:31 +00:00
Bill Wendling f214ff8701 Another missed optimization with LICM.
llvm-svn: 42552
2007-10-02 21:43:06 +00:00
Bill Wendling 96ed3bb2d4 Now with LL code!
llvm-svn: 42547
2007-10-02 20:54:32 +00:00
Bill Wendling 9c4d61b523 Another missed optimization.
llvm-svn: 42546
2007-10-02 20:42:59 +00:00
Chris Lattner c9e7b8ec50 move PR1160 here.
llvm-svn: 42347
2007-09-26 06:29:31 +00:00
Evan Cheng 8c3c198499 New entry.
llvm-svn: 41810
2007-09-10 22:16:37 +00:00
Chris Lattner 6777b72659 Add some notes about better flag handling.
llvm-svn: 41808
2007-09-10 21:43:18 +00:00
Chris Lattner 33800d1428 add some notes on really poor codegen.
llvm-svn: 41319
2007-08-23 15:22:07 +00:00
Chris Lattner 78846b69ae add a note
llvm-svn: 41178
2007-08-20 02:14:33 +00:00
Chris Lattner 750b3dfcf5 expand a note
llvm-svn: 41021
2007-08-11 18:19:07 +00:00
Chris Lattner ee44ab5b5f With evan's explicit flag representation, hopefully we will finally be
able to 3-addressify away stuff like this:

        movl    %ecx, %eax
        decl    %eax

llvm-svn: 41020
2007-08-11 18:16:46 +00:00
Christopher Lamb 44e79f8aba Use subregs to improve any_extend code generation when feasible.
llvm-svn: 41013
2007-08-10 22:22:41 +00:00
Christopher Lamb b372abab14 Increase efficiency of sign_extend_inreg by using subregisters for truncation. As the README suggests sign_extend_subreg is selected to (sext(trunc)).
llvm-svn: 41010
2007-08-10 21:48:46 +00:00
Christopher Lamb f0c236fb8a Edit README in light of previous LEA16 commit.
llvm-svn: 41009
2007-08-10 21:29:05 +00:00
Chris Lattner 99fbf13dc3 add an observation
llvm-svn: 40772
2007-08-03 00:17:42 +00:00
Evan Cheng 7b5b06805a Only adjust esp around calls in presence of alloca.
llvm-svn: 40028
2007-07-19 00:42:05 +00:00
Evan Cheng f314055706 New entry.
llvm-svn: 39998
2007-07-18 08:21:49 +00:00
Evan Cheng 27ba94bf3b Update.
llvm-svn: 39977
2007-07-17 18:39:45 +00:00
Chris Lattner 7ea2df6e2a add a note
llvm-svn: 37239
2007-05-18 20:18:14 +00:00
Chris Lattner 623c738fe9 add some notes
llvm-svn: 36965
2007-05-10 00:08:04 +00:00
Chris Lattner be8f99ecbb move CodeGen/X86/overlap-add.ll here.
llvm-svn: 36799
2007-05-05 22:10:24 +00:00
Chris Lattner 62a8cbe594 SSE4 is apparently public now.
llvm-svn: 36185
2007-04-17 00:02:37 +00:00
Chris Lattner e275463e2f add a note
llvm-svn: 36028
2007-04-14 23:06:09 +00:00
Chris Lattner a6aa0319f1 done
llvm-svn: 35884
2007-04-11 05:34:00 +00:00
Chris Lattner d4a9b92a13 new micro optzn
llvm-svn: 35867
2007-04-10 21:14:01 +00:00
Chris Lattner f79fb5cad0 make a new missing features section
llvm-svn: 35637
2007-04-03 23:41:34 +00:00
Bill Wendling 2640b4a4ab Updated
llvm-svn: 35634
2007-04-03 23:37:20 +00:00
Chris Lattner 2ba38c8711 add a note
llvm-svn: 35435
2007-03-28 18:17:19 +00:00
Dale Johannesen a827d03154 add generation of unnecessary push/pop around calls
llvm-svn: 35241
2007-03-21 21:16:39 +00:00
Evan Cheng 71face25ef Notes about codegen issues.
llvm-svn: 35107
2007-03-14 21:03:53 +00:00
Chris Lattner fc2f52128a add a note
llvm-svn: 34837
2007-03-02 05:04:52 +00:00
Chris Lattner 44e9472fc6 more notes
llvm-svn: 34204
2007-02-12 21:20:26 +00:00
Chris Lattner b5c89c8d2d add a note
llvm-svn: 34202
2007-02-12 20:26:34 +00:00
Evan Cheng f76bb63555 This is done.
llvm-svn: 34072
2007-02-08 23:53:38 +00:00
Chris Lattner 71e123229c add a note
llvm-svn: 33423
2007-01-21 07:03:37 +00:00
Chris Lattner e76908ba81 add some notes
llvm-svn: 33228
2007-01-15 06:25:39 +00:00
Anton Korobeynikov a0554d90e8 * PIC codegen for X86/Linux has been implemented
* PIC-aware internal structures in X86 Codegen have been refactored
* Visibility (default/weak) has been added
* Docs fixes (external weak linkage, visibility, formatting)

llvm-svn: 33136
2007-01-12 19:20:47 +00:00
Chris Lattner af31398295 new note
llvm-svn: 32945
2007-01-06 01:30:45 +00:00
Chris Lattner f9cf05370f fix testcase. It's not safe to strictly evaluate a load that should be lazy.
llvm-svn: 32842
2007-01-03 19:12:31 +00:00
Chris Lattner 959113a5c8 add a note
llvm-svn: 32741
2006-12-22 01:03:22 +00:00
Chris Lattner a11aa92e6b Update note, with the SROA change, we now produce:
_pairtest:
        movl 8(%esp), %eax
        movl 4(%esp), %ecx
        movd %eax, %xmm0
        movd %ecx, %xmm1
        addss %xmm0, %xmm1
        movl 12(%esp), %eax
        movss %xmm1, (%eax)
        ret

instead of:

_pairtest:
        subl $12, %esp
        movl 20(%esp), %eax
        movl %eax, 4(%esp)
        movl 16(%esp), %eax
        movl %eax, (%esp)
        movss (%esp), %xmm0
        addss 4(%esp), %xmm0
        movl 24(%esp), %eax
        movss %xmm0, (%eax)
        addl $12, %esp
        ret

llvm-svn: 32427
2006-12-11 01:20:25 +00:00
Evan Cheng 69b1825488 New entries.
llvm-svn: 31976
2006-11-28 19:59:25 +00:00
Chris Lattner 4916acbd0f it would be nice of ctlz were lowered to bsf etc.
llvm-svn: 31730
2006-11-14 08:08:46 +00:00
Evan Cheng 5b725a71a9 These are done.
llvm-svn: 31649
2006-11-10 22:03:35 +00:00
Chris Lattner bb3084546a this part implemented.
llvm-svn: 31122
2006-10-22 21:40:12 +00:00
Chris Lattner 03fda13dbb add a note
llvm-svn: 30921
2006-10-12 22:01:26 +00:00
Chris Lattner 2421a179e4 ugly codegen
llvm-svn: 30769
2006-10-06 17:39:34 +00:00
Evan Cheng 9274f72e58 Do away with CPU feature list. Just use CPUID to detect MMX, SSE, SSE2, SSE3, and 64-bit support.
llvm-svn: 30763
2006-10-06 08:21:07 +00:00
Chris Lattner 08a8ccaaf1 implemented
llvm-svn: 30559
2006-09-21 06:14:54 +00:00
Chris Lattner 1c18c0db79 Fit in 80-cols
llvm-svn: 30556
2006-09-21 05:46:00 +00:00
Chris Lattner 27d8985a71 add a note
llvm-svn: 30515
2006-09-20 06:32:10 +00:00
Chris Lattner 523dbc5c19 add a note. Our 64-bit shifts are ~30% slower than gcc's
llvm-svn: 30457
2006-09-18 05:36:54 +00:00
Anton Korobeynikov 6f7072c66a Added some eye-candy for Subtarget type checking
Added X86 StdCall & FastCall calling conventions. Codegen will follow.

llvm-svn: 30446
2006-09-17 20:25:45 +00:00
Chris Lattner 63b113f68c add a note
llvm-svn: 30406
2006-09-16 03:30:19 +00:00
Chris Lattner 1463377ddb add note about switch lowering
llvm-svn: 30308
2006-09-13 23:37:16 +00:00
Chris Lattner e413fea6ac new note
llvm-svn: 30286
2006-09-13 04:19:50 +00:00
Chris Lattner 3496710f25 new note
llvm-svn: 30285
2006-09-13 03:54:54 +00:00
Chris Lattner 7a627676be Compile X > -1 -> text X,X; js dest
This implements CodeGen/X86/jump_sign.ll.

llvm-svn: 30283
2006-09-13 03:22:10 +00:00
Chris Lattner cfb2c32724 add a note
llvm-svn: 30271
2006-09-12 06:36:01 +00:00
Chris Lattner 8b4de218d9 Testcase noticed from PR906
llvm-svn: 30269
2006-09-11 23:00:56 +00:00
Chris Lattner 6e7286f72a add compilable testcase
llvm-svn: 30268
2006-09-11 22:57:51 +00:00
Evan Cheng 21a75acc3e Updates.
llvm-svn: 30245
2006-09-11 05:35:17 +00:00
Evan Cheng 9e77d9a96b Update README file.
llvm-svn: 30244
2006-09-11 05:25:15 +00:00
Chris Lattner 08a5f38c5c add a note
llvm-svn: 29722
2006-08-16 02:47:44 +00:00
Nate Begeman 6025c92e50 Update the readme to remove duplicate information and clarify the loop
problem.

llvm-svn: 29468
2006-08-02 05:31:20 +00:00
Evan Cheng 23a21c19d9 New entry.
llvm-svn: 29310
2006-07-26 21:49:52 +00:00
Evan Cheng c0577648c0 Done.
llvm-svn: 29262
2006-07-21 23:07:23 +00:00
Evan Cheng 8a881f2309 New entry.
llvm-svn: 29215
2006-07-19 21:29:30 +00:00
Evan Cheng 968a0b0309 Misc. new entry.
llvm-svn: 29202
2006-07-19 06:06:24 +00:00
Evan Cheng a54b9643aa A new entry.
llvm-svn: 28848
2006-06-17 00:45:49 +00:00
Chris Lattner cb29586ce4 Add a note that Nate noticed.
llvm-svn: 28808
2006-06-15 21:33:31 +00:00
Evan Cheng 0f29df98a1 A few new entries.
llvm-svn: 28683
2006-06-04 09:08:00 +00:00
Evan Cheng 02420144ab Add a note about integer multiplication by constants.
llvm-svn: 28551
2006-05-30 07:37:37 +00:00
Evan Cheng 749138582e Some new entries about truncate / anyext
llvm-svn: 28548
2006-05-30 06:23:50 +00:00