- Sep 10, 2010
-
-
Evan Cheng authored
take multiple cycles to decode. For the current if-converter clients (actually only ARM), the instructions that are predicated on false are not nops. They would still take machine cycles to decode. Micro-coded instructions such as LDM / STM can potentially take multiple cycles to decode. If-converter should take treat them as non-micro-coded simple instructions. llvm-svn: 113570
-
- Sep 05, 2010
-
-
rdar://6653118Chris Lattner authored
Since mem2reg isn't run at -O0, we get a ton of reloads from the stack, for example, before, this code: int foo(int x, int y, int z) { return x+y+z; } used to compile into: _foo: ## @foo subq $12, %rsp movl %edi, 8(%rsp) movl %esi, 4(%rsp) movl %edx, (%rsp) movl 8(%rsp), %edx movl 4(%rsp), %esi addl %edx, %esi movl (%rsp), %edx addl %esi, %edx movl %edx, %eax addq $12, %rsp ret Now we produce: _foo: ## @foo subq $12, %rsp movl %edi, 8(%rsp) movl %esi, 4(%rsp) movl %edx, (%rsp) movl 8(%rsp), %edx addl 4(%rsp), %edx ## Folded load addl (%rsp), %edx ## Folded load movl %edx, %eax addq $12, %rsp ret Fewer instructions and less register use = faster compiles. llvm-svn: 113102
-
- Sep 03, 2010
-
-
Bob Wilson authored
solve the root problem, but it corrects the bug in the code I added to support legalizing in the case where the non-extended type is also legal. llvm-svn: 112997
-
- Sep 02, 2010
-
-
Devang Patel authored
llvm-svn: 112864
-
Dan Gohman authored
there are clearly no stores between the load and the store. This fixes this miscompile reported as PR7833. This breaks the test/CodeGen/X86/narrow_op-2.ll optimization, which is safe, but awkward to prove safe. Move it to X86's README.txt. llvm-svn: 112861
-
Devang Patel authored
llvm-svn: 112858
-
- Sep 01, 2010
-
-
Devang Patel authored
llvm-svn: 112659
-
- Aug 31, 2010
-
-
Devang Patel authored
llvm-svn: 112631
-
Devang Patel authored
Remember byval argument's frame index during argument lowering and use this info to emit debug info. Fixes Radar 8367011. llvm-svn: 112623
-
Devang Patel authored
llvm-svn: 112584
-
Bruno Cardoso Lopes authored
llvm-svn: 112571
-
- Aug 30, 2010
-
-
Bill Wendling authored
llvm-svn: 112463
-
Bill Wendling authored
said (physical) register. llvm-svn: 112461
-
- Aug 28, 2010
-
-
Chris Lattner authored
being actively maintained, improved, or extended. llvm-svn: 112356
-
Dan Gohman authored
doesn't currently support dealing with this. llvm-svn: 112341
-
Dan Gohman authored
llvm-svn: 112340
-
Devang Patel authored
llvm-svn: 112305
-
- Aug 27, 2010
-
-
Devang Patel authored
llvm-svn: 112242
-
Devang Patel authored
llvm-svn: 112238
-
- Aug 26, 2010
-
-
Devang Patel authored
llvm-svn: 112216
-
Devang Patel authored
llvm-svn: 112215
-
Devang Patel authored
llvm-svn: 112213
-
Devang Patel authored
Donot forget to resolve dangling debug info in a case where virtual register, used for a value, is initialized after a dbg intrinsic is seen. llvm-svn: 112207
-
Chris Lattner authored
llvm-svn: 112175
-
Chris Lattner authored
llvm-svn: 112171
-
Chris Lattner authored
llvm-svn: 112155
-
Chris Lattner authored
llvm-svn: 112104
-
Chris Lattner authored
expanding: e.g. <2 x float> -> <4 x float> instead of -> 2 floats. This affects two places in the code: handling cross block values and handling function return and arguments. Since vectors are already widened by legalizetypes, this gives us much better code and unblocks x86-64 abi and SPU abi work. For example, this (which is a silly example of a cross-block value): define <4 x float> @test2(<4 x float> %A) nounwind { %B = shufflevector <4 x float> %A, <4 x float> undef, <2 x i32> <i32 0, i32 1> %C = fadd <2 x float> %B, %B br label %BB BB: %D = fadd <2 x float> %C, %C %E = shufflevector <2 x float> %D, <2 x float> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef> ret <4 x float> %E } Now compiles into: _test2: ## @test2 ## BB#0: addps %xmm0, %xmm0 addps %xmm0, %xmm0 ret previously it compiled into: _test2: ## @test2 ## BB#0: addps %xmm0, %xmm0 pshufd $1, %xmm0, %xmm1 ## kill: XMM0<def> XMM0<kill> XMM0<def> insertps $0, %xmm0, %xmm0 insertps $16, %xmm1, %xmm0 addps %xmm0, %xmm0 ret This implements rdar://8230384 llvm-svn: 112101
-
- Aug 25, 2010
-
-
Devang Patel authored
llvm-svn: 112086
-
Devang Patel authored
llvm-svn: 112085
-
Chris Lattner authored
no functionality change. llvm-svn: 111994
-
Chris Lattner authored
functionality change. llvm-svn: 111990
-
Chris Lattner authored
llvm-svn: 111982
-
- Aug 23, 2010
-
-
Chandler Carruth authored
hierarchy with virtual methods and using llvm_unreachable to properly indicate unreachable states which would otherwise leave variables uninitialized. llvm-svn: 111803
-
- Aug 20, 2010
-
-
Bob Wilson authored
it involves specific floating-point types, legalize should expand an extending load to a non-extending load followed by a separate extend operation. For example, we currently expand SEXTLOAD to EXTLOAD+SIGN_EXTEND_INREG (and assert that EXTLOAD should always be supported). Now we can expand that to LOAD+SIGN_EXTEND. This is needed to allow vector SIGN_EXTEND and ZERO_EXTEND to be used for NEON. llvm-svn: 111586
-
- Aug 18, 2010
-
-
Dale Johannesen authored
PR 7882. Follows suggestion by Amaury Pouly, thanks. llvm-svn: 111306
-
- Aug 17, 2010
-
-
Eric Christopher authored
llvm-svn: 111223
-
- Aug 10, 2010
-
-
Evan Cheng authored
llvm-svn: 110649
-
- Aug 06, 2010
-
-
Owen Anderson authored
llvm-svn: 110460
-
Owen Anderson authored
llvm-svn: 110410
-