1. [PowerPC] Fix crash in peephole optimization (details)
  2. [InstCombine] Revert rL341831: relax one-use check in (details)
  3. [llvm-exegesis] Fix 44b9942898c7. (details)
  4. [clangd] Try harder to find a plausible `clang` as argv0, particularly (details)
  5. Autogenerate test/Analysis/ValueTracking/non-negative-phi-bits.ll test (details)
  6. [Attributor] Copy or port test cases related to Attributor to` (details)
  7. [PatternMatch] Add support for matching intrinsics with 5 operands. (details)
  8. Add contributing info to and (details)
  9. [ARM,MVE] Add an InstCombine rule permitting VPNOT. (details)
  10. [ARM,MVE] Rename and clean up VCTP IR intrinsics. (details)
  11. [ARM,MVE] Add intrinsics to deal with predicates. (details)
  12. Add AIX assembler support (details)
Commit 241cbf201a6f4b7658697e3c76fc6e741d049a01 by
[PowerPC] Fix crash in peephole optimization
When converting reg+reg shifts to reg+imm rotates, we neglect to
consider the CodeGenOnly versions of the 32-bit shift mnemonics. This
means we produce a rotate with missing operands which causes a crash.
Committing this fix without review since it is non-controversial that
the list of mnemonics to consider should include the 64-bit aliases for
the exact mnemonics.
Fixes PR44183.
The file was addedllvm/test/CodeGen/PowerPC/pr44183.ll
The file was modifiedllvm/lib/Target/PowerPC/PPCInstrInfo.cpp
Commit 0f22e783a038b6983f0fe161eef6cf2add3a4156 by lebedev.ri
[InstCombine] Revert rL341831: relax one-use check in
foldICmpAddConstant() (PR44100)
rL341831 moved one-use check higher up, restricting a few folds that
produced a single instruction from two instructions to the case where
the inner instruction would go away.
Original commit message:
> InstCombine: move hasOneUse check to the top of foldICmpAddConstant
> There were two combines not covered by the check before now,
> neither of which actually differed from normal in the benefit
> The most recent seems to be because it was just added at the top of
> function (naturally). The older is from way back in 2008 (r46687)
> when we just didn't put those checks in so routinely, and has been
> diligently maintained since.
From the commit message alone, there doesn't seem to be a deeper
motivation, deeper problem that was trying to solve, other than 'fixing
the wrong one-use check'.
As i have briefly discusses in IRC with Tim, the original motivation can
no longer be recovered, too much time has passed.
However i believe that the original fold was doing the right thing, we
should be performing such a transformation even if the inner `add` will
not go away - that will still unchain the comparison from `add`, it will
no longer need to wait for `add` to compute.
Doing so doesn't seem to break any particular idioms, as least as far as
i can see.
The file was modifiedllvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
The file was modifiedllvm/test/Transforms/LoopVectorize/if-conversion-nest.ll
The file was modifiedllvm/test/Transforms/InstCombine/icmp-add.ll
The file was modifiedllvm/test/Transforms/LoopVectorize/runtime-check.ll
Commit 3540b80fe445ec467cba5e4cab2a4865bb945639 by courbet
[llvm-exegesis] Fix 44b9942898c7.
Summary: Add missing stack release instructions in
Reviewers: pengfei, gchatelet
Subscribers: tschuett, llvm-commits
Tags: #llvm
Differential Revision:
The file was modifiedllvm/tools/llvm-exegesis/lib/X86/Target.cpp
The file was addedllvm/test/tools/llvm-exegesis/X86/latency-SQRTSSr.s
Commit 88bccded8fa169481fa367debf5ec615640635a1 by sam.mccall
[clangd] Try harder to find a plausible `clang` as argv0, particularly
on Mac.
Summary: Fixes Fixes
No tests - this is hard to test, and basically impossible to verify what
we want
(this produces compile commands that work on a real mac with recent
(Need someone on mac to verify it actually fixes these!)
Reviewers: kbobyrev, ilya-biryukov
Subscribers: MaskRay, jkorous, arphaman, kadircet, usaxena95,
Tags: #clang
Differential Revision:
The file was modifiedclang-tools-extra/clangd/GlobalCompilationDatabase.cpp
The file was modifiedclang-tools-extra/clangd/unittests/GlobalCompilationDatabaseTests.cpp
The file was modifiedclang-tools-extra/clangd/unittests/BackgroundIndexTests.cpp
Commit ec7436f299f8b2c2e9ad0e2ca66f3cdeb830cf2a by lebedev.ri
Autogenerate test/Analysis/ValueTracking/non-negative-phi-bits.ll test
Forgot to stage this change into
0f22e783a038b6983f0fe161eef6cf2add3a4156 commit.
The file was modifiedllvm/test/Analysis/ValueTracking/non-negative-phi-bits.ll
Commit 96552036e307f7b0dd6477583c3fdb7de17e8aac by uenoku.tokotoko
[Attributor] Copy or port test cases related to Attributor to`
Attributor` test folder
Summary: This patch moves the test cases related to Attributor to
`Transforms/Attributor` folder. We have used `Transforms/FunctionAttrs`
as the primary folder for Attributor test but we need to change testing
way now.
For the test cases which I think functionattrs doesn't infer anything
something like (willreturn, nosync, value-simplify, h2s ..etc), I moved
them with the command `git mv`.
For the test cases in which functoinattrs and attributor are tested, I
copied the test to the folder and remove the check only used by
Reviewers: jdoerfert, sstefan1
Reviewed By: jdoerfert
Subscribers: jfb, llvm-commits
Tags: #llvm
Differential Revision:
The file was removedllvm/test/Transforms/FunctionAttrs/arg_nocapture.ll
The file was removedllvm/test/Transforms/FunctionAttrs/liveness.ll
The file was addedllvm/test/Transforms/Attributor/noreturn_async.ll
The file was addedllvm/test/Transforms/Attributor/misc.ll
The file was modifiedllvm/test/Transforms/InferFunctionAttrs/dereferenceable.ll
The file was removedllvm/test/Transforms/FunctionAttrs/noalias_returned.ll
The file was addedllvm/test/Transforms/Attributor/nocapture-1.ll
The file was addedllvm/test/Transforms/Attributor/readattrs.ll
The file was addedllvm/test/Transforms/Attributor/internal-noalias.ll
The file was removedllvm/test/Transforms/FunctionAttrs/noreturn_async.ll
The file was addedllvm/test/Transforms/Attributor/dereferenceable-2.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/nocapture.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/readattrs.ll
The file was addedllvm/test/Transforms/Attributor/value-simplify.ll
The file was addedllvm/test/Transforms/Attributor/nosync.ll
The file was addedllvm/test/Transforms/Attributor/nocapture-2.ll
The file was addedllvm/test/Transforms/Attributor/noreturn_sync.ll
The file was addedllvm/test/Transforms/Attributor/nonnull.ll
The file was addedllvm/test/Transforms/Attributor/noreturn.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/nounwind.ll
The file was addedllvm/test/Transforms/Attributor/nofree.ll
The file was removedllvm/test/Transforms/FunctionAttrs/misc.ll
The file was removedllvm/test/Transforms/FunctionAttrs/noreturn_sync.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/arg_returned.ll
The file was addedllvm/test/Transforms/Attributor/new_attributes.ll
The file was removedllvm/test/Transforms/FunctionAttrs/fn_noreturn.ll
The file was removedllvm/test/Transforms/FunctionAttrs/align.ll
The file was addedllvm/test/Transforms/Attributor/norecurse.ll
The file was removedllvm/test/Transforms/FunctionAttrs/new_attributes.ll
The file was removedllvm/test/Transforms/FunctionAttrs/dereferenceable.ll
The file was removedllvm/test/Transforms/FunctionAttrs/internal-noalias.ll
The file was addedllvm/test/Transforms/Attributor/read_write_returned_arguments_scc.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/norecurse.ll
The file was addedllvm/test/Transforms/Attributor/noalias.ll
The file was addedllvm/test/Transforms/Attributor/nounwind.ll
The file was removedllvm/test/Transforms/FunctionAttrs/willreturn.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/nonnull.ll
The file was removedllvm/test/Transforms/FunctionAttrs/nosync.ll
The file was addedllvm/test/Transforms/Attributor/willreturn.ll
The file was removedllvm/test/Transforms/FunctionAttrs/read_write_returned_arguments_scc.ll
The file was modifiedllvm/test/Transforms/FunctionAttrs/nofree-attributor.ll
The file was addedllvm/test/Transforms/Attributor/callbacks.ll
The file was addedllvm/test/Transforms/Attributor/align.ll
The file was addedllvm/test/Transforms/Attributor/returned.ll
The file was removedllvm/test/Transforms/FunctionAttrs/value-simplify.ll
The file was addedllvm/test/Transforms/Attributor/liveness.ll
The file was addedllvm/test/Transforms/Attributor/dereferenceable-1.ll
The file was removedllvm/test/Transforms/FunctionAttrs/callbacks.ll
The file was removedllvm/test/Transforms/FunctionAttrs/heap_to_stack.ll
The file was addedllvm/test/Transforms/Attributor/heap_to_stack.ll
Commit aca7aab90d79df08ecadde798e2172f4995ab601 by flo
[PatternMatch] Add support for matching intrinsics with 5 operands.
Summary: Also adds a test to the pattern matching unit tests.
Reviewers: spatel, craig.topper, RKSimon, majnemer, lebedev.ri
Reviewed By: spatel
Subscribers: merge_guards_bot, llvm-commits
Tags: #llvm
Differential Revision:
The file was modifiedllvm/unittests/IR/PatternMatch.cpp
The file was modifiedllvm/include/llvm/IR/PatternMatch.h
Commit effcdc3a82f2a32829170e7f7a2ff3d7853b612d by flo
Add contributing info to and
As discussed on llvm-dev [1], this patch adds a brief to
the top-level of the repo, with a pointer to Contributing.html. This
should make it easier to discover the contributing information and also
be highlighted in the Github UI.
It also updates to link to Contributing.html.
Reviewers: tonic, rnk, jhenderson, meikeb
Reviewed By: rnk, jhenderson, meikeb
Differential Revision:
The file was
The file was
Commit 01aefae4a173c32a0235feb9600beffbcd0308b4 by simon.tatham
[ARM,MVE] Add an InstCombine rule permitting VPNOT.
Summary: If a user writing C code using the ACLE MVE intrinsics
generates a predicate and then complements it, then the resulting IR
will use the
`pred_v2i` IR intrinsic to turn some `<n x i1>` vector into a 16-bit
integer; complement that integer; and convert back. This will generate
machine code that moves the predicate out of the `P0` register,
complements it in an integer GPR, and moves it back in again.
This InstCombine rule replaces `i2v(~v2i(x))` with a direct complement
of the original predicate vector, which we can already instruction-
select as the VPNOT instruction which complements P0 in place.
Reviewers: ostannard, MarkMurrayARM, dmgreen
Reviewed By: dmgreen
Subscribers: kristof.beyls, hiraditya, llvm-commits
Tags: #llvm
Differential Revision:
The file was modifiedllvm/test/Transforms/InstCombine/ARM/mve-v2i2v.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vpt-from-intrinsics.ll
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
Commit 48cce077efcc3c3637aac0143b3c2c9d1cf7ab8b by simon.tatham
[ARM,MVE] Rename and clean up VCTP IR intrinsics.
Summary: D65884 added a set of Arm IR intrinsics for the MVE VCTP
instruction, to use in tail predication. But the 64-bit one doesn't work
properly: its predicate type is `<2 x i1>` / `v2i1`, which isn't a legal
MVE type (due to not having a full set of instructions that manipulate
it usefully). The test of `vctp64` in `basic-tail-pred.ll` goes through
`opt` fine, as the test expects, but if you then feed it to `llc` it
causes a type legality failure at isel time.
The usual workaround we've been using in the rest of the MVE intrinsics
family is to bodge `v2i1` into `v4i1`. So I've adjusted the
`vctp64` IR intrinsic to do that, and completely removed the code (and
test) that uses that intrinsic for 64-bit tail predication. That will
allow me to add isel rules (upcoming in D70485) that actually generate
the VCTP64 instruction.
Also renamed all four of these IR intrinsics so that they have `mve` in
the name, since its absence was confusing.
Reviewers: ostannard, MarkMurrayARM, dmgreen
Reviewed By: MarkMurrayARM
Subscribers: samparker, kristof.beyls, hiraditya, llvm-commits
Tags: #llvm
Differential Revision:
The file was modifiedllvm/lib/Target/ARM/MVETailPredication.cpp
The file was modifiedllvm/lib/Target/ARM/
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/nested.ll
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vctp.ll
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/vector-reduce-mve-tail.ll
The file was modifiedllvm/include/llvm/IR/
The file was modifiedllvm/test/CodeGen/Thumb2/mve-vpt-from-intrinsics.ll
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/basic-tail-pred.ll
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/tail-reduce.ll
The file was modifiedllvm/test/CodeGen/Thumb2/LowOverheadLoops/tail-pred-widen.ll
Commit d173fb5d2854a1ce42bcc34832db5039b2c60e69 by simon.tatham
[ARM,MVE] Add intrinsics to deal with predicates.
Summary: This commit adds the `vpselq` intrinsics which take an MVE
predicate word and select lanes from two vectors; the `vctp` intrinsics
which create a tail predicate word suitable for processing the first m
elements of a vector (e.g. in the last iteration of a loop); and
`vpnot`, which simply complements a predicate word and is just syntactic
sugar for the `~` operator.
The `vctp` ACLE intrinsics are lowered to the IR intrinsics we've
already added (and which D70592 just reorganized). I've filled in the
missing isel rule for VCTP64, and added another set of rules to generate
the predicated forms.
I needed one small tweak in MveEmitter to allow the `unpromoted` type
modifier to apply to predicates as well as integers, so that `vpnot`
doesn't pointlessly convert its input integer to an `<n x i1>` before
complementing it.
Reviewers: ostannard, MarkMurrayARM, dmgreen
Reviewed By: dmgreen
Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision:
The file was addedllvm/test/CodeGen/Thumb2/mve-intrinsics/predicates.ll
The file was modifiedclang/utils/TableGen/MveEmitter.cpp
The file was addedclang/test/CodeGen/arm-mve-intrinsics/predicates.c
The file was modifiedllvm/lib/Target/ARM/
The file was modifiedclang/include/clang/Basic/
Commit 3ebfab709583cfa7635693b123e56f76a1de765b by daltenty
Add AIX assembler support
Summary: A skeleton of AIX toolchain and system linker support has been
introduced in D68340, and this is a follow on patch to it. This patch
adds support to system assembler invocation to the AIX toolchain.
Reviewers: daltenty, hubert.reinterpretcast, jasonliu, Xiangling_L, dlj
Reviewed By: daltenty, hubert.reinterpretcast
Subscribers: wuzish, nemanjai, kbarton, jfb, cfe-commits
Tags: #clang
Differential Revision:
The file was modifiedclang/lib/Driver/ToolChains/AIX.cpp
The file was addedclang/test/Driver/Inputs/aix_ppc_tree/dummy2.s
The file was addedclang/test/Driver/Inputs/aix_ppc_tree/dummy1.s
The file was modifiedclang/lib/Driver/ToolChains/AIX.h
The file was addedclang/test/Driver/aix-as.c
The file was addedclang/test/Driver/Inputs/aix_ppc_tree/dummy0.s