1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00
Commit Graph

24464 Commits

Author SHA1 Message Date
Chris Lattner
9d24f6b3f9 Unfortunately this really isn't the place for advertisement.
llvm-svn: 27979
2006-04-26 18:10:59 +00:00
Jeff Cohen
339f421c81 Fix typo.
llvm-svn: 27978
2006-04-26 18:05:25 +00:00
Reid Spencer
7599e7b37a Fix some anchors.
llvm-svn: 27977
2006-04-26 15:46:53 +00:00
Reid Spencer
44e1aee071 Add some notes about the current state of source (front end) languages
so we can point to them on llvm-dev.

llvm-svn: 27976
2006-04-26 14:52:19 +00:00
Evan Cheng
58d4133b60 Switching over FORMAL_ARGUMENTS mechanism to lower call arguments.
llvm-svn: 27975
2006-04-26 01:20:17 +00:00
Evan Cheng
b54140b0d6 Don't forget return void.
llvm-svn: 27974
2006-04-25 23:03:35 +00:00
Nate Begeman
627fd2faaa Keep the stack from on darwin 16-byte aligned. This fixes many JIT
failres.

llvm-svn: 27973
2006-04-25 20:54:26 +00:00
Evan Cheng
09112df9d3 Separate LowerOperation() into multiple functions, one per opcode.
llvm-svn: 27972
2006-04-25 20:13:52 +00:00
Andrew Lenharth
d62d88bae0 slightly more useful error message
llvm-svn: 27971
2006-04-25 19:33:41 +00:00
Andrew Lenharth
39d53414a5 better c99 struct handling
llvm-svn: 27970
2006-04-25 19:33:23 +00:00
Andrew Lenharth
a9f21ab75c another c99 style problem
llvm-svn: 27969
2006-04-25 19:27:56 +00:00
Evan Cheng
abc391a5a6 Fix a typo.
llvm-svn: 27968
2006-04-25 17:48:41 +00:00
Nate Begeman
acdefe26fa Fix a warning
llvm-svn: 27967
2006-04-25 17:46:32 +00:00
Nate Begeman
deeb953086 No functionality changes, but cleaner code with correct comments.
llvm-svn: 27966
2006-04-25 04:45:59 +00:00
Evan Cheng
7f0e30d1a2 Explicitly specify result type for def : Pat<> patterns (if it produces a vector
result). Otherwise tblgen will pick the default (v16i8 for 128-bit vector).

llvm-svn: 27965
2006-04-25 00:50:01 +00:00
Evan Cheng
e521de4e60 Added X86 SSE2 intrinsics which can be represented as vector_shuffles. This is
a temporary workaround for the 2-wide vector_shuffle problem (i.e. its mask
would have type v2i32 which is not legal).

llvm-svn: 27964
2006-04-24 23:34:56 +00:00
Evan Cheng
b7a2ab21a5 Add a new entry.
llvm-svn: 27963
2006-04-24 23:30:10 +00:00
Evan Cheng
3f495010ed Added a movq test case.
llvm-svn: 27962
2006-04-24 23:03:22 +00:00
Evan Cheng
0282b48ec2 Special case handling two wide build_vector(0, x).
llvm-svn: 27961
2006-04-24 22:58:52 +00:00
Evan Cheng
3306427d87 Some missing movlps, movhps, movlpd, and movhpd patterns.
llvm-svn: 27960
2006-04-24 21:58:20 +00:00
Evan Cheng
1eae7398a6 A little bit more build_vector enhancement for v8i16 cases.
llvm-svn: 27959
2006-04-24 18:01:45 +00:00
Evan Cheng
f74b046b06 Remove a completed entry.
llvm-svn: 27958
2006-04-24 17:38:16 +00:00
Chris Lattner
283f1992d4 Suggest looking at the SPARC backend. How weird is that?? :)
llvm-svn: 27957
2006-04-24 16:34:45 +00:00
Evan Cheng
679d1dd5cf Added addJumpTableIndex
llvm-svn: 27956
2006-04-24 06:42:15 +00:00
Evan Cheng
70237fcb5d MakeMIInst() should handle jump table index operands.
llvm-svn: 27955
2006-04-24 05:37:35 +00:00
Chris Lattner
86f1e02800 Add a note
llvm-svn: 27954
2006-04-23 19:47:09 +00:00
Evan Cheng
4812ce5035 MOVL shuffle (i.e. movd or movss / movsd from memory) of undef, V2 == V2
llvm-svn: 27953
2006-04-23 06:35:19 +00:00
Nate Begeman
7bb910dbe7 Fix the updating of the machine CFG when a PHI node was in a successor of
the jump table's range check block.  This re-enables 100% dense jump tables
by default on PPC & x86

llvm-svn: 27952
2006-04-23 06:26:20 +00:00
Jeff Cohen
6ae5da42b9 Keep Visual Studio informed.
llvm-svn: 27951
2006-04-23 04:37:08 +00:00
Nate Begeman
f86709e9e2 Code cleanup associated with jump tables, thanks to Chris for noticing
these.

llvm-svn: 27950
2006-04-22 23:52:35 +00:00
Nate Begeman
6cfb33a42c Turn of jump tables for a bit, there are still some issues to work out with
updating the machine CFG.

llvm-svn: 27949
2006-04-22 23:51:56 +00:00
Nate Begeman
0d74cbcb6b Optimized stores to the constant pool, while cool, are unnecessary.
llvm-svn: 27948
2006-04-22 22:31:45 +00:00
Nate Begeman
7ed816f900 JumpTable support! What this represents is working asm and jit support for
x86 and ppc for 100% dense switch statements when relocations are non-PIC.
This support will be extended and enhanced in the coming days to support
PIC, and less dense forms of jump tables.

llvm-svn: 27947
2006-04-22 18:53:45 +00:00
Evan Cheng
1c33e83af5 Don't do all the lowering stuff for 2-wide build_vector's. Also, minor optimization for shuffle of undef.
llvm-svn: 27946
2006-04-22 08:34:05 +00:00
Evan Cheng
ec33bd04fb Fix a performance regression. Use {p}shuf* when there are only two distinct elements in a build_vector.
llvm-svn: 27945
2006-04-22 06:21:46 +00:00
Evan Cheng
d0db6f1a7d Two more build_vector tests.
llvm-svn: 27944
2006-04-22 06:19:11 +00:00
Chris Lattner
de560fcaf7 Teach the JIT how to relocate LI, this fixes the JIT on Prolangs-C/TimberWolfMC
llvm-svn: 27943
2006-04-22 06:17:56 +00:00
Chris Lattner
59c6239ce7 This no longer needs the JIT.
llvm-svn: 27942
2006-04-22 05:04:23 +00:00
Chris Lattner
4f0240b577 Fix JIT support for static ctors, which was apparently completely broken!
This allows Prolangs-C++/city and probably a bunch of other stuff to work
well with the new front-end

llvm-svn: 27941
2006-04-22 05:02:46 +00:00
Evan Cheng
5cb5fdd8eb Revamp build_vector lowering to take advantage of movss and movd instructions.
movd always clear the top 96 bits and movss does so when it's loading the
value from memory.
The net result is codegen for 4-wide shuffles is much improved. It is near
optimal if one or more elements is a zero. e.g.

__m128i test(int a, int b) {
  return _mm_set_epi32(0, 0, b, a);
}

compiles to

_test:
	movd 8(%esp), %xmm1
	movd 4(%esp), %xmm0
	punpckldq %xmm1, %xmm0
	ret

compare to gcc:

_test:
	subl	$12, %esp
	movd	20(%esp), %xmm0
	movd	16(%esp), %xmm1
	punpckldq	%xmm0, %xmm1
	movq	%xmm1, %xmm0
	movhps	LC0, %xmm0
	addl	$12, %esp
	ret

or icc:

_test:
        movd      4(%esp), %xmm0                                #5.10
        movd      8(%esp), %xmm3                                #5.10
        xorl      %eax, %eax                                    #5.10
        movd      %eax, %xmm1                                   #5.10
        punpckldq %xmm1, %xmm0                                  #5.10
        movd      %eax, %xmm2                                   #5.10
        punpckldq %xmm2, %xmm3                                  #5.10
        punpckldq %xmm3, %xmm0                                  #5.10
        ret                                                     #5.10

There are still room for improvement, for example the FP variant of the above example:

__m128 test(float a, float b) {
  return _mm_set_ps(0.0, 0.0, b, a);
}

_test:
	movss 8(%esp), %xmm1
	movss 4(%esp), %xmm0
	unpcklps %xmm1, %xmm0
	xorps %xmm1, %xmm1
	movlhps %xmm1, %xmm0
	ret

The xorps and movlhps are unnecessary. This will require post legalizer optimization to handle.

llvm-svn: 27939
2006-04-21 23:03:30 +00:00
Nate Begeman
dc60393018 Fix the comment
llvm-svn: 27938
2006-04-21 22:11:27 +00:00
Nate Begeman
67b3094f27 Change the PPC JIT to use a Static relocation model
llvm-svn: 27937
2006-04-21 22:04:15 +00:00
Chris Lattner
e6f4065bca typo
llvm-svn: 27936
2006-04-21 21:37:40 +00:00
Chris Lattner
d81dcf9da4 fix thinko
llvm-svn: 27935
2006-04-21 21:05:22 +00:00
Chris Lattner
84a811d57e add some low-prio notes
llvm-svn: 27934
2006-04-21 21:03:21 +00:00
Chris Lattner
8f7c394f3a The BFS scheduler is apparently nondeterminstic (causes many llvmgcc bootstrap
miscompares).  Switch RISC targets to use the list-td scheduler, which isn't.

llvm-svn: 27933
2006-04-21 17:16:16 +00:00
Evan Cheng
27a8d019e0 movddup is a SSE3 instruction.
llvm-svn: 27932
2006-04-21 16:42:47 +00:00
Chris Lattner
7cc9363937 Remove a hack required by V9.
llvm-svn: 27931
2006-04-21 15:33:35 +00:00
Chris Lattner
3b9a7570cb Fix a couple more memory issues
llvm-svn: 27930
2006-04-21 15:32:26 +00:00
Reid Spencer
5e33caae17 Remove the extraneous --defined-only option to nm. This is the default and
some versions of nm don't recognize it (its a gnu option).

llvm-svn: 27928
2006-04-21 05:29:25 +00:00