Chris Lattner [Tue, 31 Jan 2006 07:26:55 +0000 (07:26 +0000)]
add conditional moves of float and double values on int/fp condition codes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25842
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 07:16:34 +0000 (07:16 +0000)]
example nate pointed out
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25841
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 06:56:30 +0000 (06:56 +0000)]
treat conditional branches the same way as conditional moves (giving them
an operand that contains the condcode), making things significantly simpler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25840
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 06:49:09 +0000 (06:49 +0000)]
compactify all of the integer conditional moves into one instruction that takes
a CC as an operand. Much smaller, much happier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25839
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 06:24:29 +0000 (06:24 +0000)]
Add immediate forms of integer cmovs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25838
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 06:18:16 +0000 (06:18 +0000)]
Shrinkify
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25837
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 06:02:35 +0000 (06:02 +0000)]
implement test/Regression/TableGen/DagIntSubst.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25836
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 06:01:40 +0000 (06:01 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25835
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 05:26:36 +0000 (05:26 +0000)]
Add the full complement of conditional moves of integer registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25834
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 05:05:52 +0000 (05:05 +0000)]
Compile this:
void %X(int %A) {
%C = setlt int %A, 123 ; <bool> [#uses=1]
br bool %C, label %T, label %F
T: ; preds = %0
call int %main( int 0 ) ; <int>:0 [#uses=0]
ret void
F: ; preds = %0
ret void
}
to this:
X:
save -96, %o6, %o6
subcc %i0, 122, %l0
bg .LBBX_2 ! F
nop
...
not this:
X:
save -96, %o6, %o6
sethi 0, %l0
or %g0, 1, %l1
subcc %i0, 122, %l2
bg .LBBX_4 !
nop
.LBBX_3: !
or %g0, %l0, %l1
.LBBX_4: !
subcc %l1, 0, %l0
bne .LBBX_2 ! F
nop
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25833
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 05:04:52 +0000 (05:04 +0000)]
Only insert an AND when converting from BR_COND to BRCC if needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25832
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 31 Jan 2006 03:14:29 +0000 (03:14 +0000)]
Added custom lowering of fabs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25831
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 02:55:28 +0000 (02:55 +0000)]
add the 'lucas' optimization
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25830
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 02:45:52 +0000 (02:45 +0000)]
I don't see why this optimization isn't safe, but it isn't, so disable it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25829
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 02:10:06 +0000 (02:10 +0000)]
Another high-prio selection performance bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25828
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 02:03:41 +0000 (02:03 +0000)]
Handle physreg input/outputs. We now compile this:
int %test_cpuid(int %op) {
%B = alloca int
%C = alloca int
%D = alloca int
%A = call int asm "cpuid", "=eax,==ebx,==ecx,==edx,eax"(int* %B, int* %C, int* %D, int %op)
%Bv = load int* %B
%Cv = load int* %C
%Dv = load int* %D
%x = add int %A, %Bv
%y = add int %x, %Cv
%z = add int %y, %Dv
ret int %z
}
to this:
_test_cpuid:
sub %ESP, 16
mov DWORD PTR [%ESP], %EBX
mov %EAX, DWORD PTR [%ESP + 20]
cpuid
mov DWORD PTR [%ESP + 8], %ECX
mov DWORD PTR [%ESP + 12], %EBX
mov DWORD PTR [%ESP + 4], %EDX
mov %ECX, DWORD PTR [%ESP + 12]
add %EAX, %ECX
mov %ECX, DWORD PTR [%ESP + 8]
add %EAX, %ECX
mov %ECX, DWORD PTR [%ESP + 4]
add %EAX, %ECX
mov %EBX, DWORD PTR [%ESP]
add %ESP, 16
ret
... note the proper register allocation. :)
it is unclear to me why the loads aren't folded into the adds.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25827
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 00:45:37 +0000 (00:45 +0000)]
more mumbling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25826
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 31 Jan 2006 00:20:38 +0000 (00:20 +0000)]
add some notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25825
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 30 Jan 2006 23:41:35 +0000 (23:41 +0000)]
Don't generate complex sequence for SETOLE, SETOLT, SETULT, and SETUGT. Flip
the order of the compare operands and generate SETOGT, SETOGE, SETUGE, and
SETULE instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25824
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 30 Jan 2006 23:39:40 +0000 (23:39 +0000)]
Don't generate (or setp, setae) for SETUGE. Simply flip the operands around and
generate SETULT instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25823
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 23:00:08 +0000 (23:00 +0000)]
Print the most trivial inline asms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25822
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 22:43:50 +0000 (22:43 +0000)]
Fix a bug in my legalizer reworking that caused the X86 backend to not get
a chance to custom legalize setcc, which broke a bunch of C++ Codes.
Testcase here: CodeGen/X86/2006-01-30-LongSetcc.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25821
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 22:43:10 +0000 (22:43 +0000)]
new testcase for the 'C++' failures last night.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25820
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 22:20:49 +0000 (22:20 +0000)]
Fix FP constants, and the SparcV8/2006-01-22-BitConvertLegalize.ll failure from last night
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25819
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 30 Jan 2006 22:13:22 +0000 (22:13 +0000)]
i64 -> f32, f32 -> i64 and some clean up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25818
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 30 Jan 2006 08:02:57 +0000 (08:02 +0000)]
Always use FP stack instructions to perform i64 to f64 as well as f64 to i64
conversions. SSE does not have instructions to handle these tasks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25817
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 30 Jan 2006 07:47:47 +0000 (07:47 +0000)]
One more getTargetNode() variant shouldn't hurt...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25816
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 07:43:04 +0000 (07:43 +0000)]
Revamp the ICC/FCC reading instructions to be parameterized in terms of the
SPARC condition codes, not in terms of the DAG condcodes. This allows us to
write nice clean patterns for cmovs/branches.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25815
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 06:14:02 +0000 (06:14 +0000)]
Compile:
uint %test(uint %X) {
%Y = call uint %llvm.ctpop.i32(uint %X)
ret uint %Y
}
to:
test:
save -96, %o6, %o6
sll %i0, 0, %l0
popc %l0, %i0
restore %g0, %g0, %g0
retl
nop
instead of to 40 logical ops. Note the shift-by-zero that clears the top
part of the 64-bit V9 register.
Testcase here: CodeGen/SparcV8/ctpop.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25814
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 06:11:36 +0000 (06:11 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25813
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 06:09:03 +0000 (06:09 +0000)]
Clear the OpAction field before setting it. This allows a target to set
an instruction operation action to Expand, then set it to Legal later.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25812
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 05:51:14 +0000 (05:51 +0000)]
If the target has V9 instructions, this pass is a noop, don't bother
running it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25811
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 05:48:37 +0000 (05:48 +0000)]
When in v9 mode, emit fabsd/fnegd/fmovd
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25810
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 05:35:57 +0000 (05:35 +0000)]
First step towards V9 instructions in the V8 backend, two conditional move
patterns. This allows emission of this code:
t1:
save -96, %o6, %o6
subcc %i0, %i1, %l0
move %icc, %i0, %i2
or %g0, %i2, %i0
restore %g0, %g0, %g0
retl
nop
instead of this:
t1:
save -96, %o6, %o6
subcc %i0, %i1, %l0
be .LBBt1_2 !
nop
.LBBt1_1: !
or %g0, %i2, %i0
.LBBt1_2: !
restore %g0, %g0, %g0
retl
nop
for this:
int %t1(int %a, int %b, int %c) {
%tmp.2 = seteq int %a, %b
%tmp3 = select bool %tmp.2, int %a, int %c
ret int %tmp3
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25809
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 04:57:43 +0000 (04:57 +0000)]
Two changes:
1. Default to having V9 instructions, instead of just V8.
2. unless -enable-sparc-v9-insts is passed, disable V9 (for use with llcbeta)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25807
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 04:34:44 +0000 (04:34 +0000)]
When lowering SELECT_CC, see if the input is a lowered SETCC. If so, fold
the two operations together. This allows us to compile this:
void %two(int %a, int* %b) {
%tmp.2 = seteq int %a, 0
%tmp.0.0 = select bool %tmp.2, int 10, int 20
store int %tmp.0.0, int* %b
ret void
}
into:
two:
save -96, %o6, %o6
or %g0, 20, %l0
or %g0, 10, %l1
subcc %i0, 0, %l2
be .LBBtwo_2 ! entry
nop
.LBBtwo_1: ! entry
or %g0, %l0, %l1
.LBBtwo_2: ! entry
st %l1, [%i1]
restore %g0, %g0, %g0
retl
nop
instead of:
two:
save -96, %o6, %o6
sethi 0, %l0
or %g0, 1, %l1
or %g0, 20, %l2
or %g0, 10, %l3
subcc %i0, 0, %l4
be .LBBtwo_2 ! entry
nop
.LBBtwo_1: ! entry
or %g0, %l0, %l1
.LBBtwo_2: ! entry
subcc %l1, 0, %l0
bne .LBBtwo_4 ! entry
nop
.LBBtwo_3: ! entry
or %g0, %l2, %l3
.LBBtwo_4: ! entry
st %l3, [%i1]
restore %g0, %g0, %g0
retl
nop
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25806
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Mon, 30 Jan 2006 04:33:51 +0000 (04:33 +0000)]
Add AddSymbol() method to DynamicLibrary to work around Windows limitation
of being unable to search for symbols in an EXE. It will also allow other
existing hacks to be improved.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25805
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 04:22:28 +0000 (04:22 +0000)]
don't insert an and node if it isn't needed here, this can prevent folding
of lowered target nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25804
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 04:09:27 +0000 (04:09 +0000)]
Move MaskedValueIsZero from the DAGCombiner to the TargetLowering interface,making isMaskedValueZeroForTargetNode simpler, and useable from other partsof the compiler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25803
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 04:08:18 +0000 (04:08 +0000)]
Move MaskedValueIsZero from the DAGCombiner to the TargetLowering interface,
making isMaskedValueZeroForTargetNode simpler, and useable from other parts
of the compiler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25802
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Mon, 30 Jan 2006 04:07:08 +0000 (04:07 +0000)]
Add _CRT_SECURE_NO_DEPRECATE preprocessor symbol to make VS2005 happy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25801
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 03:51:45 +0000 (03:51 +0000)]
Implement isMaskedValueZeroForTargetNode for the various v8 selectcc nodes,
allowing redundant and's to be eliminated by the dag combiner.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25800
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 03:49:37 +0000 (03:49 +0000)]
pass the address of MaskedValueIsZero into isMaskedValueZeroForTargetNode,
to permit recursion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25799
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 03:49:07 +0000 (03:49 +0000)]
adjust prototype
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25798
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 03:48:36 +0000 (03:48 +0000)]
Pass the address of the main MaskedValueIsZero function to allow recursion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25797
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 30 Jan 2006 02:03:56 +0000 (02:03 +0000)]
fix make install/uninstall of libcrtend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25796
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sun, 29 Jan 2006 22:02:52 +0000 (22:02 +0000)]
Fix indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25795
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 21:02:23 +0000 (21:02 +0000)]
Fix RET of promoted values on targets that custom expand RET to a target node.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25794
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 20:49:17 +0000 (20:49 +0000)]
Functions that are lazily streamed in from the .bc file are *not* external.
This fixes llvm-test/SingleSource/UnitTests/2006-01-29-SimpleIndirectCall.c
and PR704
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25793
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 20:01:35 +0000 (20:01 +0000)]
simplify some code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25791
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Sun, 29 Jan 2006 09:52:11 +0000 (09:52 +0000)]
Remove extra qualifier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25790
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 09:46:06 +0000 (09:46 +0000)]
add another note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25789
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 09:42:20 +0000 (09:42 +0000)]
add some performance notes from looking at sgefa
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25788
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 09:14:47 +0000 (09:14 +0000)]
add a high-priority SSE issue from sgefa
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25787
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 09:08:15 +0000 (09:08 +0000)]
add a missed optimization
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25786
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 08:42:06 +0000 (08:42 +0000)]
cleanups to the ValueTypeActions interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25785
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 08:41:37 +0000 (08:41 +0000)]
Now that OpActions is big enough, we can specify actions for vector types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25784
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 08:41:12 +0000 (08:41 +0000)]
clean up interface to ValueTypeActions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25783
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 08:40:37 +0000 (08:40 +0000)]
Clean up the interface to ValueTypeActions, allowing Legalize to use a copy
of it more cleanly. Double the size of OpActions, allowing it to hold actions
for any VT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25782
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 07:59:37 +0000 (07:59 +0000)]
revert an accidental commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25781
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 07:58:15 +0000 (07:58 +0000)]
Remove some special case hacks for CALLSEQ_*, using UpdateNodeOperands
instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25780
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 07:57:11 +0000 (07:57 +0000)]
remove some methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25779
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 07:31:33 +0000 (07:31 +0000)]
disable this for now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25778
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 29 Jan 2006 06:48:25 +0000 (06:48 +0000)]
Add a note about lowering llvm.memset, llvm.memcpy, and llvm.memmove to a
few stores under certain conditions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25777
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 06:45:31 +0000 (06:45 +0000)]
remove now-dead code, the legalizer takes care of this for us
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25776
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 06:44:22 +0000 (06:44 +0000)]
The FP stack doesn't support UNDEF, ask the legalizer to legalize it
instead of lying and saying we have it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25775
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 06:34:16 +0000 (06:34 +0000)]
Allow custom expansion of ConstantVec nodes. PPC will use this in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25774
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 06:32:58 +0000 (06:32 +0000)]
Request expansion of ConstantVec nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25773
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 06:26:56 +0000 (06:26 +0000)]
Legalize ConstantFP into TargetConstantFP when the target allows. Implement
custom expansion of ConstantFP nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25772
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 06:26:08 +0000 (06:26 +0000)]
Targets all now request ConstantFP to be legalized into TargetConstantFP.
'fpimm' in .td files is now TargetConstantFP.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25771
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 06:25:22 +0000 (06:25 +0000)]
Update alpha to reflect recent constantfp legalize changes. It's not clear
why all this code isn't autogenerated. :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25770
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 06:24:40 +0000 (06:24 +0000)]
Make ConstantFP legalize into TargetConstantFP like other leaf nodes do. Allow
targets to register custom legalizers for ConstantFP in case there isn't a
fixed list of constants that can be generated. On some architectures (ia64?)
all fp immediates are legal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25769
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 06:01:13 +0000 (06:01 +0000)]
remove the getBR2Way_CC method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25768
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 06:00:45 +0000 (06:00 +0000)]
eliminate uses of SelectionDAG::getBR2Way_CC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25767
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Sun, 29 Jan 2006 05:22:37 +0000 (05:22 +0000)]
it is nice not to chop off bits for those blessed with lots of bits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25766
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Sun, 29 Jan 2006 05:17:22 +0000 (05:17 +0000)]
make the casts actually cast to the variable type
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25765
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Sun, 29 Jan 2006 05:07:04 +0000 (05:07 +0000)]
start of the 64bit safety cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25764
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 04:41:05 +0000 (04:41 +0000)]
Emit series of conditionals with &&, emitting stuff like this:
if (N1.getOpcode() == ISD::LOAD &&
N1.hasOneUse() &&
!CodeGenMap.count(N1.getValue(0)) &&
!CodeGenMap.count(N1.getValue(1))) {
instead of this:
if (N1.getOpcode() == ISD::LOAD) {
if (N1.hasOneUse()) {
if (!CodeGenMap.count(N1.getValue(0))) {
if (!CodeGenMap.count(N1.getValue(1))) {
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25763
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 04:25:26 +0000 (04:25 +0000)]
Factor matching code that is common between patterns. This works around
GCC not jump-threading across this common code, and produces far nicer
output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25762
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 03:47:30 +0000 (03:47 +0000)]
cmovle != cmovlt
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25761
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sun, 29 Jan 2006 03:45:35 +0000 (03:45 +0000)]
Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25760
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 02:57:39 +0000 (02:57 +0000)]
Split out code generation from analysis from emission
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25759
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 29 Jan 2006 02:43:35 +0000 (02:43 +0000)]
move some code around, no change in the generated code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25758
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Jan 2006 20:43:52 +0000 (20:43 +0000)]
now that we have control over emission of the code, emit the code using nested
"if" statements (indenting it appropriately, of course) instead of using goto's.
This inverts the logic for all of the if statements, which makes things simpler
to understand in addition to making the generated code easier to read.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25757
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Jan 2006 20:31:24 +0000 (20:31 +0000)]
Change PatternCodeEmitter to emit code into a buffer instead of emitting it
directly to the output file. This makes things simple because the code doesn't
have to worry about indentation or the case when there is no goto. It also
allows us to indent the code better without touching everything :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25756
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 28 Jan 2006 20:30:18 +0000 (20:30 +0000)]
Flesh out AMD family/models.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25755
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 28 Jan 2006 19:48:34 +0000 (19:48 +0000)]
Correctly determine CPU vendor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25754
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 28 Jan 2006 19:44:48 +0000 (19:44 +0000)]
Make long warnings wrap and have less indent so other portions of the page
are not skewed out of view.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25753
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Jan 2006 19:06:51 +0000 (19:06 +0000)]
Fit to 80 columns, no functionality change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25752
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 28 Jan 2006 18:47:32 +0000 (18:47 +0000)]
Use union instead of reinterpret_cast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25751
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 28 Jan 2006 18:38:20 +0000 (18:38 +0000)]
Fix recognition of Intel CPUs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25750
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Jan 2006 18:23:48 +0000 (18:23 +0000)]
Is64Bit reflects the capability of the chip, not an aspect of the target os
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25749
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Jan 2006 18:19:37 +0000 (18:19 +0000)]
Fix a bunch of JIT failures with the new isel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25748
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 28 Jan 2006 18:09:06 +0000 (18:09 +0000)]
Improve X86 subtarget support for Windows and AMD.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25747
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Jan 2006 10:58:55 +0000 (10:58 +0000)]
Use the new "UpdateNodeOperands" method to simplify LegalizeDAG and make it
faster. This cuts about 120 lines of code out of the legalizer (mostly code
checking to see if operands have changed).
It also fixes an ugly performance issue, where the legalizer cloned the entire
graph after any change. Now the "UpdateNodeOperands" method gives it a chance
to reuse nodes if the operands of a node change but not its opcode or valuetypes.
This speeds up instruction selection time on kimwitu++ by about 8.2% with a
release build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25746
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Jan 2006 10:34:47 +0000 (10:34 +0000)]
silence a warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25745
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Jan 2006 10:09:25 +0000 (10:09 +0000)]
add another method variant
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25744
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Jan 2006 10:08:58 +0000 (10:08 +0000)]
add another variant
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25743
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Jan 2006 09:32:45 +0000 (09:32 +0000)]
add some methods for updating nodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25742
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 28 Jan 2006 09:32:01 +0000 (09:32 +0000)]
Add some methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25741
91177308-0d34-0410-b5e6-
96231b3b80d8