<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Ok, I'm not actively asking for revert, but I will note that I'd
      have preferred you just ported the pass.  I will be unsurprised to
      see an analogous pass readded in the future.  <br>
    </p>
    <p>Philip<br>
    </p>
    <div class="moz-cite-prefix">On 8/26/20 4:15 PM, Arthur Eubanks
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAPW48spXzKZoeWy6Abd_eT+OXaKd7NLG451whbBQUJDeZoJGsg@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">And IPConstantPropagation was deleted previously: <a
href="http://lists.llvm.org/pipermail/llvm-dev/2020-July/143773.html"
          moz-do-not-send="true">http://lists.llvm.org/pipermail/llvm-dev/2020-July/143773.html</a>.</div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Wed, Aug 26, 2020 at 4:14
          PM Arthur Eubanks <<a href="mailto:aeubanks@google.com"
            moz-do-not-send="true">aeubanks@google.com</a>> wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div dir="ltr">The main reason was that it wasn't ported to
            the new pass manager, which seems to indicate that not too
            many people are using it. It was responsible for a
            significant amount of check-llvm failures under the NPM
            because it wasn't ported. The only uses at least in the LLVM
            codebase were only in tests. And I'd rather delete a pass
            than port it to the NPM if nobody is using it.</div>
          <br>
          <div class="gmail_quote">
            <div dir="ltr" class="gmail_attr">On Wed, Aug 26, 2020 at
              4:05 PM Philip Reames <<a
                href="mailto:listmail@philipreames.com" target="_blank"
                moz-do-not-send="true">listmail@philipreames.com</a>>
              wrote:<br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">It's not clear to me
              what the value of this change is.  Having a pass <br>
              which exists "just" to exercise constant propagation seems
              pretty <br>
              reasonable to me.  As your test changes note, it's
              sometimes hard to <br>
              exercise constant prop logic without tripping other
              transforms.<br>
              <br>
              I realize this was reviewed, but can you back up and
              explain the <br>
              motivation for deleting this?  Was it just the fact the
              code was <br>
              "dead"?   Or was there some deeper reason?<br>
              <br>
              Philip<br>
              <br>
              On 8/26/20 3:56 PM, Arthur Eubanks via llvm-commits wrote:<br>
              > Author: Arthur Eubanks<br>
              > Date: 2020-08-26T15:51:30-07:00<br>
              > New Revision:
              486ed885339d70cd71ee55567282a43cce28d763<br>
              ><br>
              > URL: <a
href="https://github.com/llvm/llvm-project/commit/486ed885339d70cd71ee55567282a43cce28d763"
                rel="noreferrer" target="_blank" moz-do-not-send="true">https://github.com/llvm/llvm-project/commit/486ed885339d70cd71ee55567282a43cce28d763</a><br>
              > DIFF: <a
href="https://github.com/llvm/llvm-project/commit/486ed885339d70cd71ee55567282a43cce28d763.diff"
                rel="noreferrer" target="_blank" moz-do-not-send="true">https://github.com/llvm/llvm-project/commit/486ed885339d70cd71ee55567282a43cce28d763.diff</a><br>
              ><br>
              > LOG: [ConstProp] Remove ConstantPropagation<br>
              ><br>
              > As discussed in<br>
              > <a
                href="http://lists.llvm.org/pipermail/llvm-dev/2020-July/143801.html"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://lists.llvm.org/pipermail/llvm-dev/2020-July/143801.html</a>.<br>
              ><br>
              > Currently no users outside of unit tests.<br>
              ><br>
              > Replace all instances in tests of -constprop with
              -instsimplify.<br>
              > Notable changes in tests:<br>
              > * vscale.ll - @llvm.sadd.sat.nxv16i8 is evaluated by
              instsimplify, use a fake intrinsic instead<br>
              > * InsertElement.ll - insertelement undef is removed
              by instsimplify in @insertelement_undef<br>
              > llvm/test/Transforms/ConstProp moved to
              llvm/test/Transforms/InstSimplify/ConstProp<br>
              ><br>
              > Reviewed By: lattner, nikic<br>
              ><br>
              > Differential Revision: <a
                href="https://reviews.llvm.org/D85159" rel="noreferrer"
                target="_blank" moz-do-not-send="true">https://reviews.llvm.org/D85159</a><br>
              ><br>
              > Added:<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/2002-03-11-ConstPropCrash.ll<br>
              >     
llvm/test/Transforms/InstSimplify/ConstProp/2002-05-03-DivideByZeroException.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/2002-05-03-NotOperator.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/2002-09-03-SetCC-Bools.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/2003-05-12-DivideError.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/2005-01-28-SetCCGEP.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/2006-11-30-vector-cast.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/2006-12-01-TruncBoolBug.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/2006-12-01-bool-casts.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/2007-02-05-BitCast.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/2007-02-23-sdiv.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/2008-07-07-VectorCompare.ll<br>
              >     
llvm/test/Transforms/InstSimplify/ConstProp/2009-06-20-constexpr-zero-lhs.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/2009-09-01-GEP-Crash.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cos.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cubeid.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cubema.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cubesc.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cubetc.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/fmul_legacy.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/fract.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/lit.local.cfg<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/sin.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/ARM/lit.local.cfg<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/ARM/mve-vctp.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/InsertElement.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/WebAssembly/trunc.ll<br>
              >     
llvm/test/Transforms/InstSimplify/ConstProp/WebAssembly/trunc_saturate.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/abs.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/allones.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/avx512.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/basictest.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/binop-identity-undef.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/bitcast.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/bitcount.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/bswap.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/calls-math-finite.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/calls.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/cast-vector.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/cast.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/constant-expr.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/convert-from-fp16.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/copysign.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/div-zero.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/extractelement-vscale.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/extractvalue.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/float-to-ptr-cast.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/fma.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/fneg.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/fp-undef.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/freeze.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/funnel-shift.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/gep-alias.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/gep-constanfolding-error.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/gep-zeroinit-vector.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/gep.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/insertvalue.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/loads.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/logicaltest.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/math-1.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/math-2.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/min-max.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/overflow-ops.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/phi.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/remtest.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/rint.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/round.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/saturating-add-sub.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/shift.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/smul-fix-sat.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/smul-fix.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/sse.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/timeout.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/trunc.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/trunc_vec.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/vecreduce.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/vector-undef-elts.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/vectorgep-crash.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/vscale-getelementptr.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/vscale-shufflevector.ll<br>
              >     
              llvm/test/Transforms/InstSimplify/ConstProp/vscale.ll<br>
              ><br>
              > Modified:<br>
              >      llvm/bindings/go/llvm/executionengine_test.go<br>
              >      llvm/bindings/go/llvm/transforms_scalar.go<br>
              >     
              llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli<br>
              >     
              llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c<br>
              >      llvm/docs/CommandLine.rst<br>
              >      llvm/docs/Passes.rst<br>
              >      llvm/include/llvm-c/Transforms/Scalar.h<br>
              >      llvm/include/llvm/InitializePasses.h<br>
              >      llvm/include/llvm/LinkAllPasses.h<br>
              >      llvm/include/llvm/Transforms/Scalar.h<br>
              >      llvm/lib/Transforms/Scalar/CMakeLists.txt<br>
              >      llvm/lib/Transforms/Scalar/Scalar.cpp<br>
              >     
              llvm/test/Assembler/2002-04-07-HexFloatConstants.ll<br>
              >      llvm/test/Bitcode/extractelement.ll<br>
              >     
              llvm/test/Transforms/SimplifyCFG/2005-12-03-IncorrectPHIFold.ll<br>
              >     
              llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp<br>
              >     
              llvm/utils/gn/secondary/llvm/lib/Transforms/Scalar/BUILD.gn<br>
              ><br>
              > Removed:<br>
              >      llvm/lib/Transforms/Scalar/ConstantProp.cpp<br>
              >      llvm/test/Analysis/ConstantFolding/AMDGPU/cos.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/AMDGPU/cubeid.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/AMDGPU/cubema.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/AMDGPU/cubesc.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/AMDGPU/cubetc.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/AMDGPU/fmul_legacy.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/AMDGPU/fract.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/AMDGPU/lit.local.cfg<br>
              >      llvm/test/Analysis/ConstantFolding/AMDGPU/sin.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/ARM/lit.local.cfg<br>
              >     
              llvm/test/Analysis/ConstantFolding/ARM/mve-vctp.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/WebAssembly/trunc.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/WebAssembly/trunc_saturate.ll<br>
              >      llvm/test/Analysis/ConstantFolding/abs.ll<br>
              >      llvm/test/Analysis/ConstantFolding/allones.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/binop-identity-undef.ll<br>
              >      llvm/test/Analysis/ConstantFolding/bitcount.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/cast-vector.ll<br>
              >      llvm/test/Analysis/ConstantFolding/copysign.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/extractelement-vscale.ll<br>
              >      llvm/test/Analysis/ConstantFolding/fneg.ll<br>
              >      llvm/test/Analysis/ConstantFolding/fp-undef.ll<br>
              >      llvm/test/Analysis/ConstantFolding/freeze.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/funnel-shift.ll<br>
              >      llvm/test/Analysis/ConstantFolding/gep-alias.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/gep-constanfolding-error.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/gep-zeroinit-vector.ll<br>
              >      llvm/test/Analysis/ConstantFolding/gep.ll<br>
              >      llvm/test/Analysis/ConstantFolding/math-1.ll<br>
              >      llvm/test/Analysis/ConstantFolding/math-2.ll<br>
              >      llvm/test/Analysis/ConstantFolding/min-max.ll<br>
              >      llvm/test/Analysis/ConstantFolding/rint.ll<br>
              >      llvm/test/Analysis/ConstantFolding/round.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/saturating-add-sub.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/smul-fix-sat.ll<br>
              >      llvm/test/Analysis/ConstantFolding/smul-fix.ll<br>
              >      llvm/test/Analysis/ConstantFolding/timeout.ll<br>
              >      llvm/test/Analysis/ConstantFolding/trunc.ll<br>
              >      llvm/test/Analysis/ConstantFolding/vecreduce.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/vector-undef-elts.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/vectorgep-crash.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/vscale-getelementptr.ll<br>
              >     
              llvm/test/Analysis/ConstantFolding/vscale-shufflevector.ll<br>
              >      llvm/test/Analysis/ConstantFolding/vscale.ll<br>
              >      llvm/test/Other/2002-03-11-ConstPropCrash.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2002-05-03-DivideByZeroException.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2002-05-03-NotOperator.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2002-09-03-SetCC-Bools.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2003-05-12-DivideError.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2005-01-28-SetCCGEP.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2006-11-30-vector-cast.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2006-12-01-TruncBoolBug.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2006-12-01-bool-casts.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2007-02-05-BitCast.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2007-02-23-sdiv.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2008-07-07-VectorCompare.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2009-06-20-constexpr-zero-lhs.ll<br>
              >     
              llvm/test/Transforms/ConstProp/2009-09-01-GEP-Crash.ll<br>
              >      llvm/test/Transforms/ConstProp/InsertElement.ll<br>
              >      llvm/test/Transforms/ConstProp/avx512.ll<br>
              >      llvm/test/Transforms/ConstProp/basictest.ll<br>
              >      llvm/test/Transforms/ConstProp/bitcast.ll<br>
              >      llvm/test/Transforms/ConstProp/bswap.ll<br>
              >     
              llvm/test/Transforms/ConstProp/calls-math-finite.ll<br>
              >      llvm/test/Transforms/ConstProp/calls.ll<br>
              >      llvm/test/Transforms/ConstProp/cast.ll<br>
              >      llvm/test/Transforms/ConstProp/constant-expr.ll<br>
              >     
              llvm/test/Transforms/ConstProp/convert-from-fp16.ll<br>
              >      llvm/test/Transforms/ConstProp/div-zero.ll<br>
              >      llvm/test/Transforms/ConstProp/extractvalue.ll<br>
              >     
              llvm/test/Transforms/ConstProp/float-to-ptr-cast.ll<br>
              >      llvm/test/Transforms/ConstProp/fma.ll<br>
              >      llvm/test/Transforms/ConstProp/insertvalue.ll<br>
              >      llvm/test/Transforms/ConstProp/loads.ll<br>
              >      llvm/test/Transforms/ConstProp/logicaltest.ll<br>
              >      llvm/test/Transforms/ConstProp/overflow-ops.ll<br>
              >      llvm/test/Transforms/ConstProp/phi.ll<br>
              >      llvm/test/Transforms/ConstProp/remtest.ll<br>
              >      llvm/test/Transforms/ConstProp/shift.ll<br>
              >      llvm/test/Transforms/ConstProp/sse.ll<br>
              >      llvm/test/Transforms/ConstProp/trunc_vec.ll<br>
              ><br>
              ><br>
              >
################################################################################<br>
              > diff  --git
              a/llvm/bindings/go/llvm/executionengine_test.go
              b/llvm/bindings/go/llvm/executionengine_test.go<br>
              > index 4462f8fb2046..2369826db914 100644<br>
              > --- a/llvm/bindings/go/llvm/executionengine_test.go<br>
              > +++ b/llvm/bindings/go/llvm/executionengine_test.go<br>
              > @@ -80,7 +80,6 @@ func TestFactorial(t *testing.T) {<br>
              >       pass := NewPassManager()<br>
              >       defer pass.Dispose()<br>
              >   <br>
              > -     pass.AddConstantPropagationPass()<br>
              >       pass.AddInstructionCombiningPass()<br>
              >       pass.AddPromoteMemoryToRegisterPass()<br>
              >       pass.AddGVNPass()<br>
              ><br>
              > diff  --git
              a/llvm/bindings/go/llvm/transforms_scalar.go
              b/llvm/bindings/go/llvm/transforms_scalar.go<br>
              > index 36fc13e00696..d1b54bd2a191 100644<br>
              > --- a/llvm/bindings/go/llvm/transforms_scalar.go<br>
              > +++ b/llvm/bindings/go/llvm/transforms_scalar.go<br>
              > @@ -40,6 +40,5 @@ func (pm PassManager)
              AddScalarReplAggregatesPassWithThreshold(threshold int) {<br>
              >   }<br>
              >   func (pm PassManager) AddSimplifyLibCallsPass()   
                 { C.LLVMAddSimplifyLibCallsPass(pm.C) }<br>
              >   func (pm PassManager) AddTailCallEliminationPass() 
                { C.LLVMAddTailCallEliminationPass(pm.C) }<br>
              > -func (pm PassManager) AddConstantPropagationPass() 
                { C.LLVMAddConstantPropagationPass(pm.C) }<br>
              >   func (pm PassManager)
              AddDemoteMemoryToRegisterPass() {
              C.LLVMAddDemoteMemoryToRegisterPass(pm.C) }<br>
              >   func (pm PassManager) AddVerifierPass()           
                 { C.LLVMAddVerifierPass(pm.C) }<br>
              ><br>
              > diff  --git
              a/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli
b/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli<br>
              > index 117218f06608..bd57ba1136bb 100644<br>
              > ---
              a/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli<br>
              > +++
              b/llvm/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli<br>
              > @@ -161,11 +161,6 @@ external
              add_tail_call_elimination<br>
              >     : [< Llvm.PassManager.any ] Llvm.PassManager.t
              -> unit<br>
              >     = "llvm_add_tail_call_elimination"<br>
              >   <br>
              > -(** See the [llvm::createConstantPropagationPass]
              function. *)<br>
              > -external add_constant_propagation<br>
              > -  : [< Llvm.PassManager.any ] Llvm.PassManager.t
              -> unit<br>
              > -  = "llvm_add_constant_propagation"<br>
              > -<br>
              >   (** See the
              [llvm::createDemoteMemoryToRegisterPass] function. *)<br>
              >   external add_memory_to_register_demotion<br>
              >     : [< Llvm.PassManager.any ] Llvm.PassManager.t
              -> unit<br>
              ><br>
              > diff  --git
              a/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c
b/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c<br>
              > index 8d10989bd667..1e794c9241d6 100644<br>
              > ---
              a/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c<br>
              > +++
              b/llvm/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c<br>
              > @@ -200,12 +200,6 @@ CAMLprim value
              llvm_add_tail_call_elimination(LLVMPassManagerRef PM) {<br>
              >     return Val_unit;<br>
              >   }<br>
              >   <br>
              > -/* [<Llvm.PassManager.any] Llvm.PassManager.t
              -> unit */<br>
              > -CAMLprim value
              llvm_add_constant_propagation(LLVMPassManagerRef PM) {<br>
              > -  LLVMAddConstantPropagationPass(PM);<br>
              > -  return Val_unit;<br>
              > -}<br>
              > -<br>
              >   /* [<Llvm.PassManager.any] Llvm.PassManager.t
              -> unit */<br>
              >   CAMLprim value
              llvm_add_demote_memory_to_register(LLVMPassManagerRef PM)
              {<br>
              >     LLVMAddDemoteMemoryToRegisterPass(PM);<br>
              ><br>
              > diff  --git a/llvm/docs/CommandLine.rst
              b/llvm/docs/CommandLine.rst<br>
              > index 431ebc0e67e6..c67e73373ebd 100644<br>
              > --- a/llvm/docs/CommandLine.rst<br>
              > +++ b/llvm/docs/CommandLine.rst<br>
              > @@ -475,7 +475,7 @@ Parsing a list of options<br>
              >   Now that we have the standard run-of-the-mill
              argument types out of the way,<br>
              >   lets get a little wild and crazy.  Lets say that we
              want our optimizer to accept<br>
              >   a **list** of optimizations to perform, allowing
              duplicates.  For example, we<br>
              > -might want to run: "``compiler -dce -constprop
              -inline -dce -strip``".  In this<br>
              > +might want to run: "``compiler -dce -instsimplify
              -inline -dce -strip``".  In this<br>
              >   case, the order of the arguments and the number of
              appearances is very<br>
              >   important.  This is what the "``cl::list``"
              template is for.  First, start by<br>
              >   defining an enum of the optimizations that you
              would like to perform:<br>
              > @@ -484,7 +484,7 @@ defining an enum of the
              optimizations that you would like to perform:<br>
              >   <br>
              >     enum Opts {<br>
              >       // 'inline' is a C++ keyword, so name it
              'inlining'<br>
              > -    dce, constprop, inlining, strip<br>
              > +    dce, instsimplify, inlining, strip<br>
              >     };<br>
              >   <br>
              >   Then define your "``cl::list``" variable:<br>
              > @@ -494,7 +494,7 @@ Then define your "``cl::list``"
              variable:<br>
              >     cl::list<Opts>
              OptimizationList(cl::desc("Available Optimizations:"),<br>
              >       cl::values(<br>
              >         clEnumVal(dce               , "Dead Code
              Elimination"),<br>
              > -      clEnumVal(constprop         , "Constant
              Propagation"),<br>
              > +      clEnumVal(instsimplify      , "Instruction
              Simplification"),<br>
              >        clEnumValN(inlining, "inline", "Procedure
              Integration"),<br>
              >         clEnumVal(strip             , "Strip
              Symbols")));<br>
              >   <br>
              > @@ -553,16 +553,16 @@ Reworking the above list
              example, we could replace `cl::list`_ with `cl::bits`_:<br>
              >     cl::bits<Opts>
              OptimizationBits(cl::desc("Available Optimizations:"),<br>
              >       cl::values(<br>
              >         clEnumVal(dce               , "Dead Code
              Elimination"),<br>
              > -      clEnumVal(constprop         , "Constant
              Propagation"),<br>
              > +      clEnumVal(instsimplify      , "Instruction
              Simplification"),<br>
              >        clEnumValN(inlining, "inline", "Procedure
              Integration"),<br>
              >         clEnumVal(strip             , "Strip
              Symbols")));<br>
              >   <br>
              > -To test to see if ``constprop`` was specified, we
              can use the ``cl:bits::isSet``<br>
              > +To test to see if ``instsimplify`` was specified, we
              can use the ``cl:bits::isSet``<br>
              >   function:<br>
              >   <br>
              >   .. code-block:: c++<br>
              >   <br>
              > -  if (OptimizationBits.isSet(constprop)) {<br>
              > +  if (OptimizationBits.isSet(instsimplify)) {<br>
              >       ...<br>
              >     }<br>
              >   <br>
              ><br>
              > diff  --git a/llvm/docs/Passes.rst
              b/llvm/docs/Passes.rst<br>
              > index 2ff28eb09e54..202e3ab223d6 100644<br>
              > --- a/llvm/docs/Passes.rst<br>
              > +++ b/llvm/docs/Passes.rst<br>
              > @@ -460,27 +460,6 @@ shared.  This is useful because
              some passes (i.e., TraceValues) insert a lot of<br>
              >   string constants into the program, regardless of
              whether or not an existing<br>
              >   string is available.<br>
              >   <br>
              > -``-constprop``: Simple constant propagation<br>
              > --------------------------------------------<br>
              > -<br>
              > -This pass implements constant propagation and
              merging.  It looks for<br>
              > -instructions involving only constant operands and
              replaces them with a constant<br>
              > -value instead of an instruction.  For example:<br>
              > -<br>
              > -.. code-block:: llvm<br>
              > -<br>
              > -  add i32 1, 2<br>
              > -<br>
              > -becomes<br>
              > -<br>
              > -.. code-block:: llvm<br>
              > -<br>
              > -  i32 3<br>
              > -<br>
              > -NOTE: this pass has a habit of making definitions be
              dead.  It is a good idea<br>
              > -to run a :ref:`Dead Instruction Elimination
              <passes-die>` pass sometime after<br>
              > -running this pass.<br>
              > -<br>
              >   .. _passes-dce:<br>
              >   <br>
              >   ``-dce``: Dead Code Elimination<br>
              ><br>
              > diff  --git a/llvm/include/llvm-c/Transforms/Scalar.h
              b/llvm/include/llvm-c/Transforms/Scalar.h<br>
              > index 93d79a205195..8b0a4d2642a9 100644<br>
              > --- a/llvm/include/llvm-c/Transforms/Scalar.h<br>
              > +++ b/llvm/include/llvm-c/Transforms/Scalar.h<br>
              > @@ -125,9 +125,6 @@ void
              LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM);<br>
              >   /** See llvm::createTailCallEliminationPass
              function. */<br>
              >   void
              LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM);<br>
              >   <br>
              > -/** See llvm::createConstantPropagationPass
              function. */<br>
              > -void
              LLVMAddConstantPropagationPass(LLVMPassManagerRef PM);<br>
              > -<br>
              >   /** See llvm::demotePromoteMemoryToRegisterPass
              function. */<br>
              >   void
              LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM);<br>
              >   <br>
              ><br>
              > diff  --git a/llvm/include/llvm/InitializePasses.h
              b/llvm/include/llvm/InitializePasses.h<br>
              > index ec97b7f276bf..f1b4d2f71bde 100644<br>
              > --- a/llvm/include/llvm/InitializePasses.h<br>
              > +++ b/llvm/include/llvm/InitializePasses.h<br>
              > @@ -113,7 +113,6 @@ void
              initializeCalledValuePropagationLegacyPassPass(PassRegistry
              &);<br>
              >   void
              initializeCodeGenPreparePass(PassRegistry&);<br>
              >   void
              initializeConstantHoistingLegacyPassPass(PassRegistry&);<br>
              >   void
              initializeConstantMergeLegacyPassPass(PassRegistry&);<br>
              > -void
              initializeConstantPropagationPass(PassRegistry&);<br>
              >   void
              initializeControlHeightReductionLegacyPassPass(PassRegistry&);<br>
              >   void
              initializeCorrelatedValuePropagationPass(PassRegistry&);<br>
              >   void
              initializeCostModelAnalysisPass(PassRegistry&);<br>
              ><br>
              > diff  --git a/llvm/include/llvm/LinkAllPasses.h
              b/llvm/include/llvm/LinkAllPasses.h<br>
              > index 9d7ac2b3f3b9..dfd0e9c8da70 100644<br>
              > --- a/llvm/include/llvm/LinkAllPasses.h<br>
              > +++ b/llvm/include/llvm/LinkAllPasses.h<br>
              > @@ -89,7 +89,6 @@ namespace {<br>
              >         (void) llvm::createLibCallsShrinkWrapPass();<br>
              >         (void)
              llvm::createCalledValuePropagationPass();<br>
              >         (void) llvm::createConstantMergePass();<br>
              > -      (void) llvm::createConstantPropagationPass();<br>
              >         (void)
              llvm::createControlHeightReductionLegacyPass();<br>
              >         (void) llvm::createCostModelAnalysisPass();<br>
              >         (void) llvm::createDeadArgEliminationPass();<br>
              ><br>
              > diff  --git a/llvm/include/llvm/Transforms/Scalar.h
              b/llvm/include/llvm/Transforms/Scalar.h<br>
              > index 8dd59e018061..242ffa0ede09 100644<br>
              > --- a/llvm/include/llvm/Transforms/Scalar.h<br>
              > +++ b/llvm/include/llvm/Transforms/Scalar.h<br>
              > @@ -24,12 +24,6 @@ class FunctionPass;<br>
              >   class ModulePass;<br>
              >   class Pass;<br>
              >   <br>
              >
-//===----------------------------------------------------------------------===//<br>
              > -//<br>
              > -// ConstantPropagation - A worklist driven constant
              propagation pass<br>
              > -//<br>
              > -FunctionPass *createConstantPropagationPass();<br>
              > -<br>
              > 
 //===----------------------------------------------------------------------===//<br>
              >   //<br>
              >   // AlignmentFromAssumptions - Use assume intrinsics
              to set load/store<br>
              ><br>
              > diff  --git
              a/llvm/lib/Transforms/Scalar/CMakeLists.txt
              b/llvm/lib/Transforms/Scalar/CMakeLists.txt<br>
              > index 9d9712bb0da3..89173414c16b 100644<br>
              > --- a/llvm/lib/Transforms/Scalar/CMakeLists.txt<br>
              > +++ b/llvm/lib/Transforms/Scalar/CMakeLists.txt<br>
              > @@ -4,7 +4,6 @@
              add_llvm_component_library(LLVMScalarOpts<br>
              >     BDCE.cpp<br>
              >     CallSiteSplitting.cpp<br>
              >     ConstantHoisting.cpp<br>
              > -  ConstantProp.cpp<br>
              >     CorrelatedValuePropagation.cpp<br>
              >     DCE.cpp<br>
              >     DeadStoreElimination.cpp<br>
              ><br>
              > diff  --git
              a/llvm/lib/Transforms/Scalar/ConstantProp.cpp
              b/llvm/lib/Transforms/Scalar/ConstantProp.cpp<br>
              > deleted file mode 100644<br>
              > index 73bf1d521b1d..000000000000<br>
              > --- a/llvm/lib/Transforms/Scalar/ConstantProp.cpp<br>
              > +++ /dev/null<br>
              > @@ -1,121 +0,0 @@<br>
              > -//===- ConstantProp.cpp - Code to perform Simple
              Constant Propagation -----===//<br>
              > -//<br>
              > -// Part of the LLVM Project, under the Apache
              License v2.0 with LLVM Exceptions.<br>
              > -// See <a href="https://llvm.org/LICENSE.txt"
                rel="noreferrer" target="_blank" moz-do-not-send="true">https://llvm.org/LICENSE.txt</a>
              for license information.<br>
              > -// SPDX-License-Identifier: Apache-2.0 WITH
              LLVM-exception<br>
              > -//<br>
              >
-//===----------------------------------------------------------------------===//<br>
              > -//<br>
              > -// This file implements constant propagation and
              merging:<br>
              > -//<br>
              > -// Specifically, this:<br>
              > -//   * Converts instructions like "add int 1, 2"
              into 3<br>
              > -//<br>
              > -// Notice that:<br>
              > -//   * This pass has a habit of making definitions
              be dead.  It is a good idea<br>
              > -//     to run a DIE pass sometime after running this
              pass.<br>
              > -//<br>
              >
-//===----------------------------------------------------------------------===//<br>
              > -<br>
              > -#include "llvm/ADT/SmallPtrSet.h"<br>
              > -#include "llvm/ADT/SmallVector.h"<br>
              > -#include "llvm/ADT/Statistic.h"<br>
              > -#include "llvm/Analysis/ConstantFolding.h"<br>
              > -#include "llvm/Analysis/TargetLibraryInfo.h"<br>
              > -#include "llvm/IR/Constant.h"<br>
              > -#include "llvm/IR/InstIterator.h"<br>
              > -#include "llvm/IR/Instruction.h"<br>
              > -#include "llvm/InitializePasses.h"<br>
              > -#include "llvm/Pass.h"<br>
              > -#include "llvm/Support/DebugCounter.h"<br>
              > -#include "llvm/Transforms/Scalar.h"<br>
              > -#include "llvm/Transforms/Utils/Local.h"<br>
              > -using namespace llvm;<br>
              > -<br>
              > -#define DEBUG_TYPE "constprop"<br>
              > -<br>
              > -STATISTIC(NumInstKilled, "Number of instructions
              killed");<br>
              > -DEBUG_COUNTER(CPCounter, "constprop-transform",<br>
              > -              "Controls which instructions are
              killed");<br>
              > -<br>
              > -namespace {<br>
              > -  struct ConstantPropagation : public FunctionPass {<br>
              > -    static char ID; // Pass identification,
              replacement for typeid<br>
              > -    ConstantPropagation() : FunctionPass(ID) {<br>
              > -     
              initializeConstantPropagationPass(*PassRegistry::getPassRegistry());<br>
              > -    }<br>
              > -<br>
              > -    bool runOnFunction(Function &F) override;<br>
              > -<br>
              > -    void getAnalysisUsage(AnalysisUsage &AU)
              const override {<br>
              > -      AU.setPreservesCFG();<br>
              > -     
              AU.addRequired<TargetLibraryInfoWrapperPass>();<br>
              > -    }<br>
              > -  };<br>
              > -}<br>
              > -<br>
              > -char ConstantPropagation::ID = 0;<br>
              > -INITIALIZE_PASS_BEGIN(ConstantPropagation,
              "constprop",<br>
              > -                "Simple constant propagation",
              false, false)<br>
              >
              -INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)<br>
              > -INITIALIZE_PASS_END(ConstantPropagation,
              "constprop",<br>
              > -                "Simple constant propagation",
              false, false)<br>
              > -<br>
              > -FunctionPass *llvm::createConstantPropagationPass()
              {<br>
              > -  return new ConstantPropagation();<br>
              > -}<br>
              > -<br>
              > -bool ConstantPropagation::runOnFunction(Function
              &F) {<br>
              > -  if (skipFunction(F))<br>
              > -    return false;<br>
              > -<br>
              > -  // Initialize the worklist to all of the
              instructions ready to process...<br>
              > -  SmallPtrSet<Instruction *, 16> WorkList;<br>
              > -  // The SmallVector of WorkList ensures that we do
              iteration at stable order.<br>
              > -  // We use two containers rather than one
              SetVector, since remove is<br>
              > -  // linear-time, and we don't care enough to remove
              from Vec.<br>
              > -  SmallVector<Instruction *, 16> WorkListVec;<br>
              > -  for (Instruction &I : instructions(&F)) {<br>
              > -    WorkList.insert(&I);<br>
              > -    WorkListVec.push_back(&I);<br>
              > -  }<br>
              > -<br>
              > -  bool Changed = false;<br>
              > -  const DataLayout &DL =
              F.getParent()->getDataLayout();<br>
              > -  TargetLibraryInfo *TLI =<br>
              > -     
              &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI(F);<br>
              > -<br>
              > -  while (!WorkList.empty()) {<br>
              > -    SmallVector<Instruction*, 16>
              NewWorkListVec;<br>
              > -    for (auto *I : WorkListVec) {<br>
              > -      WorkList.erase(I); // Remove element from the
              worklist...<br>
              > -<br>
              > -      if (!I->use_empty()) // Don't muck with
              dead instructions...<br>
              > -        if (Constant *C = ConstantFoldInstruction(I,
              DL, TLI)) {<br>
              > -          if
              (!DebugCounter::shouldExecute(CPCounter))<br>
              > -            continue;<br>
              > -<br>
              > -          // Add all of the users of this
              instruction to the worklist, they might<br>
              > -          // be constant propagatable now...<br>
              > -          for (User *U : I->users()) {<br>
              > -            // If user not in the set, then add it
              to the vector.<br>
              > -            if
              (WorkList.insert(cast<Instruction>(U)).second)<br>
              > -             
              NewWorkListVec.push_back(cast<Instruction>(U));<br>
              > -          }<br>
              > -<br>
              > -          // Replace all of the uses of a variable
              with uses of the constant.<br>
              > -          I->replaceAllUsesWith(C);<br>
              > -<br>
              > -          if (isInstructionTriviallyDead(I, TLI)) {<br>
              > -            I->eraseFromParent();<br>
              > -            ++NumInstKilled;<br>
              > -          }<br>
              > -<br>
              > -          // We made a change to the function...<br>
              > -          Changed = true;<br>
              > -        }<br>
              > -    }<br>
              > -    WorkListVec = std::move(NewWorkListVec);<br>
              > -  }<br>
              > -  return Changed;<br>
              > -}<br>
              ><br>
              > diff  --git a/llvm/lib/Transforms/Scalar/Scalar.cpp
              b/llvm/lib/Transforms/Scalar/Scalar.cpp<br>
              > index 8bc35d5228df..55b9dd7482cc 100644<br>
              > --- a/llvm/lib/Transforms/Scalar/Scalar.cpp<br>
              > +++ b/llvm/lib/Transforms/Scalar/Scalar.cpp<br>
              > @@ -38,7 +38,6 @@ void
              llvm::initializeScalarOpts(PassRegistry &Registry) {<br>
              >     initializeAlignmentFromAssumptionsPass(Registry);<br>
              >   
               initializeCallSiteSplittingLegacyPassPass(Registry);<br>
              >   
               initializeConstantHoistingLegacyPassPass(Registry);<br>
              > -  initializeConstantPropagationPass(Registry);<br>
              >   
               initializeCorrelatedValuePropagationPass(Registry);<br>
              >     initializeDCELegacyPassPass(Registry);<br>
              >     initializeDeadInstEliminationPass(Registry);<br>
              > @@ -248,10 +247,6 @@ void
              LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM) {<br>
              >   
               unwrap(PM)->add(createTailCallEliminationPass());<br>
              >   }<br>
              >   <br>
              > -void
              LLVMAddConstantPropagationPass(LLVMPassManagerRef PM) {<br>
              > - 
              unwrap(PM)->add(createConstantPropagationPass());<br>
              > -}<br>
              > -<br>
              >   void
              LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM) {<br>
              >   
               unwrap(PM)->add(createDemoteRegisterToMemoryPass());<br>
              >   }<br>
              ><br>
              > diff  --git
              a/llvm/test/Assembler/2002-04-07-HexFloatConstants.ll
              b/llvm/test/Assembler/2002-04-07-HexFloatConstants.ll<br>
              > index 90ee85a2a302..6bd583eb1a60 100644<br>
              > ---
              a/llvm/test/Assembler/2002-04-07-HexFloatConstants.ll<br>
              > +++
              b/llvm/test/Assembler/2002-04-07-HexFloatConstants.ll<br>
              > @@ -5,8 +5,8 @@<br>
              >   ; of the bug that was causing the Olden Health
              benchmark to output incorrect<br>
              >   ; results!<br>
              >   ;<br>
              > -; RUN: opt -constprop -S > %t.1 < %s<br>
              > -; RUN: llvm-as < %s | llvm-dis | llvm-as | opt
              -constprop | \<br>
              > +; RUN: opt -instsimplify -S > %t.1 < %s<br>
              > +; RUN: llvm-as < %s | llvm-dis | llvm-as | opt
              -instsimplify | \<br>
              >   ; RUN: llvm-dis > %t.2<br>
              >   ; RUN:<br>
              > diff  %t.1 %t.2<br>
              >   ; RUN: verify-uselistorder %s<br>
              ><br>
              > diff  --git a/llvm/test/Bitcode/extractelement.ll
              b/llvm/test/Bitcode/extractelement.ll<br>
              > index 90a883d6f02d..10858a6dd30a 100644<br>
              > --- a/llvm/test/Bitcode/extractelement.ll<br>
              > +++ b/llvm/test/Bitcode/extractelement.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop | llvm-dis
              -disable-output<br>
              > +; RUN: opt < %s -instsimplify | llvm-dis
              -disable-output<br>
              >   ; RUN: verify-uselistorder < %s<br>
              >   ; PR3465<br>
              >   <br>
              ><br>
              > diff  --git
              a/llvm/test/Other/2002-03-11-ConstPropCrash.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/2002-03-11-ConstPropCrash.ll<br>
              > similarity index 96%<br>
              > rename from
              llvm/test/Other/2002-03-11-ConstPropCrash.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/2002-03-11-ConstPropCrash.ll<br>
              > index a6d4f5b3dbcc..fd74fff636ae 100644<br>
              > --- a/llvm/test/Other/2002-03-11-ConstPropCrash.ll<br>
              > +++
b/llvm/test/Transforms/InstSimplify/ConstProp/2002-03-11-ConstPropCrash.ll<br>
              > @@ -5,7 +5,7 @@<br>
              >   ;<br>
              >   ; Fixed by adding new arguments to
              ConstantFoldTerminator<br>
              >   ;<br>
              > -; RUN: opt < %s -constprop<br>
              > +; RUN: opt < %s -instsimplify<br>
              >   <br>
              >   define void @build_tree(i32 %ml) {<br>
              >   ; <label>:0<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2002-05-03-DivideByZeroException.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/2002-05-03-DivideByZeroException.ll<br>
              > similarity index 90%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2002-05-03-DivideByZeroException.ll<br>
              > rename to
llvm/test/Transforms/InstSimplify/ConstProp/2002-05-03-DivideByZeroException.ll<br>
              > index 15a621189382..00fb09cf16af 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/2002-05-03-DivideByZeroException.ll<br>
              > +++
b/llvm/test/Transforms/InstSimplify/ConstProp/2002-05-03-DivideByZeroException.ll<br>
              > @@ -1,6 +1,6 @@<br>
              >   ; Make sure that the constant propogator doesn't
              divide by zero!<br>
              >   ;<br>
              > -; RUN: opt < %s -constprop<br>
              > +; RUN: opt < %s -instsimplify<br>
              >   ;<br>
              >   <br>
              >   define i32 @test() {<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2002-05-03-NotOperator.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/2002-05-03-NotOperator.ll<br>
              > similarity index 92%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2002-05-03-NotOperator.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/2002-05-03-NotOperator.ll<br>
              > index ca1d6180c758..aa0bdc9fd41e 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/2002-05-03-NotOperator.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/2002-05-03-NotOperator.ll<br>
              > @@ -4,7 +4,7 @@<br>
              >   <br>
              >   ; Fix #2: The unary not instruction now no longer
              exists. Change to xor.<br>
              >   <br>
              > -; RUN: opt < %s -constprop -S | \<br>
              > +; RUN: opt < %s -instsimplify -S | \<br>
              >   ; RUN:   not grep "i32 0"<br>
              >   <br>
              >   define i32 @test1() {<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2002-09-03-SetCC-Bools.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/2002-09-03-SetCC-Bools.ll<br>
              > similarity index 94%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2002-09-03-SetCC-Bools.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/2002-09-03-SetCC-Bools.ll<br>
              > index dd24d965620c..65ea22583c04 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/2002-09-03-SetCC-Bools.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/2002-09-03-SetCC-Bools.ll<br>
              > @@ -1,6 +1,6 @@<br>
              >   ; SetCC on boolean values was not implemented!<br>
              >   <br>
              > -; RUN: opt < %s -constprop -die -S | \<br>
              > +; RUN: opt < %s -instsimplify -die -S | \<br>
              >   ; RUN:   not grep set<br>
              >   <br>
              >   define i1 @test1() {<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2003-05-12-DivideError.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/2003-05-12-DivideError.ll<br>
              > similarity index 90%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2003-05-12-DivideError.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/2003-05-12-DivideError.ll<br>
              > index 2708dce9852d..52bb044f45e8 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/2003-05-12-DivideError.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/2003-05-12-DivideError.ll<br>
              > @@ -1,6 +1,6 @@<br>
              >   ; Make sure that the constant propagator doesn't
              cause a sigfpe<br>
              >   ;<br>
              > -; RUN: opt < %s -constprop<br>
              > +; RUN: opt < %s -instsimplify<br>
              >   ;<br>
              >   <br>
              >   define i32 @test() {<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2005-01-28-SetCCGEP.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/2005-01-28-SetCCGEP.ll<br>
              > similarity index 89%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2005-01-28-SetCCGEP.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/2005-01-28-SetCCGEP.ll<br>
              > index af7e8be4fcd8..0518a91f0c66 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/2005-01-28-SetCCGEP.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/2005-01-28-SetCCGEP.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop -S | \<br>
              > +; RUN: opt < %s -instsimplify -S | \<br>
              >   ; RUN:    not grep "ret i1 false"<br>
              >   <br>
              >   @b = external global [2 x {  }]         ; <[2 x
              {  }]*> [#uses=2]<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2006-11-30-vector-cast.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/2006-11-30-vector-cast.ll<br>
              > similarity index 77%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2006-11-30-vector-cast.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/2006-11-30-vector-cast.ll<br>
              > index 4a93144d2d51..bf5615414aa2 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/2006-11-30-vector-cast.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/2006-11-30-vector-cast.ll<br>
              > @@ -1,6 +1,6 @@<br>
              > -; RUN: opt < %s -constprop -S | \<br>
              > +; RUN: opt < %s -instsimplify -S | \<br>
              >   ; RUN:   grep "i32 -1"<br>
              > -; RUN: opt < %s -constprop -S | \<br>
              > +; RUN: opt < %s -instsimplify -S | \<br>
              >   ; RUN:   not grep zeroinitializer<br>
              >   <br>
              >   define <4 x i32> @test() {<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2006-12-01-TruncBoolBug.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/2006-12-01-TruncBoolBug.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2006-12-01-TruncBoolBug.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/2006-12-01-TruncBoolBug.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2006-12-01-bool-casts.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/2006-12-01-bool-casts.ll<br>
              > similarity index 78%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2006-12-01-bool-casts.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/2006-12-01-bool-casts.ll<br>
              > index 71db4211c5d2..6d323435c425 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/2006-12-01-bool-casts.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/2006-12-01-bool-casts.ll<br>
              > @@ -1,6 +1,6 @@<br>
              > -; RUN: opt < %s -constprop -S | \<br>
              > +; RUN: opt < %s -instsimplify -S | \<br>
              >   ; RUN:    grep "ret i32 -1"<br>
              > -; RUN: opt < %s -constprop -S | \<br>
              > +; RUN: opt < %s -instsimplify -S | \<br>
              >   ; RUN:    grep "ret i32 1"<br>
              >   <br>
              >   define i32 @test1() {<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2007-02-05-BitCast.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/2007-02-05-BitCast.ll<br>
              > similarity index 69%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2007-02-05-BitCast.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/2007-02-05-BitCast.ll<br>
              > index ebe3d21806b7..8df5c405dd9e 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/2007-02-05-BitCast.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/2007-02-05-BitCast.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop -S | grep 1065353216<br>
              > +; RUN: opt < %s -instsimplify -S | grep
              1065353216<br>
              >   <br>
              >   define i32 @test() {<br>
              >           %A = bitcast float 1.000000e+00 to i32     
                  ; <i32> [#uses=1]<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2007-02-23-sdiv.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/2007-02-23-sdiv.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2007-02-23-sdiv.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/2007-02-23-sdiv.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2008-07-07-VectorCompare.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/2008-07-07-VectorCompare.ll<br>
              > similarity index 94%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2008-07-07-VectorCompare.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/2008-07-07-VectorCompare.ll<br>
              > index fd5495445b79..bc8eed58970a 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/2008-07-07-VectorCompare.ll<br>
              > +++
b/llvm/test/Transforms/InstSimplify/ConstProp/2008-07-07-VectorCompare.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop -disable-output<br>
              > +; RUN: opt < %s -instsimplify -disable-output<br>
              >   ; PR2529<br>
              >   define <4 x i1> @test1(i32 %argc, i8** %argv)
              {<br>
              >   entry:<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2009-06-20-constexpr-zero-lhs.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/2009-06-20-constexpr-zero-lhs.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2009-06-20-constexpr-zero-lhs.ll<br>
              > rename to
llvm/test/Transforms/InstSimplify/ConstProp/2009-06-20-constexpr-zero-lhs.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/2009-09-01-GEP-Crash.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/2009-09-01-GEP-Crash.ll<br>
              > similarity index 96%<br>
              > rename from
              llvm/test/Transforms/ConstProp/2009-09-01-GEP-Crash.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/2009-09-01-GEP-Crash.ll<br>
              > index e93a2c066bd2..25cd3bb59fc8 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/2009-09-01-GEP-Crash.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/2009-09-01-GEP-Crash.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop | llvm-dis<br>
              > +; RUN: opt < %s -instsimplify | llvm-dis<br>
              >   ; PR4848<br>
              >   target datalayout =
"e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"<br>
              >   target triple = "x86_64-unknown-linux-gnu"<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/AMDGPU/cos.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cos.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/AMDGPU/cos.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cos.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/AMDGPU/cubeid.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cubeid.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/AMDGPU/cubeid.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cubeid.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/AMDGPU/cubema.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cubema.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/AMDGPU/cubema.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cubema.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/AMDGPU/cubesc.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cubesc.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/AMDGPU/cubesc.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cubesc.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/AMDGPU/cubetc.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cubetc.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/AMDGPU/cubetc.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/cubetc.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/AMDGPU/fmul_legacy.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/fmul_legacy.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/AMDGPU/fmul_legacy.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/fmul_legacy.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/AMDGPU/fract.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/fract.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/AMDGPU/fract.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/fract.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/AMDGPU/lit.local.cfg
b/llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/lit.local.cfg<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/AMDGPU/lit.local.cfg<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/lit.local.cfg<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/AMDGPU/sin.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/sin.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/AMDGPU/sin.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/AMDGPU/sin.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/ARM/lit.local.cfg
              b/llvm/test/Transforms/InstSimplify/ConstProp/ARM/lit.local.cfg<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/ARM/lit.local.cfg<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/ARM/lit.local.cfg<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/ARM/mve-vctp.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/ARM/mve-vctp.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/ARM/mve-vctp.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/ARM/mve-vctp.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/InsertElement.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/InsertElement.ll<br>
              > similarity index 91%<br>
              > rename from
              llvm/test/Transforms/ConstProp/InsertElement.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/InsertElement.ll<br>
              > index 1048b5752e8b..98ba4c6f0036 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/InsertElement.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/InsertElement.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   define i32 @test1() {<br>
              >   ; CHECK-LABEL: @test1(<br>
              > @@ -25,7 +25,6 @@ define <4 x i64>
              @insertelement() {<br>
              >   <br>
              >   define <4 x i64> @insertelement_undef() {<br>
              >   ; CHECK-LABEL: @insertelement_undef(<br>
              > -; CHECK-NEXT:    [[VEC4:%.*]] = insertelement <4
              x i64> <i64 -1, i64 -2, i64 -3, i64 undef>, i64
              -4, i32 3<br>
              >   ; CHECK-NEXT:    ret <4 x i64> undef<br>
              >   ;<br>
              >     %vec1 = insertelement <4 x i64> undef, i64
              -1, i32 0<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/WebAssembly/trunc.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/WebAssembly/trunc.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/WebAssembly/trunc.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/WebAssembly/trunc.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/WebAssembly/trunc_saturate.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/WebAssembly/trunc_saturate.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/WebAssembly/trunc_saturate.ll<br>
              > rename to
llvm/test/Transforms/InstSimplify/ConstProp/WebAssembly/trunc_saturate.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/abs.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/abs.ll<br>
              > similarity index 95%<br>
              > rename from llvm/test/Analysis/ConstantFolding/abs.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/abs.ll<br>
              > index 7b3a146e8614..73e12f956382 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/abs.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/abs.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   declare i8 @llvm.abs.i8(i8, i1)<br>
              >   declare <8 x i8> @llvm.abs.v8i8(<8 x
              i8>, i1)<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/allones.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/allones.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/allones.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/allones.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/avx512.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/avx512.ll<br>
              > similarity index 99%<br>
              > rename from llvm/test/Transforms/ConstProp/avx512.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/avx512.ll<br>
              > index 7043c23315cd..9649611fd8fe 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/avx512.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/avx512.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   ; REQUIRES: x86-registered-target<br>
              >   <br>
              >   define i1 @test_avx512_cvts_exact() nounwind
              readnone {<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/basictest.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/basictest.ll<br>
              > similarity index 96%<br>
              > rename from
              llvm/test/Transforms/ConstProp/basictest.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/basictest.ll<br>
              > index afe6ef91240d..3c1e97f3c9b5 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/basictest.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/basictest.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop -die -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -die -S | FileCheck
              %s<br>
              >   <br>
              >   target datalayout =
"e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"<br>
              >   target triple = "x86_64-apple-macosx10.7.2"<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/binop-identity-undef.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/binop-identity-undef.ll<br>
              > similarity index 94%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/binop-identity-undef.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/binop-identity-undef.ll<br>
              > index 68307892187c..7b36b5555ae7 100644<br>
              > ---
              a/llvm/test/Analysis/ConstantFolding/binop-identity-undef.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/binop-identity-undef.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt -constprop -S %s | FileCheck %s<br>
              > +; RUN: opt -instsimplify -S %s | FileCheck %s<br>
              >   <br>
              >   define i32 @and1() {<br>
              >   ; CHECK-LABEL: @and1(<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/bitcast.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/bitcast.ll<br>
              > similarity index 98%<br>
              > rename from llvm/test/Transforms/ConstProp/bitcast.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/bitcast.ll<br>
              > index 7b07391ee869..19165da28bba 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/bitcast.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/bitcast.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   ; PR2165<br>
              >   <br>
              >   define <1 x i64> @test1() {<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/bitcount.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/bitcount.ll<br>
              > similarity index 98%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/bitcount.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/bitcount.ll<br>
              > index 6333c4d24d09..f737653a6f3b 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/bitcount.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/bitcount.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   declare i31 @llvm.ctpop.i31(i31 %val)<br>
              >   declare i32 @llvm.cttz.i32(i32 %val, i1)<br>
              ><br>
              > diff  --git a/llvm/test/Transforms/ConstProp/bswap.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/bswap.ll<br>
              > similarity index 95%<br>
              > rename from llvm/test/Transforms/ConstProp/bswap.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/bswap.ll<br>
              > index f601deb73db2..d06545dcde34 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/bswap.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/bswap.ll<br>
              > @@ -1,6 +1,6 @@<br>
              >   ; bswap should be constant folded when it is passed
              a constant argument<br>
              >   <br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   declare i16 @llvm.bswap.i16(i16)<br>
              >   <br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/calls-math-finite.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/calls-math-finite.ll<br>
              > similarity index 97%<br>
              > rename from
              llvm/test/Transforms/ConstProp/calls-math-finite.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/calls-math-finite.ll<br>
              > index d13b798bde21..307324640000 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/calls-math-finite.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/calls-math-finite.ll<br>
              > @@ -1,6 +1,6 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > -; RUN: opt < %s -constprop -S
              -mtriple=unknown-unknown-linux-musl | FileCheck
              -check-prefix=MUSL %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S
              -mtriple=unknown-unknown-linux-musl | FileCheck
              -check-prefix=MUSL %s<br>
              >   <br>
              >   ; Test to verify constant folding can occur when
              math routines are mapped<br>
              >   ; to the __<func>_finite versions of
              functions due to __FINITE_MATH_ONLY__<br>
              ><br>
              > diff  --git a/llvm/test/Transforms/ConstProp/calls.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/calls.ll<br>
              > similarity index 97%<br>
              > rename from llvm/test/Transforms/ConstProp/calls.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/calls.ll<br>
              > index 12ee1cb11393..84aa7c2913a2 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/calls.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/calls.ll<br>
              > @@ -1,5 +1,5 @@<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > -; RUN: opt < %s -constprop
              -disable-simplify-libcalls -S | FileCheck %s
              --check-prefix=FNOBUILTIN<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify
              -disable-simplify-libcalls -S | FileCheck %s
              --check-prefix=FNOBUILTIN<br>
              >   <br>
              >   declare double @acos(double) readnone nounwind<br>
              >   declare double @asin(double) readnone nounwind<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/cast-vector.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/cast-vector.ll<br>
              > similarity index 97%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/cast-vector.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/cast-vector.ll<br>
              > index 1aaf55a23b50..f73058741e54 100644<br>
              > ---
              a/llvm/test/Analysis/ConstantFolding/cast-vector.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/cast-vector.ll<br>
              > @@ -1,32 +1,32 @@<br>
              > -; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              > -<br>
              > -; Test constant fold of constant expression GEP used
              by ptrtoint (the<br>
              > -; "offsetof-like expression" case).<br>
              > -; This used to hit an assert due to not supporting
              vectors in<br>
              > -; llvm::ConstantFoldCastInstruction when handling
              ptrtoint.<br>
              > -define <2 x i16> @test1() {<br>
              > -; CHECK-LABEL: @test1(<br>
              > -; CHECK-NEXT:  entry:<br>
              > -; CHECK-NEXT:    ret <2 x i16> ptrtoint (<2
              x i32*> getelementptr ([10 x i32], [10 x i32]* null,
              <2 x i64> zeroinitializer, <2 x i64> <i64
              5, i64 7>) to <2 x i16>)<br>
              > -;<br>
              > -entry:<br>
              > -  %gep = getelementptr inbounds [10 x i32], [10 x
              i32]* null, i16 0, <2 x i16> <i16 5, i16 7><br>
              > -  %vec = ptrtoint <2 x i32*> %gep to <2 x
              i16><br>
              > -  ret <2 x i16> %vec<br>
              > -}<br>
              > -<br>
              > -; Test constant fold of constant expression GEP used
              by ptrtoint (the<br>
              > -; "sizeof-like expression" case).<br>
              > -; This used to hit an assert due to not supporting
              vectors in<br>
              > -; llvm::ConstantFoldCastInstruction when handling
              ptrtoint.<br>
              > -define <2 x i16> @test2() {<br>
              > -; CHECK-LABEL: @test2(<br>
              > -; CHECK-NEXT:  entry:<br>
              > -; CHECK-NEXT:    ret <2 x i16> ptrtoint (<2
              x i32*> getelementptr (i32, i32* null, <2 x i64>
              <i64 5, i64 7>) to <2 x i16>)<br>
              > -;<br>
              > -entry:<br>
              > -  %gep = getelementptr i32, i32* null, <2 x
              i16> <i16 5, i16 7><br>
              > -  %vec = ptrtoint <2 x i32*> %gep to <2 x
              i16><br>
              > -  ret <2 x i16> %vec<br>
              > -}<br>
              > +; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              > +<br>
              > +; Test constant fold of constant expression GEP used
              by ptrtoint (the<br>
              > +; "offsetof-like expression" case).<br>
              > +; This used to hit an assert due to not supporting
              vectors in<br>
              > +; llvm::ConstantFoldCastInstruction when handling
              ptrtoint.<br>
              > +define <2 x i16> @test1() {<br>
              > +; CHECK-LABEL: @test1(<br>
              > +; CHECK-NEXT:  entry:<br>
              > +; CHECK-NEXT:    ret <2 x i16> ptrtoint (<2
              x i32*> getelementptr ([10 x i32], [10 x i32]* null,
              <2 x i64> zeroinitializer, <2 x i64> <i64
              5, i64 7>) to <2 x i16>)<br>
              > +;<br>
              > +entry:<br>
              > +  %gep = getelementptr inbounds [10 x i32], [10 x
              i32]* null, i16 0, <2 x i16> <i16 5, i16 7><br>
              > +  %vec = ptrtoint <2 x i32*> %gep to <2 x
              i16><br>
              > +  ret <2 x i16> %vec<br>
              > +}<br>
              > +<br>
              > +; Test constant fold of constant expression GEP used
              by ptrtoint (the<br>
              > +; "sizeof-like expression" case).<br>
              > +; This used to hit an assert due to not supporting
              vectors in<br>
              > +; llvm::ConstantFoldCastInstruction when handling
              ptrtoint.<br>
              > +define <2 x i16> @test2() {<br>
              > +; CHECK-LABEL: @test2(<br>
              > +; CHECK-NEXT:  entry:<br>
              > +; CHECK-NEXT:    ret <2 x i16> ptrtoint (<2
              x i32*> getelementptr (i32, i32* null, <2 x i64>
              <i64 5, i64 7>) to <2 x i16>)<br>
              > +;<br>
              > +entry:<br>
              > +  %gep = getelementptr i32, i32* null, <2 x
              i16> <i16 5, i16 7><br>
              > +  %vec = ptrtoint <2 x i32*> %gep to <2 x
              i16><br>
              > +  ret <2 x i16> %vec<br>
              > +}<br>
              ><br>
              > diff  --git a/llvm/test/Transforms/ConstProp/cast.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/cast.ll<br>
              > similarity index 95%<br>
              > rename from llvm/test/Transforms/ConstProp/cast.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/cast.ll<br>
              > index 8377df17b3a8..170e2d55421c 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/cast.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/cast.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   ; Overflow on a float to int or int to float
              conversion is undefined (PR21130).<br>
              >   <br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/constant-expr.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/constant-expr.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Transforms/ConstProp/constant-expr.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/constant-expr.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/convert-from-fp16.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/convert-from-fp16.ll<br>
              > similarity index 98%<br>
              > rename from
              llvm/test/Transforms/ConstProp/convert-from-fp16.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/convert-from-fp16.ll<br>
              > index bb9032313179..f5b6705fe78c 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/convert-from-fp16.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/convert-from-fp16.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt -constprop -S < %s | FileCheck %s<br>
              > +; RUN: opt -instsimplify -S < %s | FileCheck %s<br>
              >   <br>
              >   ; Verify that we don't crash with an assertion
              failure when constant folding<br>
              >   ; a call to intrinsic 'convert.from.fp16' if the
              return type is not 'float'.<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/copysign.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/copysign.ll<br>
              > similarity index 96%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/copysign.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/copysign.ll<br>
              > index 228ffcb47053..52eb743d827b 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/copysign.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/copysign.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt -S -constprop < %s | FileCheck %s<br>
              > +; RUN: opt -S -instsimplify < %s | FileCheck %s<br>
              >   <br>
              >   declare float @llvm.copysign.f32(float, float)<br>
              >   declare double @llvm.copysign.f64(double, double)<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/div-zero.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/div-zero.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Transforms/ConstProp/div-zero.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/div-zero.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/extractelement-vscale.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/extractelement-vscale.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/extractelement-vscale.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/extractelement-vscale.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/extractvalue.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/extractvalue.ll<br>
              > similarity index 96%<br>
              > rename from
              llvm/test/Transforms/ConstProp/extractvalue.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/extractvalue.ll<br>
              > index 72d6cb714a54..2c29cf0a61a3 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/extractvalue.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/extractvalue.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   %struct = type { i32, [4 x i8] }<br>
              >   <br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/float-to-ptr-cast.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/float-to-ptr-cast.ll<br>
              > similarity index 81%<br>
              > rename from
              llvm/test/Transforms/ConstProp/float-to-ptr-cast.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/float-to-ptr-cast.ll<br>
              > index 937f606bf136..56b1704db0d2 100644<br>
              > ---
              a/llvm/test/Transforms/ConstProp/float-to-ptr-cast.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/float-to-ptr-cast.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   define i32* @test1() {<br>
              >           %X = inttoptr i64 0 to i32*             ;
              <i32*> [#uses=1]<br>
              ><br>
              > diff  --git a/llvm/test/Transforms/ConstProp/fma.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/fma.ll<br>
              > similarity index 99%<br>
              > rename from llvm/test/Transforms/ConstProp/fma.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/fma.ll<br>
              > index e1c46978f9a7..90a6142b956b 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/fma.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/fma.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt -constprop -S < %s | FileCheck %s<br>
              > +; RUN: opt -instsimplify -S < %s | FileCheck %s<br>
              >   <br>
              >   ; Fixes PR20832<br>
              >   ; Make sure that we correctly fold a fused
              multiply-add where operands<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/fneg.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/fneg.ll<br>
              > similarity index 96%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/fneg.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/fneg.ll<br>
              > index 70a2fe2a4bdd..752dfa929eec 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/fneg.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/fneg.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   define float @fneg_constant() {<br>
              >   ; CHECK-LABEL: @fneg_constant(<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/fp-undef.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/fp-undef.ll<br>
              > similarity index 99%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/fp-undef.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/fp-undef.ll<br>
              > index ad9cca7cff91..9d904595f2ca 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/fp-undef.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/fp-undef.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   ; Constant folding - undef undef.<br>
              >   <br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/freeze.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/freeze.ll<br>
              > similarity index 93%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/freeze.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/freeze.ll<br>
              > index 4908f71b924e..ef032a6b1624 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/freeze.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/freeze.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   @g = external global i16, align 1<br>
              >   @g2 = external global i16, align 1<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/funnel-shift.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/funnel-shift.ll<br>
              > similarity index 99%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/funnel-shift.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/funnel-shift.ll<br>
              > index fae29c939216..8533224b8e93 100644<br>
              > ---
              a/llvm/test/Analysis/ConstantFolding/funnel-shift.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/funnel-shift.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S -o - | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S -o - | FileCheck
              %s<br>
              >   <br>
              >   declare i32 @llvm.fshl.i32(i32, i32, i32)<br>
              >   declare i32 @llvm.fshr.i32(i32, i32, i32)<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/gep-alias.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/gep-alias.ll<br>
              > similarity index 97%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/gep-alias.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/gep-alias.ll<br>
              > index 0fcc778a4f25..4b3fcf667979 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/gep-alias.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/gep-alias.ll<br>
              > @@ -1,17 +1,17 @@<br>
              > -; RUN: opt -instcombine -S -o - %s | FileCheck %s<br>
              > -; Test that we don't replace an alias with its
              aliasee when simplifying GEPs.<br>
              > -; In this test case the transformation is invalid
              because it replaces the<br>
              > -; reference to the symbol "b" (which refers to
              whichever instance of "b"<br>
              > -; was chosen by the linker) with a reference to "a"
              (which refers to the<br>
              > -; specific instance of "b" in this module).<br>
              > -<br>
              > -target datalayout =
              "e-m:e-i64:64-f80:128-n8:16:32:64-S128"<br>
              > -target triple = "x86_64-unknown-linux-gnu"<br>
              > -<br>
              > -@a = internal global [3 x i8*] zeroinitializer<br>
              > -@b = linkonce_odr alias [3 x i8*], [3 x i8*]* @a<br>
              > -<br>
              > -define i8** @f() {<br>
              > -  ; CHECK: ret i8** getelementptr ([3 x i8*], [3 x
              i8*]* @b, i64 0, i64 1)<br>
              > -  ret i8** getelementptr ([3 x i8*], [3 x i8*]* @b,
              i64 0, i64 1)<br>
              > -}<br>
              > +; RUN: opt -instcombine -S -o - %s | FileCheck %s<br>
              > +; Test that we don't replace an alias with its
              aliasee when simplifying GEPs.<br>
              > +; In this test case the transformation is invalid
              because it replaces the<br>
              > +; reference to the symbol "b" (which refers to
              whichever instance of "b"<br>
              > +; was chosen by the linker) with a reference to "a"
              (which refers to the<br>
              > +; specific instance of "b" in this module).<br>
              > +<br>
              > +target datalayout =
              "e-m:e-i64:64-f80:128-n8:16:32:64-S128"<br>
              > +target triple = "x86_64-unknown-linux-gnu"<br>
              > +<br>
              > +@a = internal global [3 x i8*] zeroinitializer<br>
              > +@b = linkonce_odr alias [3 x i8*], [3 x i8*]* @a<br>
              > +<br>
              > +define i8** @f() {<br>
              > +  ; CHECK: ret i8** getelementptr ([3 x i8*], [3 x
              i8*]* @b, i64 0, i64 1)<br>
              > +  ret i8** getelementptr ([3 x i8*], [3 x i8*]* @b,
              i64 0, i64 1)<br>
              > +}<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/gep-constanfolding-error.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/gep-constanfolding-error.ll<br>
              > similarity index 98%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/gep-constanfolding-error.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/gep-constanfolding-error.ll<br>
              > index a09fd550715d..ee7112b55268 100644<br>
              > ---
              a/llvm/test/Analysis/ConstantFolding/gep-constanfolding-error.ll<br>
              > +++
b/llvm/test/Transforms/InstSimplify/ConstProp/gep-constanfolding-error.ll<br>
              > @@ -1,52 +1,52 @@<br>
              > -; RUN: opt -gvn -S -o - %s | FileCheck %s<br>
              > -; RUN: opt -newgvn -S -o - %s | FileCheck %s<br>
              > -; Test that the constantfolding getelementptr
              computation results in<br>
              > -; j[5][4][1] (j+239)<br>
              > -; and not [1][4][4][1] (#449) which is an incorrect
              out-of-range error<br>
              > -target datalayout =
              "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"<br>
              > -target triple = "armv7-none-eabi"<br>
              > -<br>
              > -@f = local_unnamed_addr global i32 2, align 4<br>
              > -@t6 = local_unnamed_addr global i32 1, align 4<br>
              > -@j = local_unnamed_addr global [6 x [6 x [7 x i8]]]
              [[6 x [7 x i8]] [[7 x i8] c"\06\00\00\00\00\00\00", [7 x
              i8] zeroinitializer, [7 x i8] zeroinitializer, [7 x i8]
              zeroinitializer, [7 x i8] zeroinitializer, [7 x i8]
              zeroinitializer], [6 x [7 x i8]] zeroinitializer, [6 x [7
              x i8]] zeroinitializer, [6 x [7 x i8]] zeroinitializer, [6
              x [7 x i8]] zeroinitializer, [6 x [7 x i8]]
              zeroinitializer], align 1<br>
              > -@p = internal global i64 0, align 8<br>
              > -@y = local_unnamed_addr global i64* @p, align 4<br>
              > -@b = internal unnamed_addr global i32 0, align 4<br>
              > -@h = common local_unnamed_addr global i16 0, align 2<br>
              > -@a = common local_unnamed_addr global i32 0, align 4<br>
              > -@k = common local_unnamed_addr global i32 0, align 4<br>
              > -@t11 = common local_unnamed_addr global i32 0, align
              4<br>
              > -<br>
              > -; Function Attrs: nounwind<br>
              > -define i32 @main() local_unnamed_addr {<br>
              > -entry:<br>
              > -  %0 = load i32, i32* @t6, align 4<br>
              > -  %inc = add nsw i32 %0, 1<br>
              > -  store i32 %inc, i32* @t6, align 4<br>
              > -  store i16 4, i16* @h, align 2<br>
              > -  %1 = load i32, i32* @a, align 4<br>
              > -  %conv = trunc i32 %1 to i8<br>
              > -  store i32 1, i32* @f, align 4<br>
              > -  %2 = load i64, i64* @p, align 8<br>
              > -  %cmp4 = icmp slt i64 %2, 2<br>
              > -  %conv6 = zext i1 %cmp4 to i8<br>
              > -  %3 = load i16, i16* @h, align 2<br>
              > -  %conv7 = sext i16 %3 to i32<br>
              > -  %add = add nsw i32 %conv7, 1<br>
              > -  %f.promoted = load i32, i32* @f, align 4<br>
              > -  %4 = mul i32 %conv7, 7<br>
              > -  %5 = add i32 %4, 5<br>
              > -  %6 = sub i32 -1, %f.promoted<br>
              > -  %7 = icmp sgt i32 %6, -2<br>
              > -  %smax = select i1 %7, i32 %6, i32 -2<br>
              > -  %8 = sub i32 6, %smax<br>
              > -  %scevgep = getelementptr [6 x [6 x [7 x i8]]], [6
              x [6 x [7 x i8]]]* @j, i32 0, i32 0, i32 %5, i32 %8<br>
              > -  %9 = add i32 %f.promoted, %smax<br>
              > -  %10 = add i32 %9, 2<br>
              > -  call void @llvm.memset.p0i8.i32(i8* %scevgep, i8
              %conv6, i32 %10, i1 false)<br>
              > -; CHECK:  call void @llvm.memset.p0i8.i32(i8*
              getelementptr inbounds ([6 x [6 x [7 x i8]]], [6 x [6 x [7
              x i8]]]* @j, i32 0, i{{32|64}} 5, i{{32|64}} 4, i32 1), i8
              %conv6, i32 1, i1 false)<br>
              > -; CHECK-NOT: call void @llvm.memset.p0i8.i32(i8*
              getelementptr ([6 x [6 x [7 x i8]]], [6 x [6 x [7 x i8]]]*
              @j, i64 1, i64 4, i64 4, i32 1)<br>
              > -  ret i32 0<br>
              > -}<br>
              > -; Function Attrs: argmemonly nounwind<br>
              > -declare void @llvm.memset.p0i8.i32(i8* nocapture
              writeonly, i8, i32, i1)<br>
              > +; RUN: opt -gvn -S -o - %s | FileCheck %s<br>
              > +; RUN: opt -newgvn -S -o - %s | FileCheck %s<br>
              > +; Test that the constantfolding getelementptr
              computation results in<br>
              > +; j[5][4][1] (j+239)<br>
              > +; and not [1][4][4][1] (#449) which is an incorrect
              out-of-range error<br>
              > +target datalayout =
              "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"<br>
              > +target triple = "armv7-none-eabi"<br>
              > +<br>
              > +@f = local_unnamed_addr global i32 2, align 4<br>
              > +@t6 = local_unnamed_addr global i32 1, align 4<br>
              > +@j = local_unnamed_addr global [6 x [6 x [7 x i8]]]
              [[6 x [7 x i8]] [[7 x i8] c"\06\00\00\00\00\00\00", [7 x
              i8] zeroinitializer, [7 x i8] zeroinitializer, [7 x i8]
              zeroinitializer, [7 x i8] zeroinitializer, [7 x i8]
              zeroinitializer], [6 x [7 x i8]] zeroinitializer, [6 x [7
              x i8]] zeroinitializer, [6 x [7 x i8]] zeroinitializer, [6
              x [7 x i8]] zeroinitializer, [6 x [7 x i8]]
              zeroinitializer], align 1<br>
              > +@p = internal global i64 0, align 8<br>
              > +@y = local_unnamed_addr global i64* @p, align 4<br>
              > +@b = internal unnamed_addr global i32 0, align 4<br>
              > +@h = common local_unnamed_addr global i16 0, align 2<br>
              > +@a = common local_unnamed_addr global i32 0, align 4<br>
              > +@k = common local_unnamed_addr global i32 0, align 4<br>
              > +@t11 = common local_unnamed_addr global i32 0, align
              4<br>
              > +<br>
              > +; Function Attrs: nounwind<br>
              > +define i32 @main() local_unnamed_addr {<br>
              > +entry:<br>
              > +  %0 = load i32, i32* @t6, align 4<br>
              > +  %inc = add nsw i32 %0, 1<br>
              > +  store i32 %inc, i32* @t6, align 4<br>
              > +  store i16 4, i16* @h, align 2<br>
              > +  %1 = load i32, i32* @a, align 4<br>
              > +  %conv = trunc i32 %1 to i8<br>
              > +  store i32 1, i32* @f, align 4<br>
              > +  %2 = load i64, i64* @p, align 8<br>
              > +  %cmp4 = icmp slt i64 %2, 2<br>
              > +  %conv6 = zext i1 %cmp4 to i8<br>
              > +  %3 = load i16, i16* @h, align 2<br>
              > +  %conv7 = sext i16 %3 to i32<br>
              > +  %add = add nsw i32 %conv7, 1<br>
              > +  %f.promoted = load i32, i32* @f, align 4<br>
              > +  %4 = mul i32 %conv7, 7<br>
              > +  %5 = add i32 %4, 5<br>
              > +  %6 = sub i32 -1, %f.promoted<br>
              > +  %7 = icmp sgt i32 %6, -2<br>
              > +  %smax = select i1 %7, i32 %6, i32 -2<br>
              > +  %8 = sub i32 6, %smax<br>
              > +  %scevgep = getelementptr [6 x [6 x [7 x i8]]], [6
              x [6 x [7 x i8]]]* @j, i32 0, i32 0, i32 %5, i32 %8<br>
              > +  %9 = add i32 %f.promoted, %smax<br>
              > +  %10 = add i32 %9, 2<br>
              > +  call void @llvm.memset.p0i8.i32(i8* %scevgep, i8
              %conv6, i32 %10, i1 false)<br>
              > +; CHECK:  call void @llvm.memset.p0i8.i32(i8*
              getelementptr inbounds ([6 x [6 x [7 x i8]]], [6 x [6 x [7
              x i8]]]* @j, i32 0, i{{32|64}} 5, i{{32|64}} 4, i32 1), i8
              %conv6, i32 1, i1 false)<br>
              > +; CHECK-NOT: call void @llvm.memset.p0i8.i32(i8*
              getelementptr ([6 x [6 x [7 x i8]]], [6 x [6 x [7 x i8]]]*
              @j, i64 1, i64 4, i64 4, i32 1)<br>
              > +  ret i32 0<br>
              > +}<br>
              > +; Function Attrs: argmemonly nounwind<br>
              > +declare void @llvm.memset.p0i8.i32(i8* nocapture
              writeonly, i8, i32, i1)<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/gep-zeroinit-vector.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/gep-zeroinit-vector.ll<br>
              > similarity index 94%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/gep-zeroinit-vector.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/gep-zeroinit-vector.ll<br>
              > index 03d27e9fb6c5..7ec1aa833fc4 100644<br>
              > ---
              a/llvm/test/Analysis/ConstantFolding/gep-zeroinit-vector.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/gep-zeroinit-vector.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S -o - | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S -o - | FileCheck
              %s<br>
              >   <br>
              >   ; Testcase that verify that we don't get a faulty
              bitcast that cast between<br>
              >   ;<br>
              > diff erent sizes.<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/gep.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/gep.ll<br>
              > similarity index 98%<br>
              > rename from llvm/test/Analysis/ConstantFolding/gep.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/gep.ll<br>
              > index 259618652ea9..103226045037 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/gep.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/gep.ll<br>
              > @@ -1,27 +1,27 @@<br>
              > -; RUN: opt -instcombine -S -o - %s | FileCheck %s<br>
              > -; Tests that we preserve the inrange attribute on
              indices where possible.<br>
              > -<br>
              > -target datalayout =
              "e-m:e-i64:64-f80:128-n8:16:32:64-S128"<br>
              > -target triple = "x86_64-unknown-linux-gnu"<br>
              > -<br>
              > -%struct.A = type { i32 (...)** }<br>
              > -<br>
              > -@vt = external global [3 x i8*]<br>
              > -<br>
              > -; CHECK: define i32 (...)** @f0()<br>
              > -define i32 (...)** @f0() {<br>
              > -  ; CHECK-NEXT: ret i32 (...)** bitcast (i8**
              getelementptr inbounds ([3 x i8*], [3 x i8*]* @vt, inrange
              i64 0, i64 2) to i32 (...)**<br>
              > -  ret i32 (...)** getelementptr (i32 (...)*, i32
              (...)** bitcast (i8** getelementptr inbounds ([3 x i8*],
              [3 x i8*]* @vt, inrange i64 0, i64 1) to i32 (...)**), i64
              1)<br>
              > -}<br>
              > -<br>
              > -; CHECK: define i32 (...)** @f1()<br>
              > -define i32 (...)** @f1() {<br>
              > -  ; CHECK-NEXT: ret i32 (...)** getelementptr (i32
              (...)*, i32 (...)** bitcast (i8** getelementptr inbounds
              ([3 x i8*], [3 x i8*]* @vt, i64 0, inrange i64 1) to i32
              (...)**), i64 1)<br>
              > -  ret i32 (...)** getelementptr (i32 (...)*, i32
              (...)** bitcast (i8** getelementptr inbounds ([3 x i8*],
              [3 x i8*]* @vt, i64 0, inrange i64 1) to i32 (...)**), i64
              1)<br>
              > -}<br>
              > -<br>
              > -; CHECK: define i32 (...)** @f2()<br>
              > -define i32 (...)** @f2() {<br>
              > -  ; CHECK-NEXT: ret i32 (...)** getelementptr (i32
              (...)*, i32 (...)** bitcast (i8** getelementptr inbounds
              ([3 x i8*], [3 x i8*]* @vt, i64 0, inrange i64 1) to i32
              (...)**), i64 3)<br>
              > -  ret i32 (...)** getelementptr (i32 (...)*, i32
              (...)** bitcast (i8** getelementptr inbounds ([3 x i8*],
              [3 x i8*]* @vt, i64 0, inrange i64 1) to i32 (...)**), i64
              3)<br>
              > -}<br>
              > +; RUN: opt -instcombine -S -o - %s | FileCheck %s<br>
              > +; Tests that we preserve the inrange attribute on
              indices where possible.<br>
              > +<br>
              > +target datalayout =
              "e-m:e-i64:64-f80:128-n8:16:32:64-S128"<br>
              > +target triple = "x86_64-unknown-linux-gnu"<br>
              > +<br>
              > +%struct.A = type { i32 (...)** }<br>
              > +<br>
              > +@vt = external global [3 x i8*]<br>
              > +<br>
              > +; CHECK: define i32 (...)** @f0()<br>
              > +define i32 (...)** @f0() {<br>
              > +  ; CHECK-NEXT: ret i32 (...)** bitcast (i8**
              getelementptr inbounds ([3 x i8*], [3 x i8*]* @vt, inrange
              i64 0, i64 2) to i32 (...)**<br>
              > +  ret i32 (...)** getelementptr (i32 (...)*, i32
              (...)** bitcast (i8** getelementptr inbounds ([3 x i8*],
              [3 x i8*]* @vt, inrange i64 0, i64 1) to i32 (...)**), i64
              1)<br>
              > +}<br>
              > +<br>
              > +; CHECK: define i32 (...)** @f1()<br>
              > +define i32 (...)** @f1() {<br>
              > +  ; CHECK-NEXT: ret i32 (...)** getelementptr (i32
              (...)*, i32 (...)** bitcast (i8** getelementptr inbounds
              ([3 x i8*], [3 x i8*]* @vt, i64 0, inrange i64 1) to i32
              (...)**), i64 1)<br>
              > +  ret i32 (...)** getelementptr (i32 (...)*, i32
              (...)** bitcast (i8** getelementptr inbounds ([3 x i8*],
              [3 x i8*]* @vt, i64 0, inrange i64 1) to i32 (...)**), i64
              1)<br>
              > +}<br>
              > +<br>
              > +; CHECK: define i32 (...)** @f2()<br>
              > +define i32 (...)** @f2() {<br>
              > +  ; CHECK-NEXT: ret i32 (...)** getelementptr (i32
              (...)*, i32 (...)** bitcast (i8** getelementptr inbounds
              ([3 x i8*], [3 x i8*]* @vt, i64 0, inrange i64 1) to i32
              (...)**), i64 3)<br>
              > +  ret i32 (...)** getelementptr (i32 (...)*, i32
              (...)** bitcast (i8** getelementptr inbounds ([3 x i8*],
              [3 x i8*]* @vt, i64 0, inrange i64 1) to i32 (...)**), i64
              3)<br>
              > +}<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/insertvalue.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/insertvalue.ll<br>
              > similarity index 98%<br>
              > rename from
              llvm/test/Transforms/ConstProp/insertvalue.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/insertvalue.ll<br>
              > index 606f7ddc679c..778a9734d19e 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/insertvalue.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/insertvalue.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   %struct = type { i32, [4 x i8] }<br>
              >   <br>
              ><br>
              > diff  --git a/llvm/test/Transforms/ConstProp/loads.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/loads.ll<br>
              > similarity index 100%<br>
              > rename from llvm/test/Transforms/ConstProp/loads.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/loads.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/logicaltest.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/logicaltest.ll<br>
              > similarity index 93%<br>
              > rename from
              llvm/test/Transforms/ConstProp/logicaltest.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/logicaltest.ll<br>
              > index abd3275a4f74..e097d40c54e4 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/logicaltest.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/logicaltest.ll<br>
              > @@ -1,6 +1,6 @@<br>
              >   ; Ensure constant propagation of logical
              instructions is working correctly.<br>
              >   <br>
              > -; RUN: opt < %s -constprop -die -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -die -S | FileCheck
              %s<br>
              >   ; CHECK-NOT:     {{and|or|xor}}<br>
              >   <br>
              >   define i32 @test1() {<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/math-1.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/math-1.ll<br>
              > similarity index 95%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/math-1.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/math-1.ll<br>
              > index 595095017102..b57397381b64 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/math-1.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/math-1.ll<br>
              > @@ -1,195 +1,195 @@<br>
              > -; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt -early-cse -S -o - %s | FileCheck %s<br>
              > -<br>
              > -declare double @acos(double)<br>
              > -define double @f_acos() {<br>
              > -; CHECK-LABEL: @f_acos(<br>
              > -; CHECK-NEXT:    ret double 0.000000e+00<br>
              > -;<br>
              > -  %res = tail call fast double @acos(double 1.0)<br>
              > -  ret double %res<br>
              > -}<br>
              > -<br>
              > -declare float @asinf(float)<br>
              > -define float @f_asinf() {<br>
              > -; CHECK-LABEL: @f_asinf(<br>
              > -; CHECK-NEXT:    ret float 0x3FF921FB{{.+}}<br>
              > -;<br>
              > -  %res = tail call fast float @asinf(float 1.0)<br>
              > -  ret float %res<br>
              > -}<br>
              > -<br>
              > -declare double @atan(double)<br>
              > -define double @f_atan() {<br>
              > -; CHECK-LABEL: @f_atan(<br>
              > -; CHECK-NEXT:    [[RES:%.*]] = tail call fast double
              @atan(double 1.000000e+00)<br>
              > -; CHECK-NEXT:    ret double 0x3FE921FB<br>
              > -;<br>
              > -  %res = tail call fast double @atan(double 1.0)<br>
              > -  ret double %res<br>
              > -}<br>
              > -<br>
              > -declare float @cosf(float)<br>
              > -define float @f_cosf() {<br>
              > -; CHECK-LABEL: @f_cosf(<br>
              > -; CHECK-NEXT:    ret float 0x3FE14A2{{.+}}<br>
              > -;<br>
              > -  %res = tail call fast float @cosf(float 1.0)<br>
              > -  ret float %res<br>
              > -}<br>
              > -<br>
              > -declare float @llvm.cos.f32(float)<br>
              > -define float @i_cosf() {<br>
              > -; CHECK-LABEL: @i_cosf(<br>
              > -; CHECK-NEXT:    ret float 0x3FE14A2<br>
              > -;<br>
              > -  %res = tail call fast float @llvm.cos.f32(float
              1.0)<br>
              > -  ret float %res<br>
              > -}<br>
              > -<br>
              > -declare double @cosh(double)<br>
              > -define double @f_cosh() {<br>
              > -; CHECK-LABEL: @f_cosh(<br>
              > -; CHECK-NEXT:    ret double 0x3FF8B075{{.+}}<br>
              > -;<br>
              > -  %res = tail call fast double @cosh(double 1.0)<br>
              > -  ret double %res<br>
              > -}<br>
              > -<br>
              > -declare float @expf(float)<br>
              > -define float @f_expf() {<br>
              > -; CHECK-LABEL: @f_expf(<br>
              > -; CHECK-NEXT:    ret float 0x4005BF0A{{.+}}<br>
              > -;<br>
              > -  %res = tail call fast float @expf(float 1.0)<br>
              > -  ret float %res<br>
              > -}<br>
              > -<br>
              > -declare float @llvm.exp.f32(float)<br>
              > -define float @i_expf() {<br>
              > -; CHECK-LABEL: @i_expf(<br>
              > -; CHECK-NEXT:    ret float 0x4005BF0A{{.+}}<br>
              > -;<br>
              > -  %res = tail call fast float @llvm.exp.f32(float
              1.0)<br>
              > -  ret float %res<br>
              > -}<br>
              > -<br>
              > -declare double @exp2(double)<br>
              > -define double @f_exp2() {<br>
              > -; CHECK-LABEL: @f_exp2(<br>
              > -; CHECK-NEXT:    ret double 2.000000e+00<br>
              > -;<br>
              > -  %res = tail call fast double @exp2(double 1.0)<br>
              > -  ret double %res<br>
              > -}<br>
              > -<br>
              > -declare double @llvm.exp2.f64(double)<br>
              > -define double @i_exp2() {<br>
              > -; CHECK-LABEL: @i_exp2(<br>
              > -; CHECK-NEXT:    ret double 2.000000e+00<br>
              > -;<br>
              > -  %res = tail call fast double @llvm.exp2.f64(double
              1.0)<br>
              > -  ret double %res<br>
              > -}<br>
              > -<br>
              > -; FIXME: exp10() is not widely supported.<br>
              > -declare float @exp10f(float)<br>
              > -define float @f_exp10f() {<br>
              > -; CHECK-LABEL: @f_exp10f(<br>
              > -; CHECK-NEXT:    [[RES:%.*]] = tail call float
              @exp10f(float 1.000000e+00)<br>
              > -; CHECK-NEXT:    ret float [[RES]]<br>
              > -;<br>
              > -  %res = tail call float @exp10f(float 1.0)<br>
              > -  ret float %res<br>
              > -}<br>
              > -<br>
              > -declare double @log(double)<br>
              > -define double @f_log() {<br>
              > -; CHECK-LABEL: @f_log(<br>
              > -; CHECK-NEXT:    ret double 0.000000e+00<br>
              > -;<br>
              > -  %res = tail call fast double @log(double 1.0)<br>
              > -  ret double %res<br>
              > -}<br>
              > -<br>
              > -declare double @llvm.log.f64(double)<br>
              > -define double @i_log() {<br>
              > -; CHECK-LABEL: @i_log(<br>
              > -; CHECK-NEXT:    ret double 0.000000e+00<br>
              > -;<br>
              > -  %res = tail call fast double @llvm.log.f64(double
              1.0)<br>
              > -  ret double %res<br>
              > -}<br>
              > -<br>
              > -declare float @log2f(float)<br>
              > -define float @f_log2f() {<br>
              > -; CHECK-LABEL: @f_log2f(<br>
              > -; CHECK-NEXT:    ret float 0.000000e+00<br>
              > -;<br>
              > -  %res = tail call fast float @log2f(float 1.0)<br>
              > -  ret float %res<br>
              > -}<br>
              > -<br>
              > -declare float @llvm.log2.f32(float)<br>
              > -define float @i_log2f() {<br>
              > -; CHECK-LABEL: @i_log2f(<br>
              > -; CHECK-NEXT:    ret float 0.000000e+00<br>
              > -;<br>
              > -  %res = tail call fast float @llvm.log2.f32(float
              1.0)<br>
              > -  ret float %res<br>
              > -}<br>
              > -<br>
              > -declare double @log10(double)<br>
              > -define double @f_log10() {<br>
              > -; CHECK-LABEL: @f_log10(<br>
              > -; CHECK-NEXT:    ret double 0.000000e+00<br>
              > -;<br>
              > -  %res = tail call fast double @log10(double 1.0)<br>
              > -  ret double %res<br>
              > -}<br>
              > -<br>
              > -declare float @sinf(float)<br>
              > -define float @f_sinf() {<br>
              > -; CHECK-LABEL: @f_sinf(<br>
              > -; CHECK-NEXT:    ret float 0x3FEAED54{{.+}}<br>
              > -;<br>
              > -  %res = tail call fast float @sinf(float 1.0)<br>
              > -  ret float %res<br>
              > -}<br>
              > -<br>
              > -declare double @sinh(double)<br>
              > -define double @f_sinh() {<br>
              > -; CHECK-LABEL: @f_sinh(<br>
              > -; CHECK-NEXT:    ret double 0x3FF2CD9F{{.+}}<br>
              > -;<br>
              > -  %res = tail call fast double @sinh(double 1.0)<br>
              > -  ret double %res<br>
              > -}<br>
              > -<br>
              > -declare float @sqrtf(float)<br>
              > -define float @f_sqrtf() {<br>
              > -; CHECK-LABEL: @f_sqrtf(<br>
              > -; CHECK-NEXT:    ret float 1.000000e+00<br>
              > -;<br>
              > -  %res = tail call fast float @sqrtf(float 1.0)<br>
              > -  ret float %res<br>
              > -}<br>
              > -<br>
              > -declare double @tan(double)<br>
              > -define double @f_tan() {<br>
              > -; CHECK-LABEL: @f_tan(<br>
              > -; CHECK-NEXT:    ret double 0x3FF8EB24{{.+}}<br>
              > -;<br>
              > -  %res = tail call fast double @tan(double 1.0)<br>
              > -  ret double %res<br>
              > -}<br>
              > -<br>
              > -declare float @tanhf(float)<br>
              > -define float @f_tanhf() {<br>
              > -; CHECK-LABEL: @f_tanhf(<br>
              > -; CHECK-NEXT:    [[RES:%.*]] = tail call fast float
              @tanhf(float 1.000000e+00)<br>
              > -; CHECK-NEXT:    ret float 0x3FE85EFA{{.+}}<br>
              > -;<br>
              > -  %res = tail call fast float @tanhf(float 1.0)<br>
              > -  ret float %res<br>
              > -}<br>
              > +; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > +; RUN: opt -early-cse -S -o - %s | FileCheck %s<br>
              > +<br>
              > +declare double @acos(double)<br>
              > +define double @f_acos() {<br>
              > +; CHECK-LABEL: @f_acos(<br>
              > +; CHECK-NEXT:    ret double 0.000000e+00<br>
              > +;<br>
              > +  %res = tail call fast double @acos(double 1.0)<br>
              > +  ret double %res<br>
              > +}<br>
              > +<br>
              > +declare float @asinf(float)<br>
              > +define float @f_asinf() {<br>
              > +; CHECK-LABEL: @f_asinf(<br>
              > +; CHECK-NEXT:    ret float 0x3FF921FB{{.+}}<br>
              > +;<br>
              > +  %res = tail call fast float @asinf(float 1.0)<br>
              > +  ret float %res<br>
              > +}<br>
              > +<br>
              > +declare double @atan(double)<br>
              > +define double @f_atan() {<br>
              > +; CHECK-LABEL: @f_atan(<br>
              > +; CHECK-NEXT:    [[RES:%.*]] = tail call fast double
              @atan(double 1.000000e+00)<br>
              > +; CHECK-NEXT:    ret double 0x3FE921FB<br>
              > +;<br>
              > +  %res = tail call fast double @atan(double 1.0)<br>
              > +  ret double %res<br>
              > +}<br>
              > +<br>
              > +declare float @cosf(float)<br>
              > +define float @f_cosf() {<br>
              > +; CHECK-LABEL: @f_cosf(<br>
              > +; CHECK-NEXT:    ret float 0x3FE14A2{{.+}}<br>
              > +;<br>
              > +  %res = tail call fast float @cosf(float 1.0)<br>
              > +  ret float %res<br>
              > +}<br>
              > +<br>
              > +declare float @llvm.cos.f32(float)<br>
              > +define float @i_cosf() {<br>
              > +; CHECK-LABEL: @i_cosf(<br>
              > +; CHECK-NEXT:    ret float 0x3FE14A2<br>
              > +;<br>
              > +  %res = tail call fast float @llvm.cos.f32(float
              1.0)<br>
              > +  ret float %res<br>
              > +}<br>
              > +<br>
              > +declare double @cosh(double)<br>
              > +define double @f_cosh() {<br>
              > +; CHECK-LABEL: @f_cosh(<br>
              > +; CHECK-NEXT:    ret double 0x3FF8B075{{.+}}<br>
              > +;<br>
              > +  %res = tail call fast double @cosh(double 1.0)<br>
              > +  ret double %res<br>
              > +}<br>
              > +<br>
              > +declare float @expf(float)<br>
              > +define float @f_expf() {<br>
              > +; CHECK-LABEL: @f_expf(<br>
              > +; CHECK-NEXT:    ret float 0x4005BF0A{{.+}}<br>
              > +;<br>
              > +  %res = tail call fast float @expf(float 1.0)<br>
              > +  ret float %res<br>
              > +}<br>
              > +<br>
              > +declare float @llvm.exp.f32(float)<br>
              > +define float @i_expf() {<br>
              > +; CHECK-LABEL: @i_expf(<br>
              > +; CHECK-NEXT:    ret float 0x4005BF0A{{.+}}<br>
              > +;<br>
              > +  %res = tail call fast float @llvm.exp.f32(float
              1.0)<br>
              > +  ret float %res<br>
              > +}<br>
              > +<br>
              > +declare double @exp2(double)<br>
              > +define double @f_exp2() {<br>
              > +; CHECK-LABEL: @f_exp2(<br>
              > +; CHECK-NEXT:    ret double 2.000000e+00<br>
              > +;<br>
              > +  %res = tail call fast double @exp2(double 1.0)<br>
              > +  ret double %res<br>
              > +}<br>
              > +<br>
              > +declare double @llvm.exp2.f64(double)<br>
              > +define double @i_exp2() {<br>
              > +; CHECK-LABEL: @i_exp2(<br>
              > +; CHECK-NEXT:    ret double 2.000000e+00<br>
              > +;<br>
              > +  %res = tail call fast double @llvm.exp2.f64(double
              1.0)<br>
              > +  ret double %res<br>
              > +}<br>
              > +<br>
              > +; FIXME: exp10() is not widely supported.<br>
              > +declare float @exp10f(float)<br>
              > +define float @f_exp10f() {<br>
              > +; CHECK-LABEL: @f_exp10f(<br>
              > +; CHECK-NEXT:    [[RES:%.*]] = tail call float
              @exp10f(float 1.000000e+00)<br>
              > +; CHECK-NEXT:    ret float [[RES]]<br>
              > +;<br>
              > +  %res = tail call float @exp10f(float 1.0)<br>
              > +  ret float %res<br>
              > +}<br>
              > +<br>
              > +declare double @log(double)<br>
              > +define double @f_log() {<br>
              > +; CHECK-LABEL: @f_log(<br>
              > +; CHECK-NEXT:    ret double 0.000000e+00<br>
              > +;<br>
              > +  %res = tail call fast double @log(double 1.0)<br>
              > +  ret double %res<br>
              > +}<br>
              > +<br>
              > +declare double @llvm.log.f64(double)<br>
              > +define double @i_log() {<br>
              > +; CHECK-LABEL: @i_log(<br>
              > +; CHECK-NEXT:    ret double 0.000000e+00<br>
              > +;<br>
              > +  %res = tail call fast double @llvm.log.f64(double
              1.0)<br>
              > +  ret double %res<br>
              > +}<br>
              > +<br>
              > +declare float @log2f(float)<br>
              > +define float @f_log2f() {<br>
              > +; CHECK-LABEL: @f_log2f(<br>
              > +; CHECK-NEXT:    ret float 0.000000e+00<br>
              > +;<br>
              > +  %res = tail call fast float @log2f(float 1.0)<br>
              > +  ret float %res<br>
              > +}<br>
              > +<br>
              > +declare float @llvm.log2.f32(float)<br>
              > +define float @i_log2f() {<br>
              > +; CHECK-LABEL: @i_log2f(<br>
              > +; CHECK-NEXT:    ret float 0.000000e+00<br>
              > +;<br>
              > +  %res = tail call fast float @llvm.log2.f32(float
              1.0)<br>
              > +  ret float %res<br>
              > +}<br>
              > +<br>
              > +declare double @log10(double)<br>
              > +define double @f_log10() {<br>
              > +; CHECK-LABEL: @f_log10(<br>
              > +; CHECK-NEXT:    ret double 0.000000e+00<br>
              > +;<br>
              > +  %res = tail call fast double @log10(double 1.0)<br>
              > +  ret double %res<br>
              > +}<br>
              > +<br>
              > +declare float @sinf(float)<br>
              > +define float @f_sinf() {<br>
              > +; CHECK-LABEL: @f_sinf(<br>
              > +; CHECK-NEXT:    ret float 0x3FEAED54{{.+}}<br>
              > +;<br>
              > +  %res = tail call fast float @sinf(float 1.0)<br>
              > +  ret float %res<br>
              > +}<br>
              > +<br>
              > +declare double @sinh(double)<br>
              > +define double @f_sinh() {<br>
              > +; CHECK-LABEL: @f_sinh(<br>
              > +; CHECK-NEXT:    ret double 0x3FF2CD9F{{.+}}<br>
              > +;<br>
              > +  %res = tail call fast double @sinh(double 1.0)<br>
              > +  ret double %res<br>
              > +}<br>
              > +<br>
              > +declare float @sqrtf(float)<br>
              > +define float @f_sqrtf() {<br>
              > +; CHECK-LABEL: @f_sqrtf(<br>
              > +; CHECK-NEXT:    ret float 1.000000e+00<br>
              > +;<br>
              > +  %res = tail call fast float @sqrtf(float 1.0)<br>
              > +  ret float %res<br>
              > +}<br>
              > +<br>
              > +declare double @tan(double)<br>
              > +define double @f_tan() {<br>
              > +; CHECK-LABEL: @f_tan(<br>
              > +; CHECK-NEXT:    ret double 0x3FF8EB24{{.+}}<br>
              > +;<br>
              > +  %res = tail call fast double @tan(double 1.0)<br>
              > +  ret double %res<br>
              > +}<br>
              > +<br>
              > +declare float @tanhf(float)<br>
              > +define float @f_tanhf() {<br>
              > +; CHECK-LABEL: @f_tanhf(<br>
              > +; CHECK-NEXT:    [[RES:%.*]] = tail call fast float
              @tanhf(float 1.000000e+00)<br>
              > +; CHECK-NEXT:    ret float 0x3FE85EFA{{.+}}<br>
              > +;<br>
              > +  %res = tail call fast float @tanhf(float 1.0)<br>
              > +  ret float %res<br>
              > +}<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/math-2.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/math-2.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/math-2.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/math-2.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/min-max.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/min-max.ll<br>
              > similarity index 99%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/min-max.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/min-max.ll<br>
              > index c01fd23683d1..4ef2fbf13de7 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/min-max.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/min-max.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt -constprop -S < %s | FileCheck %s<br>
              > +; RUN: opt -instsimplify -S < %s | FileCheck %s<br>
              >   <br>
              >   declare float @llvm.minnum.f32(float, float)<br>
              >   declare <4 x float> @llvm.minnum.v4f32(<4
              x float>, <4 x float>)<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/overflow-ops.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/overflow-ops.ll<br>
              > similarity index 98%<br>
              > rename from
              llvm/test/Transforms/ConstProp/overflow-ops.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/overflow-ops.ll<br>
              > index 1d090d5d0ea1..a8c10748e779 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/overflow-ops.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/overflow-ops.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s
              --check-prefixes=CHECK,CONSTPROP<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s
              --check-prefixes=CHECK,CONSTPROP<br>
              >   ; RUN: opt < %s -instsimplify -S | FileCheck %s
              --check-prefixes=CHECK,INSTSIMPLIFY<br>
              >   ; We must *NOT* have any check-lines with prefixes
              other than CHECK here.<br>
              >   ; If we do, that means the rules are<br>
              > diff erent between the passes.<br>
              ><br>
              > diff  --git a/llvm/test/Transforms/ConstProp/phi.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/phi.ll<br>
              > similarity index 87%<br>
              > rename from llvm/test/Transforms/ConstProp/phi.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/phi.ll<br>
              > index c65d34cc933a..74dc328b8a6a 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/phi.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/phi.ll<br>
              > @@ -1,7 +1,7 @@<br>
              >   ; This is a basic sanity check for constant
              propagation.  The add instruction<br>
              >   ; should be eliminated.<br>
              >   <br>
              > -; RUN: opt < %s -constprop -die -S | not grep phi<br>
              > +; RUN: opt < %s -instsimplify -die -S | not grep
              phi<br>
              >   <br>
              >   define i32 @test(i1 %B) {<br>
              >   BB0:<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/remtest.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/remtest.ll<br>
              > similarity index 91%<br>
              > rename from llvm/test/Transforms/ConstProp/remtest.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/remtest.ll<br>
              > index efd2d48332a2..3e6fc8dfcb13 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/remtest.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/remtest.ll<br>
              > @@ -1,6 +1,6 @@<br>
              >   ; Ensure constant propagation of remainder
              instructions is working correctly.<br>
              >   <br>
              > -; RUN: opt < %s -constprop -die -S | not grep rem<br>
              > +; RUN: opt < %s -instsimplify -die -S | not grep
              rem<br>
              >   <br>
              >   define i32 @test1() {<br>
              >           %R = srem i32 4, 3              ;
              <i32> [#uses=1]<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/rint.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/rint.ll<br>
              > similarity index 96%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/rint.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/rint.ll<br>
              > index 9ad794d6094b..1c88bab81a39 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/rint.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/rint.ll<br>
              > @@ -1,109 +1,109 @@<br>
              > -; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt -S -early-cse < %s | FileCheck %s<br>
              > -<br>
              > -declare float @nearbyintf(float) #0<br>
              > -declare float @llvm.nearbyint.f32(float) #0<br>
              > -declare double @nearbyint(double) #0<br>
              > -declare double @llvm.nearbyint.f64(double) #0<br>
              > -declare float @rintf(float) #0<br>
              > -declare float @llvm.rint.f32(float) #0<br>
              > -declare double @rint(double) #0<br>
              > -declare double @llvm.rint.f64(double) #0<br>
              > -<br>
              > -define float @constant_fold_rint_f32_01() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_rint_f32_01(<br>
              > -; CHECK-NEXT:    ret float 1.000000e+00<br>
              > -;<br>
              > -  %x = call float @nearbyintf(float 1.25) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -define float @constant_fold_rint_f32_02() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_rint_f32_02(<br>
              > -; CHECK-NEXT:    ret float -1.000000e+00<br>
              > -;<br>
              > -  %x = call float @llvm.nearbyint.f32(float -1.25)
              #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -define float @constant_fold_rint_f32_03() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_rint_f32_03(<br>
              > -; CHECK-NEXT:    ret float 2.000000e+00<br>
              > -;<br>
              > -  %x = call float @rintf(float 1.5) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -define float @constant_fold_rint_f32_04() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_rint_f32_04(<br>
              > -; CHECK-NEXT:    ret float -2.000000e+00<br>
              > -;<br>
              > -  %x = call float @llvm.rint.f32(float -1.5) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -define float @constant_fold_rint_f32_05() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_rint_f32_05(<br>
              > -; CHECK-NEXT:    ret float 3.000000e+00<br>
              > -;<br>
              > -  %x = call float @nearbyintf(float 2.75) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -define float @constant_fold_rint_f32_06() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_rint_f32_06(<br>
              > -; CHECK-NEXT:    ret float -3.000000e+00<br>
              > -;<br>
              > -  %x = call float @llvm.nearbyint.f32(float -2.75)
              #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -define double @constant_fold_rint_f64_01() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_rint_f64_01(<br>
              > -; CHECK-NEXT:    ret double 1.000000e+00<br>
              > -;<br>
              > -  %x = call double @rint(double 1.3) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -define double @constant_fold_rint_f64_02() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_rint_f64_02(<br>
              > -; CHECK-NEXT:    ret double -1.000000e+00<br>
              > -;<br>
              > -  %x = call double @llvm.rint.f64(double -1.3) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -define double @constant_fold_rint_f64_03() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_rint_f64_03(<br>
              > -; CHECK-NEXT:    ret double 2.000000e+00<br>
              > -;<br>
              > -  %x = call double @nearbyint(double 1.5) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -define double @constant_fold_rint_f64_04() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_rint_f64_04(<br>
              > -; CHECK-NEXT:    ret double -2.000000e+00<br>
              > -;<br>
              > -  %x = call double @llvm.nearbyint.f64(double -1.5)
              #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -define double @constant_fold_rint_f64_05() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_rint_f64_05(<br>
              > -; CHECK-NEXT:    ret double 3.000000e+00<br>
              > -;<br>
              > -  %x = call double @rint(double 2.7) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -define double @constant_fold_rint_f64_06() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_rint_f64_06(<br>
              > -; CHECK-NEXT:    ret double -3.000000e+00<br>
              > -;<br>
              > -  %x = call double @llvm.rint.f64(double -2.7) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -attributes #0 = { nounwind readnone }<br>
              > +; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > +; RUN: opt -S -early-cse < %s | FileCheck %s<br>
              > +<br>
              > +declare float @nearbyintf(float) #0<br>
              > +declare float @llvm.nearbyint.f32(float) #0<br>
              > +declare double @nearbyint(double) #0<br>
              > +declare double @llvm.nearbyint.f64(double) #0<br>
              > +declare float @rintf(float) #0<br>
              > +declare float @llvm.rint.f32(float) #0<br>
              > +declare double @rint(double) #0<br>
              > +declare double @llvm.rint.f64(double) #0<br>
              > +<br>
              > +define float @constant_fold_rint_f32_01() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_rint_f32_01(<br>
              > +; CHECK-NEXT:    ret float 1.000000e+00<br>
              > +;<br>
              > +  %x = call float @nearbyintf(float 1.25) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +define float @constant_fold_rint_f32_02() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_rint_f32_02(<br>
              > +; CHECK-NEXT:    ret float -1.000000e+00<br>
              > +;<br>
              > +  %x = call float @llvm.nearbyint.f32(float -1.25)
              #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +define float @constant_fold_rint_f32_03() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_rint_f32_03(<br>
              > +; CHECK-NEXT:    ret float 2.000000e+00<br>
              > +;<br>
              > +  %x = call float @rintf(float 1.5) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +define float @constant_fold_rint_f32_04() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_rint_f32_04(<br>
              > +; CHECK-NEXT:    ret float -2.000000e+00<br>
              > +;<br>
              > +  %x = call float @llvm.rint.f32(float -1.5) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +define float @constant_fold_rint_f32_05() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_rint_f32_05(<br>
              > +; CHECK-NEXT:    ret float 3.000000e+00<br>
              > +;<br>
              > +  %x = call float @nearbyintf(float 2.75) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +define float @constant_fold_rint_f32_06() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_rint_f32_06(<br>
              > +; CHECK-NEXT:    ret float -3.000000e+00<br>
              > +;<br>
              > +  %x = call float @llvm.nearbyint.f32(float -2.75)
              #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +define double @constant_fold_rint_f64_01() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_rint_f64_01(<br>
              > +; CHECK-NEXT:    ret double 1.000000e+00<br>
              > +;<br>
              > +  %x = call double @rint(double 1.3) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +define double @constant_fold_rint_f64_02() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_rint_f64_02(<br>
              > +; CHECK-NEXT:    ret double -1.000000e+00<br>
              > +;<br>
              > +  %x = call double @llvm.rint.f64(double -1.3) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +define double @constant_fold_rint_f64_03() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_rint_f64_03(<br>
              > +; CHECK-NEXT:    ret double 2.000000e+00<br>
              > +;<br>
              > +  %x = call double @nearbyint(double 1.5) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +define double @constant_fold_rint_f64_04() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_rint_f64_04(<br>
              > +; CHECK-NEXT:    ret double -2.000000e+00<br>
              > +;<br>
              > +  %x = call double @llvm.nearbyint.f64(double -1.5)
              #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +define double @constant_fold_rint_f64_05() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_rint_f64_05(<br>
              > +; CHECK-NEXT:    ret double 3.000000e+00<br>
              > +;<br>
              > +  %x = call double @rint(double 2.7) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +define double @constant_fold_rint_f64_06() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_rint_f64_06(<br>
              > +; CHECK-NEXT:    ret double -3.000000e+00<br>
              > +;<br>
              > +  %x = call double @llvm.rint.f64(double -2.7) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +attributes #0 = { nounwind readnone }<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/round.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/round.ll<br>
              > similarity index 96%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/round.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/round.ll<br>
              > index d5b847810d5e..a636160dd12a 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/round.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/round.ll<br>
              > @@ -1,92 +1,92 @@<br>
              > -; RUN: opt -S -early-cse < %s | FileCheck %s<br>
              > -<br>
              > -declare float @roundf(float) #0<br>
              > -declare float @llvm.round.f32(float) #0<br>
              > -declare double @round(double) #0<br>
              > -declare double @llvm.round.f64(double) #0<br>
              > -<br>
              > -; CHECK-LABEL: @constant_fold_round_f32_01<br>
              > -; CHECK-NEXT: ret float 1.000000e+00<br>
              > -define float @constant_fold_round_f32_01() #0 {<br>
              > -  %x = call float @roundf(float 1.25) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: @constant_fold_round_f32_02<br>
              > -; CHECK-NEXT: ret float -1.000000e+00<br>
              > -define float @constant_fold_round_f32_02() #0 {<br>
              > -  %x = call float @llvm.round.f32(float -1.25) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: @constant_fold_round_f32_03<br>
              > -; CHECK-NEXT: ret float 2.000000e+00<br>
              > -define float @constant_fold_round_f32_03() #0 {<br>
              > -  %x = call float @roundf(float 1.5) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: @constant_fold_round_f32_04<br>
              > -; CHECK-NEXT: ret float -2.000000e+00<br>
              > -define float @constant_fold_round_f32_04() #0 {<br>
              > -  %x = call float @llvm.round.f32(float -1.5) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: @constant_fold_round_f32_05<br>
              > -; CHECK-NEXT: ret float 3.000000e+00<br>
              > -define float @constant_fold_round_f32_05() #0 {<br>
              > -  %x = call float @roundf(float 2.75) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: @constant_fold_round_f32_06<br>
              > -; CHECK-NEXT: ret float -3.000000e+00<br>
              > -define float @constant_fold_round_f32_06() #0 {<br>
              > -  %x = call float @llvm.round.f32(float -2.75) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: @constant_fold_round_f64_01<br>
              > -; CHECK-NEXT: ret double 1.000000e+00<br>
              > -define double @constant_fold_round_f64_01() #0 {<br>
              > -  %x = call double @round(double 1.3) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: @constant_fold_round_f64_02<br>
              > -; CHECK-NEXT: ret double -1.000000e+00<br>
              > -define double @constant_fold_round_f64_02() #0 {<br>
              > -  %x = call double @llvm.round.f64(double -1.3) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: @constant_fold_round_f64_03<br>
              > -; CHECK-NEXT: ret double 2.000000e+00<br>
              > -define double @constant_fold_round_f64_03() #0 {<br>
              > -  %x = call double @round(double 1.5) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: @constant_fold_round_f64_04<br>
              > -; CHECK-NEXT: ret double -2.000000e+00<br>
              > -define double @constant_fold_round_f64_04() #0 {<br>
              > -  %x = call double @llvm.round.f64(double -1.5) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: @constant_fold_round_f64_05<br>
              > -; CHECK-NEXT: ret double 3.000000e+00<br>
              > -define double @constant_fold_round_f64_05() #0 {<br>
              > -  %x = call double @round(double 2.7) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: @constant_fold_round_f64_06<br>
              > -; CHECK-NEXT: ret double -3.000000e+00<br>
              > -define double @constant_fold_round_f64_06() #0 {<br>
              > -  %x = call double @llvm.round.f64(double -2.7) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -attributes #0 = { nounwind readnone }<br>
              > +; RUN: opt -S -early-cse < %s | FileCheck %s<br>
              > +<br>
              > +declare float @roundf(float) #0<br>
              > +declare float @llvm.round.f32(float) #0<br>
              > +declare double @round(double) #0<br>
              > +declare double @llvm.round.f64(double) #0<br>
              > +<br>
              > +; CHECK-LABEL: @constant_fold_round_f32_01<br>
              > +; CHECK-NEXT: ret float 1.000000e+00<br>
              > +define float @constant_fold_round_f32_01() #0 {<br>
              > +  %x = call float @roundf(float 1.25) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: @constant_fold_round_f32_02<br>
              > +; CHECK-NEXT: ret float -1.000000e+00<br>
              > +define float @constant_fold_round_f32_02() #0 {<br>
              > +  %x = call float @llvm.round.f32(float -1.25) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: @constant_fold_round_f32_03<br>
              > +; CHECK-NEXT: ret float 2.000000e+00<br>
              > +define float @constant_fold_round_f32_03() #0 {<br>
              > +  %x = call float @roundf(float 1.5) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: @constant_fold_round_f32_04<br>
              > +; CHECK-NEXT: ret float -2.000000e+00<br>
              > +define float @constant_fold_round_f32_04() #0 {<br>
              > +  %x = call float @llvm.round.f32(float -1.5) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: @constant_fold_round_f32_05<br>
              > +; CHECK-NEXT: ret float 3.000000e+00<br>
              > +define float @constant_fold_round_f32_05() #0 {<br>
              > +  %x = call float @roundf(float 2.75) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: @constant_fold_round_f32_06<br>
              > +; CHECK-NEXT: ret float -3.000000e+00<br>
              > +define float @constant_fold_round_f32_06() #0 {<br>
              > +  %x = call float @llvm.round.f32(float -2.75) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: @constant_fold_round_f64_01<br>
              > +; CHECK-NEXT: ret double 1.000000e+00<br>
              > +define double @constant_fold_round_f64_01() #0 {<br>
              > +  %x = call double @round(double 1.3) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: @constant_fold_round_f64_02<br>
              > +; CHECK-NEXT: ret double -1.000000e+00<br>
              > +define double @constant_fold_round_f64_02() #0 {<br>
              > +  %x = call double @llvm.round.f64(double -1.3) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: @constant_fold_round_f64_03<br>
              > +; CHECK-NEXT: ret double 2.000000e+00<br>
              > +define double @constant_fold_round_f64_03() #0 {<br>
              > +  %x = call double @round(double 1.5) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: @constant_fold_round_f64_04<br>
              > +; CHECK-NEXT: ret double -2.000000e+00<br>
              > +define double @constant_fold_round_f64_04() #0 {<br>
              > +  %x = call double @llvm.round.f64(double -1.5) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: @constant_fold_round_f64_05<br>
              > +; CHECK-NEXT: ret double 3.000000e+00<br>
              > +define double @constant_fold_round_f64_05() #0 {<br>
              > +  %x = call double @round(double 2.7) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: @constant_fold_round_f64_06<br>
              > +; CHECK-NEXT: ret double -3.000000e+00<br>
              > +define double @constant_fold_round_f64_06() #0 {<br>
              > +  %x = call double @llvm.round.f64(double -2.7) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +attributes #0 = { nounwind readnone }<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/saturating-add-sub.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/saturating-add-sub.ll<br>
              > similarity index 99%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/saturating-add-sub.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/saturating-add-sub.ll<br>
              > index 7c6fdbf1e1fd..9d250627c1b5 100644<br>
              > ---
              a/llvm/test/Analysis/ConstantFolding/saturating-add-sub.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/saturating-add-sub.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   declare i8 @llvm.uadd.sat.i8(i8, i8)<br>
              >   declare i8 @llvm.sadd.sat.i8(i8, i8)<br>
              ><br>
              > diff  --git a/llvm/test/Transforms/ConstProp/shift.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/shift.ll<br>
              > similarity index 96%<br>
              > rename from llvm/test/Transforms/ConstProp/shift.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/shift.ll<br>
              > index de23fe98ad87..3e64513533ff 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/shift.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/shift.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   ; CHECK-LABEL: shift_undef_64<br>
              >   define void @shift_undef_64(i64* %p) {<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/smul-fix-sat.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/smul-fix-sat.ll<br>
              > similarity index 98%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/smul-fix-sat.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/smul-fix-sat.ll<br>
              > index 3caae7ce56e2..82d81a5dd0c5 100644<br>
              > ---
              a/llvm/test/Analysis/ConstantFolding/smul-fix-sat.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/smul-fix-sat.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              > 
 ;-----------------------------------------------------------------------------<br>
              >   ; Simple test using scalar layout.<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/smul-fix.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/smul-fix.ll<br>
              > similarity index 98%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/smul-fix.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/smul-fix.ll<br>
              > index 9fcf4a9d65c2..260c49419c90 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/smul-fix.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/smul-fix.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              > 
 ;-----------------------------------------------------------------------------<br>
              >   ; Simple test using scalar layout.<br>
              ><br>
              > diff  --git a/llvm/test/Transforms/ConstProp/sse.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/sse.ll<br>
              > similarity index 99%<br>
              > rename from llvm/test/Transforms/ConstProp/sse.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/sse.ll<br>
              > index ad0a62e42062..5d5c3e3309ad 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/sse.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/sse.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   ; REQUIRES: x86-registered-target<br>
              >   <br>
              >   define i1 @test_sse_cvts_exact() nounwind readnone
              {<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/timeout.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/timeout.ll<br>
              > similarity index 97%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/timeout.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/timeout.ll<br>
              > index 3d28c2adbe48..0ebd365a0335 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/timeout.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/timeout.ll<br>
              > @@ -1,73 +1,73 @@<br>
              > -; NOTE: This is a timeout test for some O(something
              silly) constant folding behaviour. It may not be the best
              test. Providing it finishes, it passes.<br>
              > -; RUN: opt < %s -O3 -S | FileCheck %s<br>
              > -target datalayout =
              "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"<br>
              > -target triple = "armv8-none-eabi"<br>
              > -<br>
              > -%struct.ST = type { %struct.ST* }<br>
              > -<br>
              > -@global = internal global [121 x i8]
              zeroinitializer, align 1<br>
              > -<br>
              > -define void @func() #0 {<br>
              > -;CHECK-LABEL: func<br>
              > -entry:<br>
              > -  %s = alloca %struct.ST*, align 4<br>
              > -  %j = alloca i32, align 4<br>
              > -  store %struct.ST* bitcast ([121 x i8]* @global to
              %struct.ST*), %struct.ST** %s, align 4<br>
              > -  store i32 0, i32* %j, align 4<br>
              > -  br label %for.cond<br>
              > -<br>
              > -for.cond:                                         ;
              preds = %for.inc, %entry<br>
              > -  %0 = load i32, i32* %j, align 4<br>
              > -  %cmp = icmp slt i32 %0, 30<br>
              > -  br i1 %cmp, label %for.body, label %for.end<br>
              > -<br>
              > -for.body:                                         ;
              preds = %for.cond<br>
              > -  %1 = load %struct.ST*, %struct.ST** %s, align 4<br>
              > -  %2 = bitcast %struct.ST* %1 to i8*<br>
              > -  %add.ptr = getelementptr inbounds i8, i8* %2, i32
              4<br>
              > -  %3 = ptrtoint i8* %add.ptr to i32<br>
              > -  %4 = load %struct.ST*, %struct.ST** %s, align 4<br>
              > -  %5 = bitcast %struct.ST* %4 to i8*<br>
              > -  %add.ptr1 = getelementptr inbounds i8, i8* %5, i32
              4<br>
              > -  %6 = ptrtoint i8* %add.ptr1 to i32<br>
              > -  %rem = urem i32 %6, 2<br>
              > -  %cmp2 = icmp eq i32 %rem, 0<br>
              > -  br i1 %cmp2, label %cond.true, label %cond.false<br>
              > -<br>
              > -cond.true:                                        ;
              preds = %for.body<br>
              > -  br label %cond.end<br>
              > -<br>
              > -cond.false:                                       ;
              preds = %for.body<br>
              > -  %7 = load %struct.ST*, %struct.ST** %s, align 4<br>
              > -  %8 = bitcast %struct.ST* %7 to i8*<br>
              > -  %add.ptr3 = getelementptr inbounds i8, i8* %8, i32
              4<br>
              > -  %9 = ptrtoint i8* %add.ptr3 to i32<br>
              > -  %rem4 = urem i32 %9, 2<br>
              > -  br label %cond.end<br>
              > -<br>
              > -cond.end:                                         ;
              preds = %cond.false, %cond.true<br>
              > -  %cond = phi i32 [ 0, %cond.true ], [ %rem4,
              %cond.false ]<br>
              > -  %add = add i32 %3, %cond<br>
              > -  %10 = inttoptr i32 %add to %struct.ST*<br>
              > -  %11 = load %struct.ST*, %struct.ST** %s, align 4<br>
              > -  %next = getelementptr inbounds %struct.ST,
              %struct.ST* %11, i32 0, i32 0<br>
              > -  store %struct.ST* %10, %struct.ST** %next, align 4<br>
              > -  %12 = load %struct.ST*, %struct.ST** %s, align 4<br>
              > -  %next5 = getelementptr inbounds %struct.ST,
              %struct.ST* %12, i32 0, i32 0<br>
              > -  %13 = load %struct.ST*, %struct.ST** %next5, align
              4<br>
              > -  store %struct.ST* %13, %struct.ST** %s, align 4<br>
              > -  br label %for.inc<br>
              > -<br>
              > -for.inc:                                          ;
              preds = %cond.end<br>
              > -  %14 = load i32, i32* %j, align 4<br>
              > -  %inc = add nsw i32 %14, 1<br>
              > -  store i32 %inc, i32* %j, align 4<br>
              > -  br label %for.cond<br>
              > -<br>
              > -for.end:                                          ;
              preds = %for.cond<br>
              > -  %15 = load %struct.ST*, %struct.ST** %s, align 4<br>
              > -  %next6 = getelementptr inbounds %struct.ST,
              %struct.ST* %15, i32 0, i32 0<br>
              > -  store %struct.ST* null, %struct.ST** %next6, align
              4<br>
              > -  ret void<br>
              > -}<br>
              > -<br>
              > +; NOTE: This is a timeout test for some O(something
              silly) constant folding behaviour. It may not be the best
              test. Providing it finishes, it passes.<br>
              > +; RUN: opt < %s -O3 -S | FileCheck %s<br>
              > +target datalayout =
              "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"<br>
              > +target triple = "armv8-none-eabi"<br>
              > +<br>
              > +%struct.ST = type { %struct.ST* }<br>
              > +<br>
              > +@global = internal global [121 x i8]
              zeroinitializer, align 1<br>
              > +<br>
              > +define void @func() #0 {<br>
              > +;CHECK-LABEL: func<br>
              > +entry:<br>
              > +  %s = alloca %struct.ST*, align 4<br>
              > +  %j = alloca i32, align 4<br>
              > +  store %struct.ST* bitcast ([121 x i8]* @global to
              %struct.ST*), %struct.ST** %s, align 4<br>
              > +  store i32 0, i32* %j, align 4<br>
              > +  br label %for.cond<br>
              > +<br>
              > +for.cond:                                         ;
              preds = %for.inc, %entry<br>
              > +  %0 = load i32, i32* %j, align 4<br>
              > +  %cmp = icmp slt i32 %0, 30<br>
              > +  br i1 %cmp, label %for.body, label %for.end<br>
              > +<br>
              > +for.body:                                         ;
              preds = %for.cond<br>
              > +  %1 = load %struct.ST*, %struct.ST** %s, align 4<br>
              > +  %2 = bitcast %struct.ST* %1 to i8*<br>
              > +  %add.ptr = getelementptr inbounds i8, i8* %2, i32
              4<br>
              > +  %3 = ptrtoint i8* %add.ptr to i32<br>
              > +  %4 = load %struct.ST*, %struct.ST** %s, align 4<br>
              > +  %5 = bitcast %struct.ST* %4 to i8*<br>
              > +  %add.ptr1 = getelementptr inbounds i8, i8* %5, i32
              4<br>
              > +  %6 = ptrtoint i8* %add.ptr1 to i32<br>
              > +  %rem = urem i32 %6, 2<br>
              > +  %cmp2 = icmp eq i32 %rem, 0<br>
              > +  br i1 %cmp2, label %cond.true, label %cond.false<br>
              > +<br>
              > +cond.true:                                        ;
              preds = %for.body<br>
              > +  br label %cond.end<br>
              > +<br>
              > +cond.false:                                       ;
              preds = %for.body<br>
              > +  %7 = load %struct.ST*, %struct.ST** %s, align 4<br>
              > +  %8 = bitcast %struct.ST* %7 to i8*<br>
              > +  %add.ptr3 = getelementptr inbounds i8, i8* %8, i32
              4<br>
              > +  %9 = ptrtoint i8* %add.ptr3 to i32<br>
              > +  %rem4 = urem i32 %9, 2<br>
              > +  br label %cond.end<br>
              > +<br>
              > +cond.end:                                         ;
              preds = %cond.false, %cond.true<br>
              > +  %cond = phi i32 [ 0, %cond.true ], [ %rem4,
              %cond.false ]<br>
              > +  %add = add i32 %3, %cond<br>
              > +  %10 = inttoptr i32 %add to %struct.ST*<br>
              > +  %11 = load %struct.ST*, %struct.ST** %s, align 4<br>
              > +  %next = getelementptr inbounds %struct.ST,
              %struct.ST* %11, i32 0, i32 0<br>
              > +  store %struct.ST* %10, %struct.ST** %next, align 4<br>
              > +  %12 = load %struct.ST*, %struct.ST** %s, align 4<br>
              > +  %next5 = getelementptr inbounds %struct.ST,
              %struct.ST* %12, i32 0, i32 0<br>
              > +  %13 = load %struct.ST*, %struct.ST** %next5, align
              4<br>
              > +  store %struct.ST* %13, %struct.ST** %s, align 4<br>
              > +  br label %for.inc<br>
              > +<br>
              > +for.inc:                                          ;
              preds = %cond.end<br>
              > +  %14 = load i32, i32* %j, align 4<br>
              > +  %inc = add nsw i32 %14, 1<br>
              > +  store i32 %inc, i32* %j, align 4<br>
              > +  br label %for.cond<br>
              > +<br>
              > +for.end:                                          ;
              preds = %for.cond<br>
              > +  %15 = load %struct.ST*, %struct.ST** %s, align 4<br>
              > +  %next6 = getelementptr inbounds %struct.ST,
              %struct.ST* %15, i32 0, i32 0<br>
              > +  store %struct.ST* null, %struct.ST** %next6, align
              4<br>
              > +  ret void<br>
              > +}<br>
              > +<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/trunc.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/trunc.ll<br>
              > similarity index 96%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/trunc.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/trunc.ll<br>
              > index df1380917145..68d20002fe4a 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/trunc.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/trunc.ll<br>
              > @@ -1,105 +1,105 @@<br>
              > -; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt -S -early-cse < %s | FileCheck %s<br>
              > -<br>
              > -declare float @truncf(float) #0<br>
              > -declare float @llvm.trunc.f32(float) #0<br>
              > -declare double @trunc(double) #0<br>
              > -declare double @llvm.trunc.f64(double) #0<br>
              > -<br>
              > -define float @constant_fold_trunc_f32_01() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_trunc_f32_01(<br>
              > -; CHECK-NEXT:    ret float 1.000000e+00<br>
              > -;<br>
              > -  %x = call float @truncf(float 1.25) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -define float @constant_fold_trunc_f32_02() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_trunc_f32_02(<br>
              > -; CHECK-NEXT:    ret float -1.000000e+00<br>
              > -;<br>
              > -  %x = call float @llvm.trunc.f32(float -1.25) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -define float @constant_fold_trunc_f32_03() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_trunc_f32_03(<br>
              > -; CHECK-NEXT:    ret float 1.000000e+00<br>
              > -;<br>
              > -  %x = call float @truncf(float 1.5) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -define float @constant_fold_trunc_f32_04() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_trunc_f32_04(<br>
              > -; CHECK-NEXT:    ret float -1.000000e+00<br>
              > -;<br>
              > -  %x = call float @llvm.trunc.f32(float -1.5) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -define float @constant_fold_trunc_f32_05() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_trunc_f32_05(<br>
              > -; CHECK-NEXT:    ret float 2.000000e+00<br>
              > -;<br>
              > -  %x = call float @truncf(float 2.75) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -define float @constant_fold_trunc_f32_06() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_trunc_f32_06(<br>
              > -; CHECK-NEXT:    ret float -2.000000e+00<br>
              > -;<br>
              > -  %x = call float @llvm.trunc.f32(float -2.75) #0<br>
              > -  ret float %x<br>
              > -}<br>
              > -<br>
              > -define double @constant_fold_trunc_f64_01() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_trunc_f64_01(<br>
              > -; CHECK-NEXT:    ret double 1.000000e+00<br>
              > -;<br>
              > -  %x = call double @trunc(double 1.3) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -define double @constant_fold_trunc_f64_02() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_trunc_f64_02(<br>
              > -; CHECK-NEXT:    ret double -1.000000e+00<br>
              > -;<br>
              > -  %x = call double @llvm.trunc.f64(double -1.3) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -define double @constant_fold_trunc_f64_03() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_trunc_f64_03(<br>
              > -; CHECK-NEXT:    ret double 1.000000e+00<br>
              > -;<br>
              > -  %x = call double @trunc(double 1.5) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -define double @constant_fold_trunc_f64_04() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_trunc_f64_04(<br>
              > -; CHECK-NEXT:    ret double -1.000000e+00<br>
              > -;<br>
              > -  %x = call double @llvm.trunc.f64(double -1.5) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -define double @constant_fold_trunc_f64_05() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_trunc_f64_05(<br>
              > -; CHECK-NEXT:    ret double 2.000000e+00<br>
              > -;<br>
              > -  %x = call double @trunc(double 2.7) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -define double @constant_fold_trunc_f64_06() #0 {<br>
              > -; CHECK-LABEL: @constant_fold_trunc_f64_06(<br>
              > -; CHECK-NEXT:    ret double -2.000000e+00<br>
              > -;<br>
              > -  %x = call double @llvm.trunc.f64(double -2.7) #0<br>
              > -  ret double %x<br>
              > -}<br>
              > -<br>
              > -attributes #0 = { nounwind readnone }<br>
              > +; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > +; RUN: opt -S -early-cse < %s | FileCheck %s<br>
              > +<br>
              > +declare float @truncf(float) #0<br>
              > +declare float @llvm.trunc.f32(float) #0<br>
              > +declare double @trunc(double) #0<br>
              > +declare double @llvm.trunc.f64(double) #0<br>
              > +<br>
              > +define float @constant_fold_trunc_f32_01() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_trunc_f32_01(<br>
              > +; CHECK-NEXT:    ret float 1.000000e+00<br>
              > +;<br>
              > +  %x = call float @truncf(float 1.25) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +define float @constant_fold_trunc_f32_02() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_trunc_f32_02(<br>
              > +; CHECK-NEXT:    ret float -1.000000e+00<br>
              > +;<br>
              > +  %x = call float @llvm.trunc.f32(float -1.25) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +define float @constant_fold_trunc_f32_03() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_trunc_f32_03(<br>
              > +; CHECK-NEXT:    ret float 1.000000e+00<br>
              > +;<br>
              > +  %x = call float @truncf(float 1.5) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +define float @constant_fold_trunc_f32_04() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_trunc_f32_04(<br>
              > +; CHECK-NEXT:    ret float -1.000000e+00<br>
              > +;<br>
              > +  %x = call float @llvm.trunc.f32(float -1.5) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +define float @constant_fold_trunc_f32_05() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_trunc_f32_05(<br>
              > +; CHECK-NEXT:    ret float 2.000000e+00<br>
              > +;<br>
              > +  %x = call float @truncf(float 2.75) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +define float @constant_fold_trunc_f32_06() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_trunc_f32_06(<br>
              > +; CHECK-NEXT:    ret float -2.000000e+00<br>
              > +;<br>
              > +  %x = call float @llvm.trunc.f32(float -2.75) #0<br>
              > +  ret float %x<br>
              > +}<br>
              > +<br>
              > +define double @constant_fold_trunc_f64_01() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_trunc_f64_01(<br>
              > +; CHECK-NEXT:    ret double 1.000000e+00<br>
              > +;<br>
              > +  %x = call double @trunc(double 1.3) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +define double @constant_fold_trunc_f64_02() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_trunc_f64_02(<br>
              > +; CHECK-NEXT:    ret double -1.000000e+00<br>
              > +;<br>
              > +  %x = call double @llvm.trunc.f64(double -1.3) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +define double @constant_fold_trunc_f64_03() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_trunc_f64_03(<br>
              > +; CHECK-NEXT:    ret double 1.000000e+00<br>
              > +;<br>
              > +  %x = call double @trunc(double 1.5) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +define double @constant_fold_trunc_f64_04() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_trunc_f64_04(<br>
              > +; CHECK-NEXT:    ret double -1.000000e+00<br>
              > +;<br>
              > +  %x = call double @llvm.trunc.f64(double -1.5) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +define double @constant_fold_trunc_f64_05() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_trunc_f64_05(<br>
              > +; CHECK-NEXT:    ret double 2.000000e+00<br>
              > +;<br>
              > +  %x = call double @trunc(double 2.7) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +define double @constant_fold_trunc_f64_06() #0 {<br>
              > +; CHECK-LABEL: @constant_fold_trunc_f64_06(<br>
              > +; CHECK-NEXT:    ret double -2.000000e+00<br>
              > +;<br>
              > +  %x = call double @llvm.trunc.f64(double -2.7) #0<br>
              > +  ret double %x<br>
              > +}<br>
              > +<br>
              > +attributes #0 = { nounwind readnone }<br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/ConstProp/trunc_vec.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/trunc_vec.ll<br>
              > similarity index 86%<br>
              > rename from
              llvm/test/Transforms/ConstProp/trunc_vec.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/trunc_vec.ll<br>
              > index 99db329cdd2b..3f4882e18171 100644<br>
              > --- a/llvm/test/Transforms/ConstProp/trunc_vec.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/trunc_vec.ll<br>
              > @@ -1,4 +1,4 @@<br>
              > -; RUN: opt -constprop < %s<br>
              > +; RUN: opt -instsimplify < %s<br>
              >   <br>
              >   ; Make sure we don't crash on this one<br>
              >   <br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/vecreduce.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/vecreduce.ll<br>
              > similarity index 99%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/vecreduce.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/vecreduce.ll<br>
              > index 4d6ba1b45db1..5f1861e24b62 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/vecreduce.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/vecreduce.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S | FileCheck %s<br>
              >   <br>
              >   declare i32
              @llvm.experimental.vector.reduce.add.v1i32(<1 x i32>
              %a)<br>
              >   declare i32
              @llvm.experimental.vector.reduce.add.v8i32(<8 x i32>
              %a)<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/vector-undef-elts.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/vector-undef-elts.ll<br>
              > similarity index 97%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/vector-undef-elts.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/vector-undef-elts.ll<br>
              > index ab1e8c1e436a..5d0f484bc3fd 100644<br>
              > ---
              a/llvm/test/Analysis/ConstantFolding/vector-undef-elts.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/vector-undef-elts.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S -o - | FileCheck %s<br>
              > +; RUN: opt < %s -instsimplify -S -o - | FileCheck
              %s<br>
              >   <br>
              >   ; When both operands are undef in a lane, that lane
              should produce an undef result.<br>
              >   <br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/vectorgep-crash.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/vectorgep-crash.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/vectorgep-crash.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/vectorgep-crash.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/vscale-getelementptr.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/vscale-getelementptr.ll<br>
              > similarity index 97%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/vscale-getelementptr.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/vscale-getelementptr.ll<br>
              > index 8e90961928c9..6ac6564a08a9 100644<br>
              > ---
              a/llvm/test/Analysis/ConstantFolding/vscale-getelementptr.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/vscale-getelementptr.ll<br>
              > @@ -1,32 +1,32 @@<br>
              > -; RUN: opt -early-cse -S < %s | FileCheck %s<br>
              > -<br>
              > -target datalayout =
              "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"<br>
              > -target triple = "aarch64"<br>
              > -<br>
              > -; CHECK-LABEL: define <4 x i32*>
              @fixed_length_version_first() {<br>
              > -; CHECK-NEXT:  ret <4 x i32*> undef<br>
              > -define <4 x i32*>
              @fixed_length_version_first() {<br>
              > -  %ptr = getelementptr i32, <4 x i32*> undef,
              <4 x i64> undef<br>
              > -  ret <4 x i32*> %ptr<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: define <4 x <4 x i32>*>
              @fixed_length_version_second() {<br>
              > -; CHECK-NEXT:  ret <4 x <4 x i32>*>
              undef<br>
              > -define <4 x <4 x i32>*>
              @fixed_length_version_second() {<br>
              > -  %ptr = getelementptr <4 x i32>, <4 x
              i32>* undef, <4 x i64> undef<br>
              > -  ret <4 x <4 x i32>*> %ptr<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: define <vscale x 4 x i32*>
              @vscale_version_first() {<br>
              > -; CHECK-NEXT:  ret <vscale x 4 x i32*> undef<br>
              > -define <vscale x 4 x i32*>
              @vscale_version_first() {<br>
              > -  %ptr = getelementptr i32, <vscale x 4 x
              i32*> undef, <vscale x 4 x i64> undef<br>
              > -  ret <vscale x 4 x i32*> %ptr<br>
              > -}<br>
              > -<br>
              > -; CHECK-LABEL: define <vscale x 4 x <vscale x
              4 x i32>*> @vscale_version_second() {<br>
              > -; CHECK-NEXT:  ret <vscale x 4 x <vscale x 4 x
              i32>*> undef<br>
              > -define <vscale x 4 x <vscale x 4 x
              i32>*> @vscale_version_second() {<br>
              > -  %ptr = getelementptr <vscale x 4 x i32>,
              <vscale x 4 x i32>* undef, <vscale x 4 x i64>
              undef<br>
              > -  ret <vscale x 4 x <vscale x 4 x i32>*>
              %ptr<br>
              > -}<br>
              > +; RUN: opt -early-cse -S < %s | FileCheck %s<br>
              > +<br>
              > +target datalayout =
              "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"<br>
              > +target triple = "aarch64"<br>
              > +<br>
              > +; CHECK-LABEL: define <4 x i32*>
              @fixed_length_version_first() {<br>
              > +; CHECK-NEXT:  ret <4 x i32*> undef<br>
              > +define <4 x i32*>
              @fixed_length_version_first() {<br>
              > +  %ptr = getelementptr i32, <4 x i32*> undef,
              <4 x i64> undef<br>
              > +  ret <4 x i32*> %ptr<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: define <4 x <4 x i32>*>
              @fixed_length_version_second() {<br>
              > +; CHECK-NEXT:  ret <4 x <4 x i32>*>
              undef<br>
              > +define <4 x <4 x i32>*>
              @fixed_length_version_second() {<br>
              > +  %ptr = getelementptr <4 x i32>, <4 x
              i32>* undef, <4 x i64> undef<br>
              > +  ret <4 x <4 x i32>*> %ptr<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: define <vscale x 4 x i32*>
              @vscale_version_first() {<br>
              > +; CHECK-NEXT:  ret <vscale x 4 x i32*> undef<br>
              > +define <vscale x 4 x i32*>
              @vscale_version_first() {<br>
              > +  %ptr = getelementptr i32, <vscale x 4 x
              i32*> undef, <vscale x 4 x i64> undef<br>
              > +  ret <vscale x 4 x i32*> %ptr<br>
              > +}<br>
              > +<br>
              > +; CHECK-LABEL: define <vscale x 4 x <vscale x
              4 x i32>*> @vscale_version_second() {<br>
              > +; CHECK-NEXT:  ret <vscale x 4 x <vscale x 4 x
              i32>*> undef<br>
              > +define <vscale x 4 x <vscale x 4 x
              i32>*> @vscale_version_second() {<br>
              > +  %ptr = getelementptr <vscale x 4 x i32>,
              <vscale x 4 x i32>* undef, <vscale x 4 x i64>
              undef<br>
              > +  ret <vscale x 4 x <vscale x 4 x i32>*>
              %ptr<br>
              > +}<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/vscale-shufflevector.ll
b/llvm/test/Transforms/InstSimplify/ConstProp/vscale-shufflevector.ll<br>
              > similarity index 100%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/vscale-shufflevector.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/vscale-shufflevector.ll<br>
              ><br>
              > diff  --git
              a/llvm/test/Analysis/ConstantFolding/vscale.ll
              b/llvm/test/Transforms/InstSimplify/ConstProp/vscale.ll<br>
              > similarity index 95%<br>
              > rename from
              llvm/test/Analysis/ConstantFolding/vscale.ll<br>
              > rename to
              llvm/test/Transforms/InstSimplify/ConstProp/vscale.ll<br>
              > index f00e74bd14ac..d590c565316e 100644<br>
              > --- a/llvm/test/Analysis/ConstantFolding/vscale.ll<br>
              > +++
              b/llvm/test/Transforms/InstSimplify/ConstProp/vscale.ll<br>
              > @@ -1,5 +1,5 @@<br>
              >   ; NOTE: Assertions have been autogenerated by
              utils/update_test_checks.py<br>
              > -; RUN: opt < %s -constprop -S -verify | FileCheck
              %s<br>
              > +; RUN: opt < %s -instsimplify -S -verify |
              FileCheck %s<br>
              >   <br>
              > 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br>
              >   ;; Unary Operations<br>
              > @@ -225,14 +225,14 @@ define <vscale x 4 x i32>
              @select() {<br>
              >     ret <vscale x 4 x i32> %r<br>
              >   }<br>
              >   <br>
              > -declare <vscale x 16 x i8>
              @llvm.sadd.sat.nxv16i8(<vscale x 16 x i8>,
              <vscale x 16 x i8>)<br>
              > +declare <vscale x 16 x i8>
              @llvm.something(<vscale x 16 x i8>, <vscale x 16
              x i8>)<br>
              >   <br>
              >   define <vscale x 16 x i8> @call() {<br>
              >   ; CHECK-LABEL: @call(<br>
              > -; CHECK-NEXT:    [[R:%.*]] = call <vscale x 16 x
              i8> @llvm.sadd.sat.nxv16i8(<vscale x 16 x i8>
              undef, <vscale x 16 x i8> undef)<br>
              > +; CHECK-NEXT:    [[R:%.*]] = call <vscale x 16 x
              i8> @llvm.something(<vscale x 16 x i8> undef,
              <vscale x 16 x i8> undef)<br>
              >   ; CHECK-NEXT:    ret <vscale x 16 x i8> [[R]]<br>
              >   ;<br>
              > -  %r =  call <vscale x 16 x i8>
              @llvm.sadd.sat.nxv16i8(<vscale x 16 x i8> undef,
              <vscale x 16 x i8> undef)<br>
              > +  %r =  call <vscale x 16 x i8>
              @llvm.something(<vscale x 16 x i8> undef, <vscale
              x 16 x i8> undef)<br>
              >     ret <vscale x 16 x i8> %r<br>
              >   }<br>
              >   <br>
              ><br>
              > diff  --git
              a/llvm/test/Transforms/SimplifyCFG/2005-12-03-IncorrectPHIFold.ll
b/llvm/test/Transforms/SimplifyCFG/2005-12-03-IncorrectPHIFold.ll<br>
              > index 2606e08da9a2..d31fd52ac362 100644<br>
              > ---
              a/llvm/test/Transforms/SimplifyCFG/2005-12-03-IncorrectPHIFold.ll<br>
              > +++
              b/llvm/test/Transforms/SimplifyCFG/2005-12-03-IncorrectPHIFold.ll<br>
              > @@ -1,6 +1,6 @@<br>
              >   ; Make sure this doesn't turn into an infinite loop<br>
              >   <br>
              > -; RUN: opt < %s -simplifycfg -constprop
              -simplifycfg | llvm-dis | FileCheck %s<br>
              > +; RUN: opt < %s -simplifycfg -instsimplify
              -simplifycfg | llvm-dis | FileCheck %s<br>
              >   <br>
              >   %struct.anon = type { i32, i32, i32, i32, [1024 x
              i8] }<br>
              >   @_zero_ = external global %struct.anon*           
               ; <%struct.anon**> [#uses=2]<br>
              ><br>
              > diff  --git
              a/llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp
              b/llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp<br>
              > index 52b3b76e795f..29130ec1e56b 100644<br>
              > ---
              a/llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp<br>
              > +++
              b/llvm/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp<br>
              > @@ -285,7 +285,6 @@ class MCJITCAPITest : public
              testing::Test, public MCJITTestAPICommon {<br>
              >     <br>
              >     void buildAndRunPasses() {<br>
              >       LLVMPassManagerRef pass =
              LLVMCreatePassManager();<br>
              > -    LLVMAddConstantPropagationPass(pass);<br>
              >       LLVMAddInstructionCombiningPass(pass);<br>
              >       LLVMRunPassManager(pass, Module);<br>
              >       LLVMDisposePassManager(pass);<br>
              ><br>
              > diff  --git
              a/llvm/utils/gn/secondary/llvm/lib/Transforms/Scalar/BUILD.gn
b/llvm/utils/gn/secondary/llvm/lib/Transforms/Scalar/BUILD.gn<br>
              > index 57c09a7bb4d0..60fcbe031871 100644<br>
              > ---
              a/llvm/utils/gn/secondary/llvm/lib/Transforms/Scalar/BUILD.gn<br>
              > +++
              b/llvm/utils/gn/secondary/llvm/lib/Transforms/Scalar/BUILD.gn<br>
              > @@ -15,7 +15,6 @@ static_library("Scalar") {<br>
              >       "BDCE.cpp",<br>
              >       "CallSiteSplitting.cpp",<br>
              >       "ConstantHoisting.cpp",<br>
              > -    "ConstantProp.cpp",<br>
              >       "CorrelatedValuePropagation.cpp",<br>
              >       "DCE.cpp",<br>
              >       "DeadStoreElimination.cpp",<br>
              ><br>
              ><br>
              >          <br>
              > _______________________________________________<br>
              > llvm-commits mailing list<br>
              > <a href="mailto:llvm-commits@lists.llvm.org"
                target="_blank" moz-do-not-send="true">llvm-commits@lists.llvm.org</a><br>
              > <a
                href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits"
                rel="noreferrer" target="_blank" moz-do-not-send="true">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
            </blockquote>
          </div>
        </blockquote>
      </div>
    </blockquote>
  </body>
</html>