1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00
Commit Graph

98141 Commits

Author SHA1 Message Date
Matheus Almeida
b651cddc0c [mips] Small code generation improvement for conditional operator (select)
in case the operands are constants and its difference is |1|.
It should be possible in those cases to rematerialize the result using
MIPS's slt and similar instructions.

The small update to some of the tests in cmov.ll, sel1c.ll and sel2c.ll was needed
otherwise the optimization implemented in this patch would have been triggered
(difference between the operands was 1) and that would have changed the semantic
of the tests.

llvm-svn: 196498
2013-12-05 12:07:05 +00:00
Matheus Almeida
adbbd704d1 [mips] Add some comments related to the optimization performed in performSELECTCombine.
The structure of the code was slightly modified so that the next patch is easier to read/review.

No functional changes.

llvm-svn: 196496
2013-12-05 11:56:56 +00:00
Matheus Almeida
f0fc3cf095 [mips][msa] Fix issue with immediate fields of LD/ST instructions
not being correctly encoded/decoded.
In more detail, immediate fields of LD/ST instructions should be
divided/multiplied by the size of the data format before encoding and
after decoding, respectively.

llvm-svn: 196494
2013-12-05 11:06:22 +00:00
Tim Northover
d04bb11dd7 ARM: fix yet another stack-folding bug
We were trying to fold the stack adjustment into the wrong instruction in the
situation where the entire basic-block was epilogue code. Really, it can only
ever be valid to do the folding precisely where the "add sp, ..." would be
placed so there's no need for a separate iterator to track that.

Should fix PR18136.

llvm-svn: 196493
2013-12-05 11:02:02 +00:00
David Blaikie
042cd582a0 DwarfDebug/DwarfUnit: Push abbreviation structures down into DwarfUnits to reduce duplication
llvm-svn: 196479
2013-12-05 07:43:55 +00:00
Matt Arsenault
414264b933 Use isIntrinsic() instead of checking for "llvm."
llvm-svn: 196473
2013-12-05 06:05:43 +00:00
Rafael Espindola
2b4db8d379 Remove the isImplicitlyPrivate argument of getNameWithPrefix.
getSymbolWithGlobalValueBase use is to create a name of a new symbol based
on the name of an existing GV. Assert that and then remove the last call
to pass true to isImplicitlyPrivate.

This gives the mangler API a 1:1 mapping from GV to names, which is what we
need to drop the mangler dependency on the target (and use an extended
datalayout instead).

llvm-svn: 196472
2013-12-05 05:53:12 +00:00
Alp Toker
e845f8af67 Correct word hyphenations
This patch tries to avoid unrelated changes other than fixing a few
hyphen-related ambiguities and contractions in nearby lines.

llvm-svn: 196471
2013-12-05 05:44:44 +00:00
Rafael Espindola
b4226966a9 Hide the stub created for MO_ExternalSymbol too.
given

declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1)
declare void @foo()
define void @bar() {
  call void @foo()
  call void @llvm.memset.p0i8.i32(i8* null, i8 0, i32 188, i32 1, i1 false)
  ret void
}

We used to produce

L_foo$stub:
        .indirect_symbol        _foo
        .ascii  "\364\364\364\364\364"

_memset$stub:
        .indirect_symbol        _memset
        .ascii  "\364\364\364\364\364"

We not produce a private stub for memset too.

Stubs are not needed with recent linkers, but we still produce them for darwin8.

Thanks to David Fang for confirming that gcc used to do this too.

llvm-svn: 196468
2013-12-05 05:19:12 +00:00
Matt Arsenault
6f14dd54b4 R600/SI: Add comments for number of used registers.
llvm-svn: 196467
2013-12-05 05:15:35 +00:00
Rafael Espindola
6963247d3a Try harder to get a consistent floating point results.
This just extends the existing hack. It should be enough to get a reproducible bootstrap
on 32 bits.

I will open a bug to track getting a real fix for this.

llvm-svn: 196462
2013-12-05 04:14:33 +00:00
NAKAMURA Takumi
44a125b7f6 Move llvm/test/MC/ELF/thumb-st_other.s to test/MC/ARM.
llvm-svn: 196457
2013-12-05 02:21:44 +00:00
Jiangning Liu
7825595e77 For AArch64, add missing register cost calculation for big value types like v4i64 and v8i64.
llvm-svn: 196456
2013-12-05 02:12:01 +00:00
Cameron McInally
00a0d8b6f3 Add FileCheck statements for r196435.
llvm-svn: 196449
2013-12-05 01:20:36 +00:00
Reid Kleckner
27cfa30e39 Compiler.h: Disable initializer list usage with clang-cl
Most people are using MSVC 2012, which lacks the <initializer_list>
header.  MSVC 2013 shipped with that header, but it has not yet been
tested.  If clang works with the 2013 header, then we can enable this by
checking the value of _MSC_VER.

llvm-svn: 196448
2013-12-05 01:03:23 +00:00
Will Dietz
dd5418f361 Export symbols in tools that support loading plugins.
llvm-svn: 196447
2013-12-05 01:01:58 +00:00
David Blaikie
5e586ea3ed DwarfDebug: Avoid unnecessary abbreviation lookup when emitting DIEs
DIEs already contain references directly to their DIEAbbrev, use that
instead of looking it up based on index.

llvm-svn: 196446
2013-12-05 01:01:41 +00:00
David Blaikie
a2745869cd DwarfDebug: Remove trivial function wrapper
llvm-svn: 196445
2013-12-05 01:01:37 +00:00
Eric Christopher
fe3790d105 Make these two tests resilient in the face of compile unit size
changes.

llvm-svn: 196444
2013-12-05 01:00:12 +00:00
Eric Christopher
b81841285f 80-column.
llvm-svn: 196442
2013-12-05 00:36:21 +00:00
Eric Christopher
2d6d0fc3f2 Remove special handling for DW_AT_ranges support by constructing the
values with the correct behavior.

llvm-svn: 196441
2013-12-05 00:36:17 +00:00
Logan Chien
558333e1e1 [mc] Fix ELF st_other flag.
ELF_Other_Weakref and ELF_Other_ThumbFunc seems to be LLVM
internal ELF symbol flags.  These should not be emitted to
object file.

This commit defines ELF_STO_Shift for the target-defined
flags for st_other, and increase the value of
ELF_Other_Shift to 16.

llvm-svn: 196440
2013-12-05 00:34:11 +00:00
Michael Ilseman
fb9a99d2cf Use present fast-math flags when applicable in CreateBinOp
We were previously not adding fast-math flags through CreateBinOp()
when it happened to be making a floating point binary operator. This
patch updates it to do so similarly to directly calling CreateF*().

llvm-svn: 196438
2013-12-05 00:32:09 +00:00
Eric Christopher
d051658b5c Fix comment.
llvm-svn: 196437
2013-12-05 00:13:15 +00:00
Cameron McInally
675f9245aa Add AVX512 patterns for v16i32 broadcast and v2i64 zero extend load.
Patch by Aleksey Bader.

llvm-svn: 196435
2013-12-05 00:11:25 +00:00
Eric Christopher
4670039c5b Fix typo.
llvm-svn: 196434
2013-12-04 23:55:09 +00:00
David Blaikie
561838d222 DwarfUnit: Correct comment by generalizing over all units, not just compilation units.
Code review feedback on r196394 by Paul Robinson.

llvm-svn: 196433
2013-12-04 23:39:02 +00:00
Kevin Enderby
218f72b95b Fix a bug in darwin's 32-bit X86 handling of evaluating fixups.
Where it would use a scattered relocation entry but falls back to a
normal relocation entry because the FixupOffset is more than 24-bits.

The bug is in the X86MachObjectWriter::RecordScatteredRelocation() where
it changes reference parameter FixedValue but then returns false to indicate
it did not create a scattered relocation entry.  The fix is simply to save the
original value of the parameter FixedValue at the start of the method and
restore it if we are returning false in that case.

rdar://15526046

llvm-svn: 196432
2013-12-04 23:36:24 +00:00
Eric Christopher
f46aa7d453 Update comment.
llvm-svn: 196431
2013-12-04 23:24:38 +00:00
Eric Christopher
a054e191ad Update comment.
llvm-svn: 196430
2013-12-04 23:24:28 +00:00
Eric Christopher
435de44e9d Remove incorrect comment and pointless cast.
llvm-svn: 196427
2013-12-04 23:05:21 +00:00
Eric Christopher
f8ead1f600 const on its own line is confusing.
llvm-svn: 196426
2013-12-04 22:54:45 +00:00
David Peixotto
b6710ff7c7 Add support for parsing ARM symbol variants on ELF targets
ARM symbol variants are written with parens instead of @ like this:

  .word __GLOBAL_I_a(target1)

This commit adds support for parsing these symbol variants in
expressions. We introduce a new flag to MCAsmInfo that indicates the
parser should use parens to parse the symbol variant. The expression
parser is modified to look for symbol variants using parens instead
of @ when the corresponding MCAsmInfo flag is true.

The MCAsmInfo parens flag is enabled only for ARM on ELF.

By adding this flag to MCAsmInfo, we are able to get rid of
redundant ARM-specific symbol variants and use the generic variants
instead (e.g. VK_GOT instead of VK_ARM_GOT). We use the new
UseParensForSymbolVariant attribute in MCAsmInfo to correctly print
the symbol variants for arm.

To achive this we need to keep a handle to the MCAsmInfo in the
MCSymbolRefExpr class that we can check when printing the symbol
variant.

Updated Tests:
  Changed case of symbol variant to match the generic kind.
  test/CodeGen/ARM/tls-models.ll
  test/CodeGen/ARM/tls1.ll
  test/CodeGen/ARM/tls2.ll
  test/CodeGen/Thumb2/tls1.ll
  test/CodeGen/Thumb2/tls2.ll

PR18080

llvm-svn: 196424
2013-12-04 22:43:20 +00:00
Eric Christopher
1d7adf97f3 Simplify check.
llvm-svn: 196422
2013-12-04 22:29:02 +00:00
Eric Christopher
b46f56f8d6 Reformat slightly.
llvm-svn: 196421
2013-12-04 22:26:43 +00:00
Eric Christopher
5d21b8449e Make RangeSpanList take a symbol for the beginning of the range
rather than magically making the names match.

llvm-svn: 196419
2013-12-04 22:04:50 +00:00
Eric Christopher
bc88095166 Add a FIXME for making the symbol emission functions const.
llvm-svn: 196418
2013-12-04 22:04:46 +00:00
David Blaikie
cd548dcc12 DwarfDebug: Unconditionalize trivial asm comments
While we still have a few (~4) non-trivial comments with string
concatenation, etc that should remain conditionalized, these trivial
literal comments can be simplified.

llvm-svn: 196416
2013-12-04 21:51:05 +00:00
David Blaikie
7ce191027c DwarfDebug: Reduce code duplication for sec offset emission
llvm-svn: 196414
2013-12-04 21:31:26 +00:00
Eric Christopher
522b2d4cf3 Couple of small logical cleanups to use !empty rather than other
checks. No functional change.

llvm-svn: 196412
2013-12-04 21:20:15 +00:00
Yuchen Wu
9559c6af5d llvm-cov: Replace size() with empty() in bool check.
llvm-svn: 196400
2013-12-04 19:18:23 +00:00
Eric Christopher
93cee79b17 Use move and stack allocation for RangeSpanLists. As a result make
a few things more const as well because we're now using const
references to refer to iterators.

llvm-svn: 196398
2013-12-04 19:06:58 +00:00
David Blaikie
399690c42e DebugInfo: Improve test to use llvm-dwarfdump
llvm-svn: 196396
2013-12-04 18:40:29 +00:00
David Blaikie
1c49e697e0 Test fix for r196394
llvm-svn: 196395
2013-12-04 18:34:28 +00:00
David Blaikie
f92edbcbd0 DebugInfo: Remove unused start/end labels for the debug_abbrevs section
Since we always emit only one abbrevation section (shared by all the
compilation units in this module) there's no need for a separate label
at the start of each one (and we weren't using the CU ID anyway, so
there really was only one label). Use the section label instead and drop
the wholely unused debug_abbrev_end label.

llvm-svn: 196394
2013-12-04 18:12:28 +00:00
Cameron McInally
97a9fa294d Fix assembly syntax for AVX512 vector blend instructions.
llvm-svn: 196393
2013-12-04 18:05:36 +00:00
David Blaikie
1ca7b250be DebugInfo: Avoid recreating matching labels in disparate places.
Instead, reuse the same MCSymbol - this should make the code easier to
follow by avoiding hard to trace dependencies between different bits of
code.

llvm-svn: 196392
2013-12-04 17:55:41 +00:00
Michael Liao
7de99b9277 [X86] Check YMM31/ZMM31 as well
- No test case as there's no calling convention preserve YMM31/ZMM31 only

llvm-svn: 196391
2013-12-04 17:44:22 +00:00
Chad Rosier
59cd9a3090 Update the UseFusedMAC definition to directly specify its dependence on having
VFP4.
Patch by Daniel Stewart!

llvm-svn: 196390
2013-12-04 17:16:36 +00:00
Cameron McInally
9c9a78a238 Suppress '(x < y) ? a : 0 -> (x < y) & a' transform on X86 architectures with dedicated mask registers.
Patch by Aleksey Bader.

llvm-svn: 196386
2013-12-04 14:52:33 +00:00