[all-commits] [llvm/llvm-project] 3c8481: CodeGen: Expand memory intrinsics in PreISelIntrin...

Matt Arsenault via All-commits all-commits at lists.llvm.org
Fri Jun 9 18:05:00 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 3c848194f28decca41b7362f9dd35d4939797724
      https://github.com/llvm/llvm-project/commit/3c848194f28decca41b7362f9dd35d4939797724
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2023-06-09 (Fri, 09 Jun 2023)

  Changed paths:
    M llvm/docs/ReleaseNotes.rst
    M llvm/include/llvm/Analysis/TargetTransformInfo.h
    M llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
    M llvm/lib/Analysis/TargetTransformInfo.cpp
    M llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp
    M llvm/lib/CodeGen/TargetPassConfig.cpp
    M llvm/lib/Target/AMDGPU/AMDGPU.h
    R llvm/lib/Target/AMDGPU/AMDGPULowerIntrinsics.cpp
    M llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
    M llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
    M llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h
    M llvm/lib/Target/AMDGPU/CMakeLists.txt
    M llvm/lib/Target/ARM/ARMTargetTransformInfo.h
    M llvm/lib/Target/X86/X86TargetTransformInfo.h
    M llvm/test/CodeGen/AMDGPU/GlobalISel/call-outgoing-stack-args.ll
    M llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.memcpy.inline.ll
    M llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.memcpy.ll
    M llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.memmove.ll
    M llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.memset.ll
    M llvm/test/CodeGen/AMDGPU/llc-pipeline.ll
    M llvm/test/CodeGen/AMDGPU/lower-mem-intrinsics-threshold.ll
    M llvm/test/CodeGen/AMDGPU/lower-mem-intrinsics.ll
    M llvm/test/CodeGen/AMDGPU/schedule-regpressure-lds.ll
    M llvm/test/CodeGen/AMDGPU/stack-size-overflow.ll
    M llvm/utils/gn/secondary/llvm/lib/Target/AMDGPU/BUILD.gn

  Log Message:
  -----------
  CodeGen: Expand memory intrinsics in PreISelIntrinsicLowering

Expand large or unknown size memory intrinsics into loops in the
default lowering pipeline if the target doesn't have the corresponding
libfunc. Previously AMDGPU had a custom pass which existed to call the
expansion utilities.

With a default no-libcall option, we can remove the libfunc checks in
LoopIdiomRecognize for these, which never made any sense. This also
provides a path to lifting the immarg restriction on
llvm.memcpy.inline.

There seems to be a bug where TLI reports functions as available if
you use -march and not -mtriple.


  Commit: 02d25c82b8b54a3c3f3791c700c7f4192554a95e
      https://github.com/llvm/llvm-project/commit/02d25c82b8b54a3c3f3791c700c7f4192554a95e
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2023-06-09 (Fri, 09 Jun 2023)

  Changed paths:
    M llvm/lib/CodeGen/GlobalISel/Legalizer.cpp

  Log Message:
  -----------
  GlobalISel: Remove block insertion legalizer check

This report was broken. The passed null block would crash in the
remark constructor.

I have a patch which will introduce a new block, and it seems to work
fine. It doesn't require legalizing any instructions in the new block,
so it's possible those will be missed.


  Commit: 4e4c351ae5b81774423a6ed6eb90abf4b82eff90
      https://github.com/llvm/llvm-project/commit/4e4c351ae5b81774423a6ed6eb90abf4b82eff90
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2023-06-09 (Fri, 09 Jun 2023)

  Changed paths:
    M llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
    M llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h
    M llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.td
    M llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
    M llvm/lib/Target/AMDGPU/SIISelLowering.cpp
    M llvm/lib/Target/AMDGPU/SIInstructions.td
    A llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-trap.mir
    M llvm/test/CodeGen/AMDGPU/lds-global-non-entry-func.ll
    M llvm/test/CodeGen/AMDGPU/trap.ll

  Log Message:
  -----------
  AMDGPU: Avoid endpgm in middle of block for fallback trap lowering.

This was inserting an s_endpgm in the middle of the block when it has
to be a terminator. Split the block and insert a branch to a new block
with the trap if it's not in a terminator position.

Fixes verifier error on LDS in function with no trap support (and
other trap sources).


Compare: https://github.com/llvm/llvm-project/compare/2e16df352c7a...4e4c351ae5b8


More information about the All-commits mailing list