oota-llvm.git
14 years agoDelete an unused function.
Dan Gohman [Wed, 26 May 2010 00:56:27 +0000 (00:56 +0000)]
Delete an unused function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104658 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTrim #include.
Dan Gohman [Wed, 26 May 2010 00:55:59 +0000 (00:55 +0000)]
Trim #include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104657 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDale and Evan suggested putting the "check for setjmp" much earlier in the
Bill Wendling [Wed, 26 May 2010 00:32:40 +0000 (00:32 +0000)]
Dale and Evan suggested putting the "check for setjmp" much earlier in the
machine code generation. That's a good idea, so I made it so.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104655 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoReplace the SubRegSet tablegen class with a less error-prone mechanism.
Jakob Stoklund Olesen [Wed, 26 May 2010 00:28:19 +0000 (00:28 +0000)]
Replace the SubRegSet tablegen class with a less error-prone mechanism.

A Register with subregisters must also provide SubRegIndices for adressing the
subregisters. TableGen automatically inherits indices for sub-subregisters to
minimize typing.

CompositeIndices may be specified for the weirder cases such as the XMM sub_sd
index that returns the same register, and ARM NEON Q registers where both D
subregs have ssub_0 and ssub_1 sub-subregs.

It is now required that all subregisters are named by an index, and a future
patch will also require inherited subregisters to be named. This is necessary to
allow composite subregister indices to be reduced to a single index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104654 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdding the missing implementation of Bitfield's "clear" and "insert".
Shih-wei Liao [Wed, 26 May 2010 00:25:05 +0000 (00:25 +0000)]
Adding the missing implementation of Bitfield's "clear" and "insert".
Fixing http://llvm.org/bugs/show_bug.cgi?id=7222.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104653 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTo handle s* registers in emitVFPLoadStoreMultipleInstruction().
Shih-wei Liao [Wed, 26 May 2010 00:02:28 +0000 (00:02 +0000)]
To handle s* registers in emitVFPLoadStoreMultipleInstruction().
Fixing http://llvm.org/bugs/show_bug.cgi?id=7221.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104652 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoStart adding mach-o tls reloc support.
Eric Christopher [Wed, 26 May 2010 00:02:12 +0000 (00:02 +0000)]
Start adding mach-o tls reloc support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104651 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDrop the SuperregHashTable. It is essentially the same as SubregHashTable.
Jakob Stoklund Olesen [Tue, 25 May 2010 23:43:18 +0000 (23:43 +0000)]
Drop the SuperregHashTable. It is essentially the same as SubregHashTable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104650 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFirst cut at supporting .debug_loc section.
Devang Patel [Tue, 25 May 2010 23:40:22 +0000 (23:40 +0000)]
First cut at supporting .debug_loc section.
This is used to track variable information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104649 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoProperly promote operands when optimizing a single-character memcmp.
Benjamin Kramer [Tue, 25 May 2010 22:53:43 +0000 (22:53 +0000)]
Properly promote operands when optimizing a single-character memcmp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104648 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoConstify function.
Bill Wendling [Tue, 25 May 2010 22:02:22 +0000 (22:02 +0000)]
Constify function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104646 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDo one map lookup instead of two.
Dan Gohman [Tue, 25 May 2010 21:59:42 +0000 (21:59 +0000)]
Do one map lookup instead of two.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104645 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix a missing newline in debug output.
Dan Gohman [Tue, 25 May 2010 21:50:35 +0000 (21:50 +0000)]
Fix a missing newline in debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104644 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMove the verbose asm output up a bit so it can be used in the special cases
Eric Christopher [Tue, 25 May 2010 21:49:43 +0000 (21:49 +0000)]
Move the verbose asm output up a bit so it can be used in the special cases
as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104642 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoOkay, bear with me here...
Bill Wendling [Tue, 25 May 2010 21:44:26 +0000 (21:44 +0000)]
Okay, bear with me here...

If you have a setjmp/longjmp situation, it's possible for stack slot coloring to
reuse a stack slot before it's really dead. For instance, if we have something
like this:

1:  y = g;
    x = sigsetjmp(env, 0);
    switch (x) {
    case 1:
      /* ... */
      goto run;
    case 0:
  run:
      do_run(); /* marked as "no return" */
      break;
    case 3:
      if (...) {
        /* ... */
        goto run;
      }
      /* ... */
      break;
    }

2:  g = y;

"y" may be put onto the stack, so the expression "g = y" is relying upon the
fact that the stack slot containing "y" isn't modified between (1) and (2). But
it can be, because of the "no return" calls in there. A longjmp might come back
with 3, modify the stack slot, and then go to case 0. And it's perfectly
acceptable to reuse the stack slot there because there's no CFG flow from case 3
to (2).

The fix is to disable certain optimizations in these situations. Ideally, we'd
disable them for all "returns twice" functions. But we don't support that
attribute. Check for "setjmp" and "sigsetjmp" instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104640 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd support for initialized global data for darwin tls. Update comments
Eric Christopher [Tue, 25 May 2010 21:28:50 +0000 (21:28 +0000)]
Add support for initialized global data for darwin tls.  Update comments
and testcases accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104635 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoChanged the encoding of X86 floating point stack operations where both operands
Kevin Enderby [Tue, 25 May 2010 20:52:34 +0000 (20:52 +0000)]
Changed the encoding of X86 floating point stack operations where both operands
are st(0).  These can be encoded using an opcode for storing in st(0) or using
an opcode for storing in st(i), where i can also be 0.  To allow testing with
the darwin assembler and get a matching binary the opcode for storing in st(0)
is now used.  To do this the same logical trick is use from the darwin assembler
in converting things like this:

fmul %st(0), %st

into this:

fmul %st(0)

by looking for the second operand being X86::ST0 for specific floating point
mnemonics then removing the second X86::ST0 operand.  This also has the add
benefit to allow things like:

fmul %st(1), %st

that llvm-mc did not assemble.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104634 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemoving test; Chris thinks it's better to have the
Dale Johannesen [Tue, 25 May 2010 20:40:10 +0000 (20:40 +0000)]
Removing test; Chris thinks it's better to have the
bug go untested than have a testcase this large.  So be it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104632 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSeparate unrelated cases that once shared a numeric value
Jakob Stoklund Olesen [Tue, 25 May 2010 19:49:40 +0000 (19:49 +0000)]
Separate unrelated cases that once shared a numeric value

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104629 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPrint symbolic SubRegIndex names on machine operands.
Jakob Stoklund Olesen [Tue, 25 May 2010 19:49:38 +0000 (19:49 +0000)]
Print symbolic SubRegIndex names on machine operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104628 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove NumberHack entirely.
Jakob Stoklund Olesen [Tue, 25 May 2010 19:49:33 +0000 (19:49 +0000)]
Remove NumberHack entirely.

SubRegIndex instances are now numbered uniquely the same way Register instances
are - in lexicographical order by name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104627 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/X86: Add a hack to allow recognizing 'cmpltps' and friends.
Daniel Dunbar [Tue, 25 May 2010 19:49:32 +0000 (19:49 +0000)]
MC/X86: Add a hack to allow recognizing 'cmpltps' and friends.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104626 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix another variant of PR 7191. Also add a testcase
Dale Johannesen [Tue, 25 May 2010 18:47:23 +0000 (18:47 +0000)]
Fix another variant of PR 7191.  Also add a testcase
Mon Ping provided; unfortunately bugpoint failed to
reduce it, but I think it's important to have a test for
this in the suite.  8023512.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104624 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/X86: Define explicit immediate forms of cmp{ss,sd,ps,pd}.
Daniel Dunbar [Tue, 25 May 2010 18:40:53 +0000 (18:40 +0000)]
MC/X86: Define explicit immediate forms of cmp{ss,sd,ps,pd}.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104622 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoThe BT64ri8 record in X86Instr64bit.td was missing a REX_W which is required
Kevin Enderby [Tue, 25 May 2010 18:16:58 +0000 (18:16 +0000)]
The BT64ri8 record in X86Instr64bit.td was missing a REX_W which is required
for the 64-bit version of the Bit Test instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104621 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix PR 7191. I have been unable to create a .ll file that fails, sorry.
Dale Johannesen [Tue, 25 May 2010 17:50:03 +0000 (17:50 +0000)]
Fix PR 7191.  I have been unable to create a .ll file that fails, sorry.
(oye, a word which should be better known to people writing tree
traversals, means grandchild.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104619 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMake sure aeskeygenassist uses an unsigned immediate field.
Eric Christopher [Tue, 25 May 2010 17:33:22 +0000 (17:33 +0000)]
Make sure aeskeygenassist uses an unsigned immediate field.

Fixes rdar://8017638

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104617 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoIgnore NumberHack and give each SubRegIndex instance a unique enum value instead.
Jakob Stoklund Olesen [Tue, 25 May 2010 17:21:04 +0000 (17:21 +0000)]
Ignore NumberHack and give each SubRegIndex instance a unique enum value instead.

This passes lit tests, but I'll give it a go through the buildbots to smoke out
any remaining places that depend on the old SubRegIndex numbering.

Then I'll remove NumberHack entirely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104615 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse enums instead of literals for SystemZ subregisters
Jakob Stoklund Olesen [Tue, 25 May 2010 17:04:18 +0000 (17:04 +0000)]
Use enums instead of literals for SystemZ subregisters

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104612 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse enums instead of literals for X86 subregisters.
Jakob Stoklund Olesen [Tue, 25 May 2010 17:04:16 +0000 (17:04 +0000)]
Use enums instead of literals for X86 subregisters.

The cases in getMatchingSuperRegClass cannot be broken up until the enums have
unique values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104611 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd missing implementation to the materialization of VFP misc. instructions (vmrs...
Zonr Chang [Tue, 25 May 2010 10:23:52 +0000 (10:23 +0000)]
Add missing implementation to the materialization of VFP misc. instructions (vmrs, vmsr and vmov (immediate))

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104588 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd support to MOVimm32 using movt/movw for ARM JIT
Zonr Chang [Tue, 25 May 2010 08:42:45 +0000 (08:42 +0000)]
Add support to MOVimm32 using movt/movw for ARM JIT

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104587 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAllow t2MOVsrl_flag and t2MOVsra_flag instructions to be predicated.
Bob Wilson [Tue, 25 May 2010 04:51:47 +0000 (04:51 +0000)]
Allow t2MOVsrl_flag and t2MOVsra_flag instructions to be predicated.
I don't know of any particular reason why that would be important, but
neither can I see any reason to disallow it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104583 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix up instruction classes for Thumb2 RSB instructions to be consistent with
Bob Wilson [Tue, 25 May 2010 04:43:08 +0000 (04:43 +0000)]
Fix up instruction classes for Thumb2 RSB instructions to be consistent with
Thumb2 ADD and SUB instructions: allow RSB instructions be changed to set the
condition codes, and allow RSBS instructions to be predicated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104582 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoClean up indentation.
Bob Wilson [Tue, 25 May 2010 03:36:52 +0000 (03:36 +0000)]
Clean up indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104580 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDisable invalid coalescer assertion.
Jakob Stoklund Olesen [Tue, 25 May 2010 00:15:18 +0000 (00:15 +0000)]
Disable invalid coalescer assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104574 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse enums instead of literals in the ARM backend.
Jakob Stoklund Olesen [Tue, 25 May 2010 00:15:15 +0000 (00:15 +0000)]
Use enums instead of literals in the ARM backend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104573 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPrint out the name of the function during SSC.
Bill Wendling [Mon, 24 May 2010 23:16:04 +0000 (23:16 +0000)]
Print out the name of the function during SSC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104572 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSwitch SubRegSet to using symbolic SubRegIndices
Jakob Stoklund Olesen [Mon, 24 May 2010 23:03:18 +0000 (23:03 +0000)]
Switch SubRegSet to using symbolic SubRegIndices

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104571 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAllow Thumb2 MVN instructions to set condition codes. The immediate operand
Bob Wilson [Mon, 24 May 2010 22:41:19 +0000 (22:41 +0000)]
Allow Thumb2 MVN instructions to set condition codes.  The immediate operand
version of t2MVN already allowed that, but not the register versions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104570 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agodiaggroup categories should take precedence over diag-specific groups.
Chris Lattner [Mon, 24 May 2010 21:55:47 +0000 (21:55 +0000)]
diaggroup categories should take precedence over diag-specific groups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104567 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoLose the dummies
Jakob Stoklund Olesen [Mon, 24 May 2010 21:47:01 +0000 (21:47 +0000)]
Lose the dummies

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104564 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoReplace the tablegen RegisterClass field SubRegClassList with an alist-like data
Jakob Stoklund Olesen [Mon, 24 May 2010 21:46:58 +0000 (21:46 +0000)]
Replace the tablegen RegisterClass field SubRegClassList with an alist-like data
structure that represents a mapping without any dependencies on SubRegIndex
numbering.

This brings us closer to being able to remove the explicit SubRegIndex
numbering, and it is now possible to specify any mapping without inventing
*_INVALID register classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104563 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAvoid adding duplicate function live-in's.
Evan Cheng [Mon, 24 May 2010 21:33:37 +0000 (21:33 +0000)]
Avoid adding duplicate function live-in's.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104560 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix an mmx movd encoding.
Dan Gohman [Mon, 24 May 2010 20:51:08 +0000 (20:51 +0000)]
Fix an mmx movd encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104552 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/X86: Add aliases for CMOVcc variants.
Kevin Enderby [Mon, 24 May 2010 20:32:23 +0000 (20:32 +0000)]
MC/X86: Add aliases for CMOVcc variants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104549 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoClean up some extra whitespace.
Bob Wilson [Mon, 24 May 2010 20:08:34 +0000 (20:08 +0000)]
Clean up some extra whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104544 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoThumb2 RSBS instructions were being printed without the 'S' suffix.
Bob Wilson [Mon, 24 May 2010 18:44:06 +0000 (18:44 +0000)]
Thumb2 RSBS instructions were being printed without the 'S' suffix.
Fix it by changing the T2I_rbin_s_is multiclass to handle the CPSR
output and 'S' suffix in the same way as T2I_bin_s_irs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104531 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDo not emit line number entries for unknown debug values.
Devang Patel [Mon, 24 May 2010 18:26:49 +0000 (18:26 +0000)]
Do not emit line number entries for unknown debug values.
This fixes recent regression in store.exp from gdb testsuite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104524 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoLR is in GPR, not tGPR even in Thumb1 mode.
Evan Cheng [Mon, 24 May 2010 18:00:18 +0000 (18:00 +0000)]
LR is in GPR, not tGPR even in Thumb1 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104518 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd SubRegIndex defs to PowerPC. It looks like the CR subregister indices are
Jakob Stoklund Olesen [Mon, 24 May 2010 17:55:38 +0000 (17:55 +0000)]
Add SubRegIndex defs to PowerPC. It looks like the CR subregister indices are
never used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104517 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse SubRegIndex in SystemZ.
Jakob Stoklund Olesen [Mon, 24 May 2010 17:43:01 +0000 (17:43 +0000)]
Use SubRegIndex in SystemZ.

Anton, please review the change to SystemZAsmPrinter.cpp. It could be a bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104515 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSubRegIndex'ize Mips
Jakob Stoklund Olesen [Mon, 24 May 2010 17:42:58 +0000 (17:42 +0000)]
SubRegIndex'ize Mips

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104514 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSubRegIndex'ize MSP430
Jakob Stoklund Olesen [Mon, 24 May 2010 17:42:55 +0000 (17:42 +0000)]
SubRegIndex'ize MSP430

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104513 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix a few places that depended on the numeric value of subreg indices.
Jakob Stoklund Olesen [Mon, 24 May 2010 17:13:28 +0000 (17:13 +0000)]
Fix a few places that depended on the numeric value of subreg indices.
Add assertions in places that depend on consecutive indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104510 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSwitch ARMRegisterInfo.td to use SubRegIndex and eliminate the parallel enums
Jakob Stoklund Olesen [Mon, 24 May 2010 16:54:32 +0000 (16:54 +0000)]
Switch ARMRegisterInfo.td to use SubRegIndex and eliminate the parallel enums
from ARMRegisterInfo.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104508 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRename X86 subregister indices to something shorter.
Jakob Stoklund Olesen [Mon, 24 May 2010 14:48:17 +0000 (14:48 +0000)]
Rename X86 subregister indices to something shorter.
Use the tablegen-produced enums.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104493 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd the SubRegIndex TableGen class.
Jakob Stoklund Olesen [Mon, 24 May 2010 14:48:12 +0000 (14:48 +0000)]
Add the SubRegIndex TableGen class.

This is the beginning of purely symbolic subregister indices, but we need a bit
of jiggling before the explicit numeric indices can be completely removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104492 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoEncode the Caml frametable by following what the comment says: the number of descriptors
Nicolas Geoffray [Mon, 24 May 2010 12:24:11 +0000 (12:24 +0000)]
Encode the Caml frametable by following what the comment says: the number of descriptors
is first emitted, and StackOffsets are emitted in 16 bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104488 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoApply timeouts and memory limits in more places. In particular, when
Duncan Sands [Mon, 24 May 2010 07:49:55 +0000 (07:49 +0000)]
Apply timeouts and memory limits in more places.  In particular, when
bugpoint does "Running the code generator to test for a crash" this
gets you a crash if llc goes into an infinite loop or uses up vast
amounts of memory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104485 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agollvm-mc: Use EmitIntValue where possible, which makes the API calls from the AsmParse...
Daniel Dunbar [Sun, 23 May 2010 18:36:38 +0000 (18:36 +0000)]
llvm-mc: Use EmitIntValue where possible, which makes the API calls from the AsmParser and CodeGen line up better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104467 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agollvm-mc: Use AddBlankLine in asm parser. This makes transliteration match the input...
Daniel Dunbar [Sun, 23 May 2010 18:36:34 +0000 (18:36 +0000)]
llvm-mc: Use AddBlankLine in asm parser. This makes transliteration match the input much more closely, and also makes the API calls from the AsmParser and CodeGen line up better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104466 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Add an MCLoggingStreamer, for use in debugging integrated-as mismatches.
Daniel Dunbar [Sun, 23 May 2010 17:44:06 +0000 (17:44 +0000)]
MC: Add an MCLoggingStreamer, for use in debugging integrated-as mismatches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104463 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoVDUP doesn't support vectors with 64-bit elements.
Bob Wilson [Sun, 23 May 2010 05:42:31 +0000 (05:42 +0000)]
VDUP doesn't support vectors with 64-bit elements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104455 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/X86: Subdivide immediates a bit more, so that we properly recognize immediates...
Daniel Dunbar [Sat, 22 May 2010 21:02:33 +0000 (21:02 +0000)]
MC/X86: Subdivide immediates a bit more, so that we properly recognize immediates based on the width of the target instruction. For example:
  addw $0xFFFF, %ax
should match the same as
  addw $-1, %ax
but we used to match it to the longer encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104453 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agotblgen/AsmMatcher: Change AsmOperandClass to allow a list of superclasses instead...
Daniel Dunbar [Sat, 22 May 2010 21:02:29 +0000 (21:02 +0000)]
tblgen/AsmMatcher: Change AsmOperandClass to allow a list of superclasses instead of just one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104452 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC/X86: Add alias for setz, setnz, jz, jnz.
Daniel Dunbar [Sat, 22 May 2010 06:37:33 +0000 (06:37 +0000)]
MC/X86: Add alias for setz, setnz, jz, jnz.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104435 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTrivial change to dump() function for SparseBitVector
John Mosby [Sat, 22 May 2010 05:13:17 +0000 (05:13 +0000)]
Trivial change to dump() function for SparseBitVector

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104433 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoImplement @llvm.returnaddress. rdar://8015977.
Evan Cheng [Sat, 22 May 2010 01:47:14 +0000 (01:47 +0000)]
Implement @llvm.returnaddress. rdar://8015977.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104421 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoImplement eh.sjlj.longjmp for ARM. Clean up the intrinsic a bit.
Jim Grosbach [Sat, 22 May 2010 01:06:18 +0000 (01:06 +0000)]
Implement eh.sjlj.longjmp for ARM. Clean up the intrinsic a bit.
Followups: docs patch for the builtin and eh.sjlj.setjmp cleanup to match
longjmp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104419 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoThis test is darwin only. Make it so(tm).
Eric Christopher [Sat, 22 May 2010 00:55:55 +0000 (00:55 +0000)]
This test is darwin only.  Make it so(tm).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104418 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRecognize more BUILD_VECTORs and VECTOR_SHUFFLEs that can be implemented by
Bob Wilson [Sat, 22 May 2010 00:23:12 +0000 (00:23 +0000)]
Recognize more BUILD_VECTORs and VECTOR_SHUFFLEs that can be implemented by
copying VFP subregs.  This exposed a bunch of dead code in the *spill-q.ll
tests, so I tweaked those tests to keep that code from being optimized away.
Radar 7872877.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104415 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd full bss data support for darwin tls variables.
Eric Christopher [Sat, 22 May 2010 00:10:22 +0000 (00:10 +0000)]
Add full bss data support for darwin tls variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104414 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoCollect variable information during endFunction() instead of beginFunction().
Devang Patel [Sat, 22 May 2010 00:04:14 +0000 (00:04 +0000)]
Collect variable information during endFunction() instead of beginFunction().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104412 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd a new section and accessor for TLS data.
Eric Christopher [Sat, 22 May 2010 00:00:58 +0000 (00:00 +0000)]
Add a new section and accessor for TLS data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104411 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoClean up extra whitespace.
Bob Wilson [Fri, 21 May 2010 23:53:55 +0000 (23:53 +0000)]
Clean up extra whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104410 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMake this LookAheadLimit, not the uninitialized LookAheadLeft.
Eric Christopher [Fri, 21 May 2010 23:40:03 +0000 (23:40 +0000)]
Make this LookAheadLimit, not the uninitialized LookAheadLeft.

Evan please verify!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104408 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoadd a note
Chris Lattner [Fri, 21 May 2010 23:16:21 +0000 (23:16 +0000)]
add a note

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104404 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoExpand on comment.
Eric Christopher [Fri, 21 May 2010 23:03:53 +0000 (23:03 +0000)]
Expand on comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104396 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdded retl for 32-bit x86 and added retq for 64-bit x86.
Kevin Enderby [Fri, 21 May 2010 23:01:38 +0000 (23:01 +0000)]
Added retl for 32-bit x86 and added retq for 64-bit x86.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104394 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix comment and whitespace.
Eric Christopher [Fri, 21 May 2010 22:39:11 +0000 (22:39 +0000)]
Fix comment and whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104392 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoexpand on the llvm ir bitcode dox. Patch by Peter Housel!
Chris Lattner [Fri, 21 May 2010 22:20:54 +0000 (22:20 +0000)]
expand on the llvm ir bitcode dox.  Patch by Peter Housel!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104391 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAllow machine cse to cse instructions which define physical registers. Controlled...
Evan Cheng [Fri, 21 May 2010 21:22:19 +0000 (21:22 +0000)]
Allow machine cse to cse instructions which define physical registers. Controlled by option -machine-cse-phys-defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104385 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix section attribute name.
Eric Christopher [Fri, 21 May 2010 21:08:52 +0000 (21:08 +0000)]
Fix section attribute name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104381 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoChange CodeGen/ARM/2009-11-02-NegativeLane.ll to use 16-bit vector elements
Bob Wilson [Fri, 21 May 2010 21:05:32 +0000 (21:05 +0000)]
Change CodeGen/ARM/2009-11-02-NegativeLane.ll to use 16-bit vector elements
so that it will continue to test what it was meant to test when I commit a
separate change for better support of BUILD_VECTOR and VECTOR_SHUFFLE for Neon.
Fix a DAG combiner crash exposed by this test change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104380 91177308-0d34-0410-b5e6-96231b3b80d8

14 years ago- Change MachineInstr::findRegisterDefOperandIdx so it can also look for defs
Evan Cheng [Fri, 21 May 2010 20:53:24 +0000 (20:53 +0000)]
- Change MachineInstr::findRegisterDefOperandIdx so it can also look for defs
that are aliases of the specified register.
- Rename modifiesRegister to definesRegister since it's looking a def of the
specific register or one of its super-registers. It's not looking for def of a
sub-register or alias that could change the specified register.
- Added modifiesRegister to look for defs of aliases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104377 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd MachineInstr::readsWritesVirtualRegister() to determine if an instruction
Jakob Stoklund Olesen [Fri, 21 May 2010 20:02:01 +0000 (20:02 +0000)]
Add MachineInstr::readsWritesVirtualRegister() to determine if an instruction
reads or writes a register.

This takes partial redefines and undef uses into account.

Don't actually use it yet. That caused miscompiles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104372 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSimplify
Devang Patel [Fri, 21 May 2010 18:49:09 +0000 (18:49 +0000)]
Simplify

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104338 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPrevious commit message should refer to 104308.
Dale Johannesen [Fri, 21 May 2010 18:44:47 +0000 (18:44 +0000)]
Previous commit message should refer to 104308.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104337 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix two bugs in 104348:
Dale Johannesen [Fri, 21 May 2010 18:40:15 +0000 (18:40 +0000)]
Fix two bugs in 104348:
Case where MMX is disabled wasn't handled right.
MMX->MMX bitconverts are Legal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104336 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoadded an assertion to MCObjectWriter::WriteBytes to catch misuse of the ZeroFillSize...
Nathan Jeffords [Fri, 21 May 2010 18:23:56 +0000 (18:23 +0000)]
added an assertion to MCObjectWriter::WriteBytes to catch misuse of the ZeroFillSize parameter

If the size of the string is greater than the zero fill size, the function will attempt to write a very large string of zeros to the object file (~4GB on 32 bit platforms). This assertion will catch the scenario and crash the program before the write occurs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104334 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agonow that fp reg kill insertion stuff happens as a separate
Chris Lattner [Fri, 21 May 2010 18:17:54 +0000 (18:17 +0000)]
now that fp reg kill insertion stuff happens as a separate
pass after isel instead of being interlaced with it, we can
trust that all the code for a function has been isel'd before
it is run.

The practical impact of this is that we can scan for machine
instr phis instead of doing a fuzzy match on the LLVM BB for
phi nodes.  Doing the fuzzy match required knowing when isel
would produce an fp reg stack phi which was gross.  It was
also wrong in cases where select got lowered to a branch
tree because cmovs aren't available (PR6828).

Just do the scan on machine phis which is simpler, faster
and more correct.  This fixes PR6828.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104333 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse less evil form of switch stmt.
Chris Lattner [Fri, 21 May 2010 18:02:42 +0000 (18:02 +0000)]
Use less evil form of switch stmt.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104331 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agouse continue to reduce nesting.
Chris Lattner [Fri, 21 May 2010 18:01:24 +0000 (18:01 +0000)]
use continue to reduce nesting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104330 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agopull a nested loop of this pass out to its own function,
Chris Lattner [Fri, 21 May 2010 17:57:03 +0000 (17:57 +0000)]
pull a nested loop of this pass out to its own function,
eliminating the gymnastics around the ContainsFPCode var.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104328 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agomodernize this pass a bit, fit in 80 columns.
Chris Lattner [Fri, 21 May 2010 17:49:07 +0000 (17:49 +0000)]
modernize this pass a bit, fit in 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104326 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoconstify accessor.
Chris Lattner [Fri, 21 May 2010 17:47:50 +0000 (17:47 +0000)]
constify accessor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104325 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRevert "Use MachineInstr::readsWritesVirtualRegister to determine if a register is...
Jakob Stoklund Olesen [Fri, 21 May 2010 17:36:32 +0000 (17:36 +0000)]
Revert "Use MachineInstr::readsWritesVirtualRegister to determine if a register is read."

This reverts r104322. I think it was causing miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104323 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoUse MachineInstr::readsWritesVirtualRegister to determine if a register is read.
Jakob Stoklund Olesen [Fri, 21 May 2010 16:42:30 +0000 (16:42 +0000)]
Use MachineInstr::readsWritesVirtualRegister to determine if a register is read.
This correctly handles partial redefines and undef uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104322 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoTeach VirtRegRewriter to handle spilling in instructions that have multiple
Jakob Stoklund Olesen [Fri, 21 May 2010 16:36:13 +0000 (16:36 +0000)]
Teach VirtRegRewriter to handle spilling in instructions that have multiple
definitions of the virtual register.

This happens when spilling the registers produced by REG_SEQUENCE:

%reg1047:5<def>, %reg1047:6<def>, %reg1047:7<def> = VLD3d8 %reg1033, 0, pred:14, pred:%reg0

The rewriter would spill the register multiple times, dead store elimination
tried to keep up, but ended up cutting the branch it was sitting on.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104321 91177308-0d34-0410-b5e6-96231b3b80d8