Eric Christopher
09ac3d8413
Add the support code to enable the dwarf accelerator tables. Upcoming patches
...
to fix the types section (all types, not just global types), and testcases.
The code to do the final emission is disabled by default.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143923 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-07 09:24:32 +00:00
Eric Christopher
bcbd3a4637
Add a new dwarf accelerator table prototype with the goal of replacing
...
the pubnames and pubtypes tables. LLDB can currently use this format
and a full spec is forthcoming and submission for standardization is planned.
A basic summary:
The dwarf accelerator tables are an indirect hash table optimized
for null lookup rather than access to known data. They are output into
an on-disk format that looks like this:
.-------------.
| HEADER |
|-------------|
| BUCKETS |
|-------------|
| HASHES |
|-------------|
| OFFSETS |
|-------------|
| DATA |
`-------------'
where the header contains a magic number, version, type of hash function,
the number of buckets, total number of hashes, and room for a special
struct of data and the length of that struct.
The buckets contain an index (e.g. 6) into the hashes array. The hashes
section contains all of the 32-bit hash values in contiguous memory, and
the offsets contain the offset into the data area for the particular
hash.
For a lookup example, we could hash a function name and take it modulo the
number of buckets giving us our bucket. From there we take the bucket value
as an index into the hashes table and look at each successive hash as long
as the hash value is still the same modulo result (bucket value) as earlier.
If we have a match we look at that same entry in the offsets table and
grab the offset in the data for our final match.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143921 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-07 09:18:42 +00:00
Eric Christopher
d8a8752d5b
Expose a way to get the beginning of the dwarf string section.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143920 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-07 09:18:38 +00:00
Eric Christopher
6370118b16
Fix up comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143919 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-07 09:18:35 +00:00
Eric Christopher
33aa20f737
Typo.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143918 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-07 09:18:32 +00:00
Craig Topper
4c763ee613
Add AVX2 variable shift instructions and intrinsics.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143915 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-07 08:26:24 +00:00
Craig Topper
28692044db
Add AVX2 VPMOVMASK instructions and intrinsics.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143904 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-07 03:20:35 +00:00
Craig Topper
69f5df7778
Add AVX2 VEXTRACTI128 and VINSERTI128 instructions. Fix VPERM2I128 to be qualified with HasAVX2 instead of HasAVX. Mark VINSERTF128 and VEXTRACTF128 as never having side effects.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143902 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-07 02:00:04 +00:00
Craig Topper
c8eb880a7f
More AVX2 instructions and their intrinsics.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143895 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06 23:04:08 +00:00
Benjamin Kramer
5908536673
Replace (Lower|Upper)caseString in favor of StringRef's newest methods.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143891 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06 20:37:06 +00:00
Benjamin Kramer
a7b966fc8d
Fix a typo.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143890 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06 20:36:50 +00:00
Daniel Dunbar
589fbb1770
ADT/StringRef: Add ::lower() and ::upper() methods.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143880 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06 18:04:43 +00:00
Peter Collingbourne
5ced70d8f8
Return only the least significant 8 bits of the exit status from
...
Process::Wait on Windows (mimicing POSIX behaviour).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143876 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06 16:45:46 +00:00
Craig Topper
27e5d0c72a
Add more AVX2 instructions and intrinsics.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143861 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06 06:12:20 +00:00
Chad Rosier
42536af5ce
Add support for passing i1, i8, and i16 call parameters. Also, be sure to
...
zero-extend the constant integer encoding. Test case provides testing for
both call parameters and materialization of i1, i8, and i16 types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143821 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05 20:16:15 +00:00
Benjamin Kramer
5eccd36f1a
Audited all the format strings in libDebugInfo and fixed those that didn't match the types.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143814 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05 16:01:13 +00:00
Benjamin Kramer
80cc2598f8
Reduce the offsets in DwarfDebugInfoEntry to 32 bit, they're printed with %x and
...
that breaks on big-endian machines.
I have to clean up the 32/64 bit confusion in libDebugInfo some day.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143812 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05 15:35:00 +00:00
Benjamin Kramer
3f4c979e1b
Twinify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143811 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05 13:11:25 +00:00
Benjamin Kramer
ef56d1d35d
MachOObject: Use DataExtractor's uleb parser instead of rolling our own.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143810 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05 12:13:21 +00:00
Benjamin Kramer
c25c908977
Add an option to pad an uleb128 to MCObjectWriter and remove the uleb128 encoding from the DWARF asm printer.
...
As a side effect we now print dwarf ulebs with .ascii directives.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143809 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05 11:52:44 +00:00
Nick Lewycky
336b88dac8
Do simple cross-block DSE when we encounter a free statement. Fixes PR11240.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143808 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05 10:48:42 +00:00
Benjamin Kramer
41a964931a
Add more PRI.64 macros for MSVC and use them throughout the codebase.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143799 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05 08:57:40 +00:00
Chad Rosier
38f5c0da6d
Allow i1 to be promoted to i32 for ARM APCS calling convention.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143755 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05 00:02:56 +00:00
Pete Cooper
9c58aa743d
Added missing &. Fixes <rdar://problem/10393723>
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143753 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 23:49:14 +00:00
Eli Friedman
bd00a934c6
Enhanced vzeroupper insertion pass that avoids inserting vzeroupper where it is unnecessary through local analysis. Patch from Bruno Cardoso Lopes, with some additional changes.
...
I'm going to wait for any review comments and perform some additional testing before turning this on by default.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143750 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 23:46:11 +00:00
Chad Rosier
451afbc6a2
Cannot create a result register for non-legal types.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143749 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 23:45:39 +00:00
Chad Rosier
a4e07270bc
When materializing an i32, SExt vs ZExt doesn't matter when we're trying to fit
...
in a 16-bit immediate. However, for the shorter non-legal types (i.e., i1, i8,
i16) we should not sign-extend. This prevents us from materializing things
such as 'true' (i.e., i1 1).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143743 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 23:09:49 +00:00
Chad Rosier
44e895761f
Enable support for materializing i1, i8, and i16 integers via move immediate.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143739 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 22:29:00 +00:00
Bruno Cardoso Lopes
a0dd4cbc87
Add mips ELF relocation types. Patch by Jack Carter!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143738 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 22:24:36 +00:00
Daniel Dunbar
7b1dd9aaf1
build/cmake: Coalesce the configuration time header include fragment generation
...
for target definitions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143731 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 19:04:42 +00:00
Daniel Dunbar
b0d9ce567f
build/cmake: Use tblgen macro directly instead of llvm_tablegen, which just
...
added a layer of indirection with no value (not even conciseness).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143727 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 19:04:23 +00:00
Rafael Espindola
b052728368
Emit declarations before definitions if they are available. This causes DW_AT_specification to
...
point back in the file in the included testcase. Fixes PR11300.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143726 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 19:00:29 +00:00
Dan Gohman
71d0503157
Teach instsimplify to simplify calls to undef.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143719 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 18:32:42 +00:00
Eli Friedman
5b7cc334c8
Add missing argument for atomic instructions in c++ backend. PR11268, part 2.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143712 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 17:29:35 +00:00
Benjamin Kramer
efd2d5e1c4
Simplify code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143695 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 13:52:17 +00:00
Craig Topper
018262768f
Add intrinsics for X86 vcvtps2ph and vcvtph2ps instructions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143683 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 06:59:49 +00:00
Evan Cheng
c39916b166
Fix some minor scheduling itinerary bug. It's not expected to actually affect codegen.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143675 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 01:48:58 +00:00
Chad Rosier
8e4a2e4f73
Indentation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143670 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 00:58:10 +00:00
Chad Rosier
f470cbbad2
Add fast-isel support for returning i1, i8, and i16.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143669 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 00:50:21 +00:00
Daniel Dunbar
28eb1c5217
Speculatively revert "DeadStoreElimination can now trim the size of a store if
...
the end of it is dead.", which appears to break bootstrapping LLVM.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143668 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-04 00:48:26 +00:00
Dan Gohman
65fd6564b8
Reapply r143206, with fixes. Disallow physical register lifetimes
...
across calls, and only check for nested dependences on the special
call-sequence-resource register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143660 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-03 21:49:52 +00:00
Pete Cooper
71fccadbed
Reverted r143600 - selector reference change
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143646 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-03 20:47:50 +00:00
Dan Bailey
e1f38f2ce1
fixed global array handling for ptx to use the correct bit widths
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143640 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-03 19:24:46 +00:00
Daniel Dunbar
a3a2dfd4a2
build: Add initial cut at LLVMBuild.txt files.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143634 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-03 18:53:17 +00:00
Pete Cooper
2d32b86543
DeadStoreElimination can now trim the size of a store if the end of it is dead.
...
Only currently done if the later store is writing to a power of 2 address or
has the same alignment as the earlier store as then its likely to not break up
large stores into smaller ones
Fixes <rdar://problem/10140300>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143630 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-03 18:01:56 +00:00
Craig Topper
98e0b9c86d
Add new X86 AVX2 VBROADCAST instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143612 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-03 07:35:53 +00:00
Chad Rosier
463fe24f1d
Add support for sign-extending non-legal types in SelectSIToFP().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143603 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-03 02:04:59 +00:00
Pete Cooper
d1ffc739c1
Treat objc selector reference globals as invariant so that MachineLICM can hoist them out of loops. Fixes <rdar://problem/6027699>
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143600 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-03 00:56:36 +00:00
Chad Rosier
cde5464970
Remove some cruft from the BitcodeWriter, while still maintaining backward
...
compatibility in the BitcodeReader.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143598 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-03 00:14:01 +00:00
Lang Hames
a1e78888d9
Fixed parameter name.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143594 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-02 23:37:04 +00:00