- Jan 08, 2011
-
-
Evan Cheng authored
Instead encode llvm IR level property "HasSideEffects" in an operand (shared with IsAlignStack). Added MachineInstrs::hasUnmodeledSideEffects() to check the operand when the instruction is an INLINEASM. This allows memory instructions to be moved around INLINEASM instructions. llvm-svn: 123044
-
- Jan 07, 2011
-
-
Evan Cheng authored
Revert r122955. It seems using movups to lower memcpy can cause massive regression (even on Nehalem) in edge cases. I also didn't see any real performance benefit. llvm-svn: 123015
-
- Jan 06, 2011
-
-
Rafael Espindola authored
Patch by Richard Simth. llvm-svn: 122962
-
Benjamin Kramer authored
llvm-svn: 122957
-
Evan Cheng authored
The theory is it's still faster than a pair of movq / a quad of movl. This will probably hurt older chips like P4 but should run faster on current and future Intel processors. rdar://8817010 llvm-svn: 122955
-
Evan Cheng authored
etc. takes an option OptSize. If OptSize is true, it would return the inline limit for functions with attribute OptSize. llvm-svn: 122952
-
Bill Wendling authored
works only on MinGW32. On 64-bit, the function to call is "__chkstk". Patch by KS Sreeram! llvm-svn: 122934
-
Bill Wendling authored
beginning of the "main" function. The assembler complains about the invalid suffix for the 'call' instruction. The right instruction is "callq __main". Patch by KS Sreeram! llvm-svn: 122933
-
- Jan 05, 2011
-
-
Chris Lattner authored
llvm-svn: 122921
-
Chris Lattner authored
llvm-svn: 122920
-
- Jan 04, 2011
-
-
Jakob Stoklund Olesen authored
bundles in the pass. llvm-svn: 122833
-
Jakob Stoklund Olesen authored
The analysis will be needed by both the greedy register allocator and the X86FloatingPoint pass. It only needs to be computed once when the CFG doesn't change. This pass is very fast, usually showing up as 0.0% wall time. llvm-svn: 122832
-
Dale Johannesen authored
warning is overzealous but gcc is what it is.) llvm-svn: 122829
-
- Jan 03, 2011
-
-
Evan Cheng authored
prologue and epilogue if the adjustment is 8. Similarly, use pushl / popl if the adjustment is 4 in 32-bit mode. In the epilogue, takes care to pop to a caller-saved register that's not live at the exit (either return or tailcall instruction). rdar://8771137 llvm-svn: 122783
-
- Jan 02, 2011
-
-
Benjamin Kramer authored
This allows us to compile: void test(char *s, int a) { __builtin_memset(s, a, 15); } into 1 mul + 3 stores instead of 3 muls + 3 stores. llvm-svn: 122710
-
Oscar Fuentes authored
llvm-svn: 122706
-
Chris Lattner authored
llvm-svn: 122700
-
- Jan 01, 2011
-
-
Rafael Espindola authored
llvm-svn: 122667
-
- Dec 31, 2010
-
-
Oscar Fuentes authored
is necessary for executing the custom command that runs the assember. Fixes PR8877. llvm-svn: 122649
-
- Dec 30, 2010
-
-
Nick Lewycky authored
Fixes PR8861. llvm-svn: 122641
-
- Dec 29, 2010
-
-
NAKAMURA Takumi authored
CMake: Add disabling optimization on MSVC8 and MSVC10 as workaround for some files in Target/ARM and Target/X86. llvm-svn: 122623
-
- Dec 27, 2010
-
-
Rafael Espindola authored
supports. llvm-svn: 122577
-
- Dec 26, 2010
-
-
Chris Lattner authored
llvm-svn: 122560
-
Chris Lattner authored
llvm-svn: 122559
-
- Dec 24, 2010
-
-
Evan Cheng authored
llvm-svn: 122528
-
- Dec 23, 2010
-
-
Chris Lattner authored
llvm-svn: 122513
-
Benjamin Kramer authored
llvm-svn: 122495
-
Benjamin Kramer authored
int test(unsigned long a, unsigned long b) { return -(a < b); } compiles to _test: ## @test cmpq %rsi, %rdi ## encoding: [0x48,0x39,0xf7] sbbl %eax, %eax ## encoding: [0x19,0xc0] ret ## encoding: [0xc3] instead of _test: ## @test xorl %ecx, %ecx ## encoding: [0x31,0xc9] cmpq %rsi, %rdi ## encoding: [0x48,0x39,0xf7] movl $-1, %eax ## encoding: [0xb8,0xff,0xff,0xff,0xff] cmovael %ecx, %eax ## encoding: [0x0f,0x43,0xc1] ret ## encoding: [0xc3] llvm-svn: 122451
-
- Dec 21, 2010
-
-
Benjamin Kramer authored
(add Y, (sete X, 0)) -> cmp X, 1; adc 0, Y (add Y, (setne X, 0)) -> cmp X, 1; sbb -1, Y (sub (sete X, 0), Y) -> cmp X, 1; sbb 0, Y (sub (setne X, 0), Y) -> cmp X, 1; adc -1, Y for unsigned foo(unsigned a, unsigned b) { if (a == 0) b++; return b; } we now get: foo: cmpl $1, %edi movl %esi, %eax adcl $0, %eax ret instead of: foo: testl %edi, %edi sete %al movzbl %al, %eax addl %esi, %eax ret llvm-svn: 122364
-
Chris Lattner authored
something that just glues two nodes together, even if it is sometimes used for flags. llvm-svn: 122310
-
- Dec 20, 2010
-
-
Nate Begeman authored
Implement feedback from Bruno on making pblendvb an x86-specific ISD node in addition to being an intrinsic, and convert lowering to use it. Hopefully the pattern fragment is doing the right thing with XMM0, looks correct in testing. llvm-svn: 122277
-
Daniel Dunbar authored
llvm-svn: 122247
-
Daniel Dunbar authored
llvm-svn: 122246
-
Chris Lattner authored
the same as setcc. Optimize ADDC(0,0,FLAGS) -> SET_CARRY(FLAGS). This is a step towards finishing off PR5443. In the testcase in that bug we now get: movq %rdi, %rax addq %rsi, %rax sbbq %rcx, %rcx testb $1, %cl setne %dl ret instead of: movq %rdi, %rax addq %rsi, %rax movl $0, %ecx adcq $0, %rcx testq %rcx, %rcx setne %dl ret llvm-svn: 122219
-
Chris Lattner authored
doesn't, match it back to setb. On a 64-bit version of the testcase before we'd get: movq %rdi, %rax addq %rsi, %rax sbbb %dl, %dl andb $1, %dl ret now we get: movq %rdi, %rax addq %rsi, %rax setb %dl ret llvm-svn: 122217
-
Chris Lattner authored
llvm-svn: 122214
-
Chris Lattner authored
their carry depenedencies with MVT::Flag operands) and use clean and beautiful EFLAGS dependences instead. We do this by changing the modelling of SBB/ADC to have EFLAGS input and outputs (which is what requires the previous scheduler change) and change X86 ISelLowering to custom lower ADDC and friends down to X86ISD::ADD/ADC/SUB/SBB nodes. With the previous series of changes, this causes no changes in the testsuite, woo. llvm-svn: 122213
-
Mon P Wang authored
has run, e.g., prevent creating an i64 node from a v2i64 when i64 is not a legal type. llvm-svn: 122206
-
- Dec 19, 2010
-
-
Chris Lattner authored
consistently by moving it out of lowering into dag combine. Add some missing patterns for matching away extended versions of setcc_c. llvm-svn: 122201
-
Chris Lattner authored
going through the CSE maps to get it. llvm-svn: 122196
-