]> granicus.if.org Git - llvm/log
llvm
8 years agoTimer: Remove group-less NamedRegionTimer constructor.
Matthias Braun [Thu, 10 Nov 2016 23:36:44 +0000 (23:36 +0000)]
Timer: Remove group-less NamedRegionTimer constructor.

The NamedRegionTimer initializer without a group name puts the Timer
into the "Misc" group and is (nearly) unused. Remove it.

The only user of this constructor appears to be the HexagonGenInsert pass,
which creates a counter without group to count the complete execution
time of that pass, however since every pass gets a counter by the
PassManager anyway this should be unnecessary. Also removed the
pointless TimerGroup there.

Differential Revision: https://reviews.llvm.org/D25582

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

8 years ago[DAG Combiner] Fix the native computation of the Newton series for reciprocals
Evandro Menezes [Thu, 10 Nov 2016 23:31:06 +0000 (23:31 +0000)]
[DAG Combiner] Fix the native computation of the Newton series for reciprocals

The generic infrastructure to compute the Newton series for reciprocal and
reciprocal square root was conceived to allow a target to compute the series
itself.  However, the original code did not properly consider this condition
if returned by a target.  This patch addresses the issues to allow a target
to compute the series on its own.

Differential revision: https://reviews.llvm.org/D22975

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

8 years agoGlobalISel: fix mistaken comment change
Tim Northover [Thu, 10 Nov 2016 22:47:38 +0000 (22:47 +0000)]
GlobalISel: fix mistaken comment change

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

8 years ago[SelectionDAG] Add support for vector demandedelts in ADD/SUB opcodes
Simon Pilgrim [Thu, 10 Nov 2016 22:41:49 +0000 (22:41 +0000)]
[SelectionDAG] Add support for vector demandedelts in ADD/SUB opcodes

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

8 years ago[LSR] Tweak loop-strength-reduce-crash test. Test-only change.
Justin Lebar [Thu, 10 Nov 2016 22:37:13 +0000 (22:37 +0000)]
[LSR] Tweak loop-strength-reduce-crash test.  Test-only change.

Run opt instead of llc, and update the comment.

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

8 years agoIR: Introduce inrange attribute on getelementptr indices.
Peter Collingbourne [Thu, 10 Nov 2016 22:34:55 +0000 (22:34 +0000)]
IR: Introduce inrange attribute on getelementptr indices.

If the inrange keyword is present before any index, loading from or
storing to any pointer derived from the getelementptr has undefined
behavior if the load or store would access memory outside of the bounds of
the element selected by the index marked as inrange.

This can be used, e.g. for alias analysis or to split globals at element
boundaries where beneficial.

As previously proposed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2016-July/102472.html

Differential Revision: https://reviews.llvm.org/D22793

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

8 years ago[X86] Updated knownbits vector ADD/SUB test
Simon Pilgrim [Thu, 10 Nov 2016 22:34:12 +0000 (22:34 +0000)]
[X86] Updated knownbits vector ADD/SUB test

In preparation for demandedelts support

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

8 years ago[X86] Add knownbits vector ADD test
Simon Pilgrim [Thu, 10 Nov 2016 22:21:04 +0000 (22:21 +0000)]
[X86] Add knownbits vector ADD test

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

8 years agoScheduleDAGInstrs: Slightly simplify code; NFC
Matthias Braun [Thu, 10 Nov 2016 22:11:00 +0000 (22:11 +0000)]
ScheduleDAGInstrs: Slightly simplify code; NFC

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

8 years ago[SelectionDAG] Add support for splatted vectors in SUB opcode
Simon Pilgrim [Thu, 10 Nov 2016 21:57:42 +0000 (21:57 +0000)]
[SelectionDAG] Add support for splatted vectors in SUB opcode

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

8 years ago[X86] Add knownbits vector SUB test
Simon Pilgrim [Thu, 10 Nov 2016 21:50:23 +0000 (21:50 +0000)]
[X86] Add knownbits vector SUB test

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

8 years agoRegisterCoalescer: Ignore interferences for constant physregs
Matthias Braun [Thu, 10 Nov 2016 21:22:47 +0000 (21:22 +0000)]
RegisterCoalescer: Ignore interferences for constant physregs

When copying to/from a constant register interferences can be ignored.

Also update the documentation for isConstantPhysReg() to make it more
obvious that this transformation is valid.

Differential Revision: https://reviews.llvm.org/D26106

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

8 years agoAMDGPU: Emit runtime metadata as a note element in .note section
Yaxun Liu [Thu, 10 Nov 2016 21:18:49 +0000 (21:18 +0000)]
AMDGPU: Emit runtime metadata as a note element in .note section

Currently runtime metadata is emitted as an ELF section with name .AMDGPU.runtime_metadata.

However there is a standard way to convey vendor specific information about how to run an ELF binary, which is called vendor-specific note element (http://www.netbsd.org/docs/kernel/elf-notes.html).

This patch lets AMDGPU backend emits runtime metadata as a note element in .note section.

Differential Revision: https://reviews.llvm.org/D25781

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

8 years agoFix type ambiguity with std::max
Zachary Turner [Thu, 10 Nov 2016 20:35:21 +0000 (20:35 +0000)]
Fix type ambiguity with std::max

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

8 years agoFix initialization order error.
Zachary Turner [Thu, 10 Nov 2016 20:23:32 +0000 (20:23 +0000)]
Fix initialization order error.

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

8 years ago[Support] Improve flexibility of binary blob formatter.
Zachary Turner [Thu, 10 Nov 2016 20:16:45 +0000 (20:16 +0000)]
[Support] Improve flexibility of binary blob formatter.

This makes it possible to indent a binary blob by a certain
number of bytes, and also makes some things more idiomatic.
Finally, it integrates this binary blob formatter into ScopedPrinter
which used to have its own implementation of this algorithm.

Differential Revision: https://reviews.llvm.org/D26477

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

8 years ago[PDB] Begin adding documentation for the PDB file format.
Zachary Turner [Thu, 10 Nov 2016 19:24:21 +0000 (19:24 +0000)]
[PDB] Begin adding documentation for the PDB file format.

Differential Revision: https://reviews.llvm.org/D26374

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

8 years ago[opt-viewer] Avoid duplicated remarks
Adam Nemet [Thu, 10 Nov 2016 18:42:56 +0000 (18:42 +0000)]
[opt-viewer] Avoid duplicated remarks

This can happen if a pass is run multiple times or if the code is in a
header file which is included multiple times.

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

8 years ago[Target] Rename X86/ARM Assembly printer to reflect reality.
Davide Italiano [Thu, 10 Nov 2016 18:39:31 +0000 (18:39 +0000)]
[Target] Rename X86/ARM Assembly printer to reflect reality.

This shows up a lot profiling LTO testcases with -time-passes, so
better have a non confusing name.

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

8 years agoFix some Clang-tidy modernize-use-default and readability-redundant-member-init and...
Eugene Zelenko [Thu, 10 Nov 2016 18:02:34 +0000 (18:02 +0000)]
Fix some Clang-tidy modernize-use-default and readability-redundant-member-init and Include What You Use warnings; other minor fixes.

Differential revision: https://reviews.llvm.org/D26087

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

8 years agoRevert r286437 r286438, they caused PR30976
Nico Weber [Thu, 10 Nov 2016 17:55:41 +0000 (17:55 +0000)]
Revert r286437 r286438, they caused PR30976

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

8 years ago[OptDiag] Remove non-printable chars from function name
Adam Nemet [Thu, 10 Nov 2016 17:47:03 +0000 (17:47 +0000)]
[OptDiag] Remove non-printable chars from function name

The r283656 did this in the remark arguments.  We also need to do this
in the main function attribute as that is written to YAML as well.

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

8 years ago[SelectionDAG] Add support for vector demandedelts in TRUNCATE opcodes
Simon Pilgrim [Thu, 10 Nov 2016 17:43:52 +0000 (17:43 +0000)]
[SelectionDAG] Add support for vector demandedelts in TRUNCATE opcodes

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

8 years agoAdd comments about why we put LoopSink pass at the very late stage.
Dehao Chen [Thu, 10 Nov 2016 17:42:18 +0000 (17:42 +0000)]
Add comments about why we put LoopSink pass at the very late stage.

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

8 years ago[X86] Add knownbits vector TRUNC test
Simon Pilgrim [Thu, 10 Nov 2016 17:24:33 +0000 (17:24 +0000)]
[X86] Add knownbits vector TRUNC test

In preparation for demandedelts support

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

8 years agoRestore part of "[ThinLTO] Prevent exporting of locals used/defined in module level...
Teresa Johnson [Thu, 10 Nov 2016 16:57:32 +0000 (16:57 +0000)]
Restore part of "[ThinLTO] Prevent exporting of locals used/defined in module level asm"

This restores the part of r286297 that didn't require adding a
dependency from the Analysis to Object library. There are two parts
to the original fix, and this will address the handling for the case
where locals are used in module level asm.

The part that requires functionality in libObject handles local defs
in module level asm, and was reverted because our downstream build
of clang builds lib/Bitcode into a single library, and this new
dependency introduced a cycle there. I am trying to get that fixed
(see D26502), so for now that change isn't being restored

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

8 years agoUse common SDLoc. NFCI.
Simon Pilgrim [Thu, 10 Nov 2016 16:47:09 +0000 (16:47 +0000)]
Use common SDLoc. NFCI.

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

8 years ago[SelectionDAG] Add support for vector demandedelts in MUL opcodes
Simon Pilgrim [Thu, 10 Nov 2016 16:27:42 +0000 (16:27 +0000)]
[SelectionDAG] Add support for vector demandedelts in MUL opcodes

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

8 years agoreproducer for pr29002
Asaf Badouh [Thu, 10 Nov 2016 16:27:27 +0000 (16:27 +0000)]
reproducer for pr29002

https://reviews.llvm.org/D26449

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

8 years agoAMDGPU: Add VI i16 support
Tom Stellard [Thu, 10 Nov 2016 16:02:37 +0000 (16:02 +0000)]
AMDGPU: Add VI i16 support

Patch By: Wei Ding

Differential Revision: https://reviews.llvm.org/D18049

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

8 years ago[X86] Add knownbits vector MUL test
Simon Pilgrim [Thu, 10 Nov 2016 15:57:33 +0000 (15:57 +0000)]
[X86] Add knownbits vector MUL test

In preparation for demandedelts support

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

8 years ago[SelectionDAG] Add support for vector demandedelts in SRA opcodes
Simon Pilgrim [Thu, 10 Nov 2016 15:05:09 +0000 (15:05 +0000)]
[SelectionDAG] Add support for vector demandedelts in SRA opcodes

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

8 years ago[InstCombine] auto-generate better checks; NFC
Sanjay Patel [Thu, 10 Nov 2016 14:58:17 +0000 (14:58 +0000)]
[InstCombine] auto-generate better checks; NFC

Note that the existing metadata checking was re-added by hand because the
script doesn't currently know how to generate checks for lines outside of
functions.

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

8 years ago[X86] Add knownbits vector arithmetic shift test
Simon Pilgrim [Thu, 10 Nov 2016 14:46:24 +0000 (14:46 +0000)]
[X86] Add knownbits vector arithmetic shift test

In preparation for demandedelts support

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

8 years ago[DAGCombiner] Correctly extract the ConstOrConstSplat shift value for SHL nodes
Simon Pilgrim [Thu, 10 Nov 2016 14:35:09 +0000 (14:35 +0000)]
[DAGCombiner] Correctly extract the ConstOrConstSplat shift value for SHL nodes

We were failing to extract a constant splat shift value if the shifted value was being masked.

The (shl (and (setcc) N01CV) N1CV) -> (and (setcc) N01CV<<N1CV) combine was unnecessarily preventing this.

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

8 years agoRemove unnecessary check prefix directives. NFC.
Chad Rosier [Thu, 10 Nov 2016 14:28:44 +0000 (14:28 +0000)]
Remove unnecessary check prefix directives. NFC.

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

8 years ago[DAGCombiner] Show missed opportunity to UNDEF out-of-range SHL
Simon Pilgrim [Thu, 10 Nov 2016 14:19:45 +0000 (14:19 +0000)]
[DAGCombiner] Show missed opportunity to UNDEF out-of-range SHL

Fails to match constant shift value due to presence of AND mask.

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

8 years ago[RegionInfo] Add three tests that include infinite loops
Tobias Grosser [Thu, 10 Nov 2016 13:56:19 +0000 (13:56 +0000)]
[RegionInfo] Add three tests that include infinite loops

These examples are variations that were inspired from a small subgraph taken
from paper.ll which are interesting as they show certain issues with infinite
loops.

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

8 years ago[SelectionDAG] Add support for vector demandedelts in SHL/SRL opcodes
Simon Pilgrim [Thu, 10 Nov 2016 13:52:42 +0000 (13:52 +0000)]
[SelectionDAG] Add support for vector demandedelts in SHL/SRL opcodes

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

8 years ago[X86] Add knownbits vector logical shift test
Simon Pilgrim [Thu, 10 Nov 2016 13:34:17 +0000 (13:34 +0000)]
[X86] Add knownbits vector logical shift test

In preparation for demandedelts support

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

8 years ago[ARM] Thumb2 LDR (literal) should accept PC as the destination
Oliver Stannard [Thu, 10 Nov 2016 13:20:41 +0000 (13:20 +0000)]
[ARM] Thumb2 LDR (literal) should accept PC as the destination

The version of this instruction with the .w suffix already correctly accepts
this, but the alias without the .w did not.

Differential Revision: https://reviews.llvm.org/D26499

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

8 years ago[SCEVExpander] Hoist unsigned divisons when safe
Sanjoy Das [Thu, 10 Nov 2016 07:56:12 +0000 (07:56 +0000)]
[SCEVExpander] Hoist unsigned divisons when safe

That is, when the divisor is a constant non-zero.

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

8 years ago[SCEVExpander] Don't hoist divisions
Sanjoy Das [Thu, 10 Nov 2016 07:56:09 +0000 (07:56 +0000)]
[SCEVExpander] Don't hoist divisions

Fixes PR30942.

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

8 years agoLift out a helper lambda; NFC
Sanjoy Das [Thu, 10 Nov 2016 07:56:05 +0000 (07:56 +0000)]
Lift out a helper lambda; NFC

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

8 years ago[AVX-512] Allow legacy cvtpd2dq intrinsics to select EVEX encoded instruction when...
Craig Topper [Thu, 10 Nov 2016 07:47:17 +0000 (07:47 +0000)]
[AVX-512] Allow legacy cvtpd2dq intrinsics to select EVEX encoded instruction when available.

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

8 years ago[AVX-512][X86] Convert avx_cvtt_ps2dq_256 and sse2_cvttps2dq intrinsics to ISD::FP_TO...
Craig Topper [Thu, 10 Nov 2016 07:24:52 +0000 (07:24 +0000)]
[AVX-512][X86] Convert avx_cvtt_ps2dq_256 and sse2_cvttps2dq intrinsics to ISD::FP_TO_SINT in the intrinsics table and delete patterns. While nearby also move CVTDQ2PS patterns into their instructions.

This allows these intrinsics to also use EVEX instructons.

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

8 years ago[X86] Convert int_x86_avx_cvtt_pd2dq_256 to fp_to_sint using the intrinsics table...
Craig Topper [Thu, 10 Nov 2016 06:45:39 +0000 (06:45 +0000)]
[X86] Convert int_x86_avx_cvtt_pd2dq_256 to fp_to_sint using the intrinsics table. Removes extra patterns and allows legacy intrinsic to select EVEX encoded instructions when available.

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

8 years ago[X86] Move some custom patterns into the currently empty pattern of their correspondi...
Craig Topper [Thu, 10 Nov 2016 06:45:37 +0000 (06:45 +0000)]
[X86] Move some custom patterns into the currently empty pattern of their corresponding instructions. NFC

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

8 years ago[X86] Remove some patterns still referencing int_x86_sse2_cvttpd2dq that should have...
Craig Topper [Thu, 10 Nov 2016 06:45:34 +0000 (06:45 +0000)]
[X86] Remove some patterns still referencing int_x86_sse2_cvttpd2dq that should have been removed in r286344. NFC

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

8 years ago[SCEV] Eta reduce some lambdas; NFC
Sanjoy Das [Thu, 10 Nov 2016 06:33:54 +0000 (06:33 +0000)]
[SCEV] Eta reduce some lambdas; NFC

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

8 years ago[LangRef] Drop "experimental" caveat from operand bundles
Sanjoy Das [Thu, 10 Nov 2016 06:21:10 +0000 (06:21 +0000)]
[LangRef] Drop "experimental" caveat from operand bundles

I think we're past that point now.

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

8 years ago[AVX-512] Add test cases to show missed opportunities for using VALIGND/Q to handle...
Craig Topper [Thu, 10 Nov 2016 03:39:19 +0000 (03:39 +0000)]
[AVX-512] Add test cases to show missed opportunities for using VALIGND/Q to handle shuffles.

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

8 years ago[InstCombine] avoid infinite loop from shuffle-extract-insert sequence (PR30923)
Sanjay Patel [Thu, 10 Nov 2016 00:15:14 +0000 (00:15 +0000)]
[InstCombine] avoid infinite loop from shuffle-extract-insert sequence (PR30923)

Removing the limitation in visitInsertElementInst() causes several regressions
because we're not prepared to fold sequences of shuffles or inserts and extracts
separated by shuffles. Fixing that appears to be a difficult mission because we
are purposely trying to avoid creating shuffles with arbitrary shuffle masks
because some targets may choke on those.

https://llvm.org/bugs/show_bug.cgi?id=30923

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

8 years agoRe-apply r286384, "X86: Introduce the "relocImm" ComplexPattern, which represents...
Peter Collingbourne [Wed, 9 Nov 2016 23:53:43 +0000 (23:53 +0000)]
Re-apply r286384, "X86: Introduce the "relocImm" ComplexPattern, which represents a relocatable immediate.", with a fix for 32-bit x86.

Teach X86InstrInfo::analyzeCompare() not to crash on CMP and SUB instructions
that take a global address operand.

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

8 years ago[AVR] Add a selection of CodeGen tests
Dylan McKay [Wed, 9 Nov 2016 23:46:52 +0000 (23:46 +0000)]
[AVR] Add a selection of CodeGen tests

Summary: This adds all of the CodeGen tests which currently pass.

Reviewers: arsenm, kparzysz

Subscribers: japaric, wdng

Differential Revision: https://reviews.llvm.org/D26388

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

8 years ago[AVR] Add all of the machine code test suite
Dylan McKay [Wed, 9 Nov 2016 23:46:25 +0000 (23:46 +0000)]
[AVR] Add all of the machine code test suite

Summary: This adds all of the AVR machine code tests.

Reviewers: arsenm, kparzysz

Subscribers: wdng, japaric

Differential Revision: https://reviews.llvm.org/D26387

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

8 years agoAdd isHotBB helper function to ProfileSummaryInfo
Dehao Chen [Wed, 9 Nov 2016 23:36:02 +0000 (23:36 +0000)]
Add isHotBB helper function to ProfileSummaryInfo

Summary: This will unify all BB hotness checks.

Reviewers: eraman, davidxl

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D26353

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

8 years agoPreserve assumption cache in loop-rotate.
Eli Friedman [Wed, 9 Nov 2016 23:05:01 +0000 (23:05 +0000)]
Preserve assumption cache in loop-rotate.

No testcase included because I can't figure out how to reduce it.
(It's easy to write a testcase where rotation clones an assume,
but that doesn't actually seem to trigger the crash in opt on
its own; maybe an issue with the laziness?)

Differential Revision: https://reviews.llvm.org/D26434

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

8 years agoGlobalISel: fix typo. NFC
Tim Northover [Wed, 9 Nov 2016 22:40:02 +0000 (22:40 +0000)]
GlobalISel: fix typo. NFC

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

8 years agoGlobalISel: translate invoke and landingpad instructions
Tim Northover [Wed, 9 Nov 2016 22:39:54 +0000 (22:39 +0000)]
GlobalISel: translate invoke and landingpad instructions

Pretty bare-bones support for exception handling (no weird MSVC stuff, no SjLj
etc), but it should get things going.

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

8 years agoUpdate vectorization debug info unittest.
Dehao Chen [Wed, 9 Nov 2016 22:25:19 +0000 (22:25 +0000)]
Update vectorization debug info unittest.

Summary:
The change will test the change in r286159.
The idea behind the change: Make the dbg location different between loop header and preheader/exit. Originally, dbg location 21 exists in 3 BBs: preheader, header, critical edge (exit). Update the debug location of inside the loop header from !21 to !22 so that it will reflect the correct location.

Reviewers: probinson

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D26428

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

8 years ago[InstCombine] regenerate checks; NFC
Sanjay Patel [Wed, 9 Nov 2016 22:21:58 +0000 (22:21 +0000)]
[InstCombine] regenerate checks; NFC

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

8 years ago[InstCombine] regenerate checks; NFC
Sanjay Patel [Wed, 9 Nov 2016 21:41:34 +0000 (21:41 +0000)]
[InstCombine] regenerate checks; NFC

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

8 years ago[tools] Unbreak the GCC build (workaround a GCC bug).
Davide Italiano [Wed, 9 Nov 2016 21:30:33 +0000 (21:30 +0000)]
[tools] Unbreak the GCC build (workaround a GCC bug).

../tools/llvm-extract/llvm-extract.cpp: In function â€˜int main(int, char**)’:
warning: ISO C++ forbids zero-size array â€˜argv’ [-Wpedantic]

GCC reference bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61259

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

8 years agoMake BitcodeReader::parseIdentificationBlock() robust to EOF
Mehdi Amini [Wed, 9 Nov 2016 21:26:49 +0000 (21:26 +0000)]
Make BitcodeReader::parseIdentificationBlock() robust to EOF

This method is particular: it iterates at the top-level and does
not have an enclosing block.

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

8 years agoMinor unroll pass refacoring.
Evgeny Stupachenko [Wed, 9 Nov 2016 19:56:39 +0000 (19:56 +0000)]
Minor unroll pass refacoring.

Summary:
Unrolled Loop Size calculations moved to a function.
Constant representing number of optimized instructions
 when "back edge" becomes "fall through" replaced with
 variable.
Some comments added.

Reviewers: mzolotukhin

Differential Revision: http://reviews.llvm.org/D21719

From: Evgeny Stupachenko <evstupac@gmail.com>

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

8 years ago[Verifier] clang-format a section; NFC
Sanjoy Das [Wed, 9 Nov 2016 19:36:39 +0000 (19:36 +0000)]
[Verifier] clang-format a section; NFC

Suggested in D26438 since I'm touching related code.

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

8 years ago[SCEV] Refactor out a useful pattern; NFC
Sanjoy Das [Wed, 9 Nov 2016 18:22:43 +0000 (18:22 +0000)]
[SCEV] Refactor out a useful pattern; NFC

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

8 years agoRevert r286384, "X86: Introduce the "relocImm" ComplexPattern, which represents a...
Peter Collingbourne [Wed, 9 Nov 2016 18:17:50 +0000 (18:17 +0000)]
Revert r286384, "X86: Introduce the "relocImm" ComplexPattern, which represents a relocatable immediate."

Suspected to be the cause of a sanitizer-windows bot failure:
Assertion failed: isImm() && "Wrong MachineOperand accessor", file C:\b\slave\sanitizer-windows\llvm\include\llvm/CodeGen/MachineOperand.h, line 420

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

8 years agoX86: Introduce the "relocImm" ComplexPattern, which represents a relocatable immediate.
Peter Collingbourne [Wed, 9 Nov 2016 17:51:58 +0000 (17:51 +0000)]
X86: Introduce the "relocImm" ComplexPattern, which represents a relocatable immediate.

A relocatable immediate is either an immediate operand or an operand that
can be relocated by the linker to an immediate, such as a regular symbol
in non-PIC code.

Start using relocImm for 32-bit and 64-bit MOV instructions, and for operands
of type "imm32_su". Remove a number of now-redundant patterns.

Differential Revision: https://reviews.llvm.org/D25812

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

8 years ago[Hexagon] Silence "sometimes uninitialized" warning in HexagonCopyToCombine
Krzysztof Parzyszek [Wed, 9 Nov 2016 17:50:46 +0000 (17:50 +0000)]
[Hexagon] Silence "sometimes uninitialized" warning in HexagonCopyToCombine

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

8 years agoBitcode: Change the materializer interface to return llvm::Error.
Peter Collingbourne [Wed, 9 Nov 2016 17:49:19 +0000 (17:49 +0000)]
Bitcode: Change the materializer interface to return llvm::Error.

Differential Revision: https://reviews.llvm.org/D26439

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

8 years ago[Hexagon] Separate Hexagon subreg indices for different register classes
Krzysztof Parzyszek [Wed, 9 Nov 2016 16:19:08 +0000 (16:19 +0000)]
[Hexagon] Separate Hexagon subreg indices for different register classes

For pairs of 32-bit registers: isub_lo, isub_hi.
For pairs of vector registers: vsub_lo, vsub_hi.

Add generic subreg indices: ps_sub_lo, ps_sub_hi, and a function
  HexagonRegisterInfo::getHexagonSubRegIndex(RegClass, GenericSubreg)
that returns the appropriate subreg index for RegClass.

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

8 years ago[Hexagon] Eliminate Insert4 pseudo-instruction, use combines instead
Krzysztof Parzyszek [Wed, 9 Nov 2016 14:16:29 +0000 (14:16 +0000)]
[Hexagon] Eliminate Insert4 pseudo-instruction, use combines instead

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

8 years ago[SystemZ] A few fixes in scheduler files.
Jonas Paulsson [Wed, 9 Nov 2016 12:47:57 +0000 (12:47 +0000)]
[SystemZ] A few fixes in scheduler files.

Review: U Weigand

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

8 years agoRemove TimeValue usage from Scalar/SROA.cpp. NFC.
Pavel Labath [Wed, 9 Nov 2016 12:07:12 +0000 (12:07 +0000)]
Remove TimeValue usage from Scalar/SROA.cpp. NFC.

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

8 years agoZero-initialize chrono duration objects
Pavel Labath [Wed, 9 Nov 2016 11:43:57 +0000 (11:43 +0000)]
Zero-initialize chrono duration objects

The default duration constructor does not zero-initialize the object, we need to
do that manually.

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

8 years ago[dsymutil] Replace TimeValue with TimePoint
Pavel Labath [Wed, 9 Nov 2016 11:43:52 +0000 (11:43 +0000)]
[dsymutil] Replace TimeValue with TimePoint

Summary:
All changes are pretty straight-forward. I chose to use TimePoints with
second precision, as that is all that seems to be required here.

Reviewers: friss, zturner

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D25908

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

8 years ago[mips] Add non-const getter for the Elf_Mips_Options class. NFC
Simon Atanasyan [Wed, 9 Nov 2016 10:14:55 +0000 (10:14 +0000)]
[mips] Add non-const getter for the Elf_Mips_Options class. NFC

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

8 years ago[MachineScheduler] Comments fixing.
Jonas Paulsson [Wed, 9 Nov 2016 09:59:27 +0000 (09:59 +0000)]
[MachineScheduler] Comments fixing.

The name/comment of the third argument to the ScheduleDAGMI constructor
is RemoveKillFlags and not IsPostRA. Only the comments are changed.

Review: A Trick

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

8 years ago[ARM] Loop Strength Reduction crashes when targeting ARM or Thumb.
Alexandros Lamprineas [Wed, 9 Nov 2016 08:53:07 +0000 (08:53 +0000)]
[ARM] Loop Strength Reduction crashes when targeting ARM or Thumb.

Scalar Evolution asserts when not all the operands of an Add Recurrence
Expression are loop invariants. Loop Strength Reduction should only
create affine Add Recurrences, so that both the start and the step of
the expression are loop invariants.

Differential Revision: https://reviews.llvm.org/D26185

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

8 years ago[AVX-512] Add lowering to cvttpd2udq/cvttps2udq for fptoui v2f64/2f32 to 2i32
Craig Topper [Wed, 9 Nov 2016 07:48:51 +0000 (07:48 +0000)]
[AVX-512] Add lowering to cvttpd2udq/cvttps2udq for fptoui v2f64/2f32 to 2i32

This patch adds support for fptoui to 2i32 from both 2f64 and 2f32, building on Simon's change for the signed version in r284459 and using AVX-512 instructions.

If we don't have VLX support we need to use a 512-bit operation for v2f64->v2i32 and extract the result.

It also recognises that cvttpd2udq zeroes the upper 64-bits of the xmm result.

Differential Revision: https://reviews.llvm.org/D26331

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

8 years ago[X86] Lower AVX512 and SSE intrinsics for CVTTPD2DQ to X86ISD::CVTTPD2DQ.
Craig Topper [Wed, 9 Nov 2016 07:31:32 +0000 (07:31 +0000)]
[X86] Lower AVX512 and SSE intrinsics for CVTTPD2DQ to X86ISD::CVTTPD2DQ.

Summary: This allows the SSE intrinsic to use the EVEX instruction when available. It also fixes EVEX to not use a weird (v4i32 (fp_to_sint v2f64)) node and it merges some isel patterns. This also fixes some cases that weren't combining vzmovl with cvttpd2dq to remove extra moves.

Reviewers: delena, zvi, RKSimon

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D26330

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

8 years ago[AVX-512] Add more varied alignments to tests for storing the lower 128-bits of a...
Craig Topper [Wed, 9 Nov 2016 05:38:47 +0000 (05:38 +0000)]
[AVX-512] Add more varied alignments to tests for storing the lower 128-bits of a 256 or 512-bit subvector extract.

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

8 years ago[AVX-512] Use alignedstore256 in patterns that look for stores of the lower 256-bits...
Craig Topper [Wed, 9 Nov 2016 05:31:57 +0000 (05:31 +0000)]
[AVX-512] Use alignedstore256 in patterns that look for stores of the lower 256-bits of a 512-bit vector to use a 256-bit aligned store.

Previously we were only checking for 16 byte alignment instead of 32 byte alignment. Fixes PR30947.

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

8 years ago[AVX-512] Add test cases to demonstrate PR30947. We accidentally use 32 byte aligned...
Craig Topper [Wed, 9 Nov 2016 05:31:53 +0000 (05:31 +0000)]
[AVX-512] Add test cases to demonstrate PR30947. We accidentally use 32 byte aligned store instructions when the original store was only 16 byte aligned if the store is from the lower bits of a subvector extract.

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

8 years ago[AVX-512] Make VBMI instruction set enabling imply that the BWI instruction set is...
Craig Topper [Wed, 9 Nov 2016 04:50:48 +0000 (04:50 +0000)]
[AVX-512] Make VBMI instruction set enabling imply that the BWI instruction set is also enabled.

Summary:
This is needed to make the v64i8 and v32i16 types legal for the 512-bit VBMI instructions. Fixes PR30912.

Reviewers: delena, zvi

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D26322

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

8 years ago[XRay][docs] Fix llvm snippets to be well-formed
Dean Michael Berris [Wed, 9 Nov 2016 02:12:13 +0000 (02:12 +0000)]
[XRay][docs] Fix llvm snippets to be well-formed

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

8 years agoRevert "[ThinLTO] Prevent exporting of locals used/defined in module level asm"
Mehdi Amini [Wed, 9 Nov 2016 01:45:13 +0000 (01:45 +0000)]
Revert "[ThinLTO] Prevent exporting of locals used/defined in module level asm"

This reverts commit r286297.
Introduces a dependency from libAnalysis to libObject, which I missed
during the review.

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

8 years ago[doc] Remove explicit CMake version requirement for MSVC
Mehdi Amini [Wed, 9 Nov 2016 01:44:42 +0000 (01:44 +0000)]
[doc] Remove explicit CMake version requirement for MSVC

The global minimum one is way past this version.

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

8 years agoBitcode: Remove the remnants of the BitcodeDiagnosticInfo class.
Peter Collingbourne [Wed, 9 Nov 2016 01:09:11 +0000 (01:09 +0000)]
Bitcode: Remove the remnants of the BitcodeDiagnosticInfo class.

The BitcodeReader no longer produces BitcodeDiagnosticInfo diagnostics.
The only remaining reference was in the gold plugin; the code there has been
dead since we stopped producing InvalidBitcodeSignature error codes in r225562.
While at it remove the InvalidBitcodeSignature error code.

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

8 years agoEnable Loop Sink pass for functions that has profile.
Dehao Chen [Wed, 9 Nov 2016 00:58:19 +0000 (00:58 +0000)]
Enable Loop Sink pass for functions that has profile.

Summary: For functions with profile data, we are confident that loop sink will be optimal in sinking code.

Reviewers: davidxl, hfinkel

Subscribers: mehdi_amini, mzolotukhin, llvm-commits

Differential Revision: https://reviews.llvm.org/D26155

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

8 years agoBitcode: Change the BitcodeReader to use llvm::Error internally.
Peter Collingbourne [Wed, 9 Nov 2016 00:51:04 +0000 (00:51 +0000)]
Bitcode: Change the BitcodeReader to use llvm::Error internally.

Differential Revision: https://reviews.llvm.org/D26430

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

8 years ago[XRay][Docs] Add documentation for XRay in LLVM
Dean Michael Berris [Wed, 9 Nov 2016 00:24:58 +0000 (00:24 +0000)]
[XRay][Docs] Add documentation for XRay in LLVM

Summary:
This is the initial version of the documentation for how to use XRay as
it stands in LLVM, Clang, and compiler-rt. We leave some room for later
expansion mentioining what is work in progress and what could be
expected moving forward.

We also give a high level overview of future work that's both ongoing
and planned.

Reviewers: echristo, dblaikie, chandlerc

Subscribers: mehdi_amini, llvm-commits

Differential Revision: https://reviews.llvm.org/D26386

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

8 years ago[ValueTracking] recognize obfuscated variants of umin/umax
Sanjay Patel [Wed, 9 Nov 2016 00:24:44 +0000 (00:24 +0000)]
[ValueTracking] recognize obfuscated variants of umin/umax

The smallest tests that expose this are codegen tests (because SelectionDAGBuilder::visitSelect() uses matchSelectPattern
to create UMAX/UMIN nodes), but it's also possible to see the effects in IR alone with folds of min/max pairs.

If these were written as unsigned compares in IR, InstCombine canonicalizes the unsigned compares to signed compares.
Ie, running the optimizer pessimizes the codegen for this case without this patch:

define <4 x i32> @umax_vec(<4 x i32> %x) {
  %cmp = icmp ugt <4 x i32> %x, <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
  %sel = select <4 x i1> %cmp, <4 x i32> %x, <4 x i32> <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
  ret <4 x i32> %sel
}

$ ./opt umax.ll -S | ./llc -o - -mattr=avx

vpmaxud LCPI0_0(%rip), %xmm0, %xmm0

$ ./opt -instcombine umax.ll -S | ./llc -o - -mattr=avx

vpxor %xmm1, %xmm1, %xmm1
vpcmpgtd  %xmm0, %xmm1, %xmm1
vmovaps LCPI0_0(%rip), %xmm2    ## xmm2 = [2147483647,2147483647,2147483647,2147483647]
vblendvps %xmm1, %xmm0, %xmm2, %xmm0

Differential Revision: https://reviews.llvm.org/D26096

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

8 years ago[cmake] Fix handling compiler-rt in LLVM_ENABLE_PROJECTS by turning any "-" into "_"
Mehdi Amini [Wed, 9 Nov 2016 00:23:20 +0000 (00:23 +0000)]
[cmake] Fix handling compiler-rt in LLVM_ENABLE_PROJECTS by turning any "-" into "_"

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

8 years agoAdded the ability to dump hex bytes easily into a raw_ostream.
Greg Clayton [Wed, 9 Nov 2016 00:15:54 +0000 (00:15 +0000)]
Added the ability to dump hex bytes easily into a raw_ostream.

Unit tests were added to verify this functionality keeps working correctly.

Example output for raw hex bytes:
llvm::ArrayRef<uint8_t> Bytes = ...;
llvm::outs() << format_hex_bytes(Bytes);
554889e5 4881ec70 04000048 8d051002
00004c8d 05fd0100 004c8b0d d0020000

Example output for raw hex bytes with offsets:
llvm::outs() << format_hex_bytes(Bytes, 0x100000d10);
0x0000000100000d10: 554889e5 4881ec70 04000048 8d051002
0x0000000100000d20: 00004c8d 05fd0100 004c8b0d d0020000

Example output for raw hex bytes with ASCII with offsets:
llvm::outs() << format_hex_bytes_with_ascii(Bytes, 0x100000d10);
0x0000000100000d10: 554889e5 4881ec70 04000048 8d051002 |UH.?H.?p...H....|
0x0000000100000d20: 00004c8d 05fd0100 004c8b0d d0020000 |..L..?...L..?...|

The default groups bytes into 4 byte groups, but this can be changed to 1 byte:
llvm::outs() << format_hex_bytes(Bytes, 0x100000d10, 16 /*NumPerLine*/, 1 /*ByteGroupSize*/);
0x0000000100000d10: 55 48 89 e5 48 81 ec 70 04 00 00 48 8d 05 10 02
0x0000000100000d20: 00 00 4c 8d 05 fd 01 00 00 4c 8b 0d d0 02 00 00

llvm::outs() << format_hex_bytes(Bytes, 0x100000d10, 16 /*NumPerLine*/, 2 /*ByteGroupSize*/);
0x0000000100000d10: 5548 89e5 4881 ec70 0400 0048 8d05 1002
0x0000000100000d20: 0000 4c8d 05fd 0100 004c 8b0d d002 0000

llvm::outs() << format_hex_bytes(Bytes, 0x100000d10, 8 /*NumPerLine*/, 1 /*ByteGroupSize*/);
0x0000000100000d10: 55 48 89 e5 48 81 ec 70
0x0000000100000d18: 04 00 00 48 8d 05 10 02
0x0000000100000d20: 00 00 4c 8d 05 fd 01 00
0x0000000100000d28: 00 4c 8b 0d d0 02 00 00

https://reviews.llvm.org/D26405

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

8 years ago[InstCombine] fix profitability equation for max-of-nots transform
Sanjay Patel [Wed, 9 Nov 2016 00:13:11 +0000 (00:13 +0000)]
[InstCombine] fix profitability equation for max-of-nots transform

As the test change shows, we can increase the critical path by adding
a 'not' instruction, so make sure that we're actually removing an
instruction if we do this transform.

This transform could also cause us to miss folds of min/max pairs.

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

8 years ago[InstCombine] reduce indentation; NFC
Sanjay Patel [Tue, 8 Nov 2016 23:49:15 +0000 (23:49 +0000)]
[InstCombine] reduce indentation; NFC

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

8 years agoFix some size_t / uint32_t ambiguity errors.
Zachary Turner [Tue, 8 Nov 2016 22:30:11 +0000 (22:30 +0000)]
Fix some size_t / uint32_t ambiguity errors.

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