Changes from Git (git http://labmaster3.local/git/llvm-project.git)


  1. [CostModel] Unify Intrinsic Costs. (details)
  2. [PowerPC] add more high latency opcodes for machine combiner pass (details)
  3. [SVE] Remove IITDescriptor::ScalableVecArgument (details)
  4. [clang][index] Fix a crash for accessing a null field decl. (details)
  5. Fix a layering violation by not depending from Transforms/Utils on Transforms/Scalar. (details)
  6. [Statepoint] Constant fold FP deopt args. (details)
Commit de71def3f59dc9f12f67141b5040d8e15c84d08a by sam.parker
[CostModel] Unify Intrinsic Costs.

With the two getIntrinsicInstrCosts folded into one, now fold in the
scalar/code-size orientated getIntrinsicCost. This involved sinking
cost of the TTIImpl into the base implementation, as it performs no
target checks. The opcodes remaining were memcpy, cttz and ctlz which
now have special handling in the BasicTTI implementation.
getInstructionThroughput can now directly return the result of

This had required a change in the AMDGPU backend for fabs and its
always 'free'. I've also changed the X86 backend to return '1' for
any intrinsic when the CostKind isn't RecipThroughput.

Though this intended to be a non-functional change, there are many
paths being combined here so I would be very surprised if this didn't
have an effect.

Differential Revision:
The file was modifiedllvm/include/llvm/Analysis/TargetTransformInfoImpl.h
The file was modifiedllvm/include/llvm/CodeGen/BasicTTIImpl.h
The file was modifiedllvm/lib/Analysis/TargetTransformInfo.cpp
The file was modifiedllvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
The file was modifiedllvm/include/llvm/Analysis/TargetTransformInfo.h
The file was modifiedllvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
The file was modifiedllvm/lib/Target/X86/X86TargetTransformInfo.cpp
Commit 8086cdd1b014b2f35f0d3e3841c029c220712711 by czhengsz
[PowerPC] add more high latency opcodes for machine combiner pass

Reviewed By: steven.zhang

Differential Revision:
The file was modifiedllvm/test/CodeGen/PowerPC/machine-combiner.ll
The file was modifiedllvm/lib/Target/PowerPC/PPCInstrInfo.cpp
Commit 1c3d9c2f3629c758db859b55e839dc97734fa171 by david.sherwood
[SVE] Remove IITDescriptor::ScalableVecArgument

I have refactored the code so that we no longer need the
ScalableVecArgument descriptor - the scalable property of vectors is
now encoded using the ElementCount class in IITDescriptor. This means
that when matching intrinsics we know precisely how to match the
arguments and return values.

Differential Revision:
The file was modifiedllvm/include/llvm/IR/Intrinsics.h
The file was modifiedllvm/include/llvm/Support/TypeSize.h
The file was modifiedllvm/lib/IR/Function.cpp
Commit c2c36c4f4b69ade6d8610b1dc98ff9f02c94320d by hokein.wu
[clang][index] Fix a crash for accessing a null field decl.

getField() may return a nullptr, we already did that in
BodyIndexer::VisitDesignatedInitExpr, but missed one place.
The file was addedclang/test/Index/index-designated-init-recovery.cpp
The file was modifiedclang/lib/Index/IndexBody.cpp
Commit 5b0d1f04bf8de8089a7b0ce243a25c16c6b3917f by benny.kra
Fix a layering violation by not depending from Transforms/Utils on Transforms/Scalar.

The file was modifiedllvm/include/llvm/Transforms/Utils/CanonicalizeFreezeInLoops.h
The file was modifiedllvm/lib/Transforms/Utils/CanonicalizeFreezeInLoops.cpp
Commit dedcefe09d18f1e9d60336541fb6ad03dae551ba by dantrushin
[Statepoint] Constant fold FP deopt args.

We do not have any special handling for constant FP deopt arguments.
They are just spilled to stack or generated in register by MOVS
instruction. This is inefficient and, when we have too many such
constant arguments, may result in register allocation failure.
Instead, we can bitcast such constant FP operands to appropriately
sized integer and record as constant into statepoint and later, into

Reviewed By: skatkov
Differential Revision:
The file was modifiedllvm/test/CodeGen/X86/statepoint-regs.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp