[all-commits] [llvm/llvm-project] 5263bf: [AMDGPU][GlobalISel] Legalization of G_ROTL and G_...

Mirko BrkuĊĦanin via All-commits all-commits at lists.llvm.org
Tue Sep 7 07:38:35 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 5263bf583a26f3f99c2ac34843e89d210bb4fe26
      https://github.com/llvm/llvm-project/commit/5263bf583a26f3f99c2ac34843e89d210bb4fe26
  Author: Mirko Brkusanin <Mirko.Brkusanin at amd.com>
  Date:   2021-09-07 (Tue, 07 Sep 2021)

  Changed paths:
    M llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
    M llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
    M llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
    A llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-rotl-rotr.mir

  Log Message:
  -----------
  [AMDGPU][GlobalISel] Legalization of G_ROTL and G_ROTR

Add implementation for the legalization of G_ROTL and G_ROTR machine
instructions. They are very similar to funnel shift instructions, the only
difference is funnel shifts have 3 operands, whereas rotate instructions have
two operands, the first being the register that is being rotated and the second
being the number of shifts. The legalization of G_ROTL/G_ROTR is just lowering
them into funnel shift instructions if they are legal.

Patch by: Mateja Marjanovic

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


  Commit: 6c4b634da6191b2fa10e833a9393115b83e768d1
      https://github.com/llvm/llvm-project/commit/6c4b634da6191b2fa10e833a9393115b83e768d1
  Author: Mirko Brkusanin <Mirko.Brkusanin at amd.com>
  Date:   2021-09-07 (Tue, 07 Sep 2021)

  Changed paths:
    M llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
    M llvm/lib/CodeGen/GlobalISel/LegalityPredicates.cpp
    M llvm/lib/CodeGen/GlobalISel/LegalizeMutations.cpp
    M llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
    M llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-mul.mir
    M llvm/test/CodeGen/AMDGPU/GlobalISel/mul.ll

  Log Message:
  -----------
  [AMDGPU][GlobalISel] Legalize G_MUL for non-standard types

Legalizing G_MUL for non-standard types (like i33) generated an error. Putting
minScalar and maxScalar instead of clampScalar. Also using new rule, instead
of widening to the next power of 2, widen to the next multiple of the passed
argument (32 in this case), so instead of widening i65 to i128, we widen it to
i96.

Patch by: Mateja Marjanovic

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


Compare: https://github.com/llvm/llvm-project/compare/0d48ee27749c...6c4b634da619


More information about the All-commits mailing list