[all-commits] [llvm/llvm-project] 5518a0: llc/MIR: Fix setFunctionAttributes for MIR functions

Matt Arsenault via All-commits all-commits at lists.llvm.org
Mon Jan 6 14:21:58 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 5518a02a83e855edeff7d8b4db685ec5d1b4144e
      https://github.com/llvm/llvm-project/commit/5518a02a83e855edeff7d8b4db685ec5d1b4144e
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2020-01-06 (Mon, 06 Jan 2020)

  Changed paths:
    M llvm/include/llvm/CodeGen/CommandFlags.inc
    M llvm/include/llvm/CodeGen/MIRParser/MIRParser.h
    M llvm/lib/CodeGen/MIRParser/MIRParser.cpp
    A llvm/test/CodeGen/MIR/AMDGPU/llc-target-cpu-attr-from-cmdline-ir.mir
    A llvm/test/CodeGen/MIR/AMDGPU/llc-target-cpu-attr-from-cmdline.mir
    M llvm/tools/llc/llc.cpp

  Log Message:
  -----------
  llc/MIR: Fix setFunctionAttributes for MIR functions

A random set of attributes are implemented by llc/opt forcing the
string attributes on the IR functions before processing anything. This
would not happen for MIR functions, which have not yet been created at
this point.

Use a callback in the MIR parser, purely to avoid dealing with the
ugliness that the command line flags are in a .inc file, and would
require allowing access to these flags from multiple places (either
from the MIR parser directly, or a new utility pass to implement these
flags). It would probably be better to cleanup the flag handling into
a separate library.

This is in preparation for treating more command line flags with a
corresponding function attribute in a more uniform way. The fast math
flags in particular have a messy system where the command line flag
sets the behavior from a function attribute if present, and otherwise
the command line flag. This means if any other pass tries to inspect
the function attributes directly, it will be inconsistent with the
intended behavior. This is also inconsistent with the current behavior
of -mcpu and -mattr, which overwrites any pre-existing function
attributes. I would like to move this to consistenly have the command
line flags not overwrite any pre-existing attributes, and to always
ensure the command line flags are consistent with the function
attributes.


  Commit: 14d25052a2902dacdd73aa1714ba1fb639c1dedd
      https://github.com/llvm/llvm-project/commit/14d25052a2902dacdd73aa1714ba1fb639c1dedd
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2020-01-06 (Mon, 06 Jan 2020)

  Changed paths:
    M llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
    M llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
    M llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h
    M llvm/lib/Target/AMDGPU/SIInstrInfo.h
    M llvm/lib/Target/AMDGPU/SIInstrInfo.td
    M llvm/lib/Target/AMDGPU/SIInstructions.td

  Log Message:
  -----------
  AMDGPU: Use ImmLeaf for inline immediate predicates


  Commit: a506efff18224a0c73db42bed8679413514c28b1
      https://github.com/llvm/llvm-project/commit/a506efff18224a0c73db42bed8679413514c28b1
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2020-01-06 (Mon, 06 Jan 2020)

  Changed paths:
    M llvm/lib/Target/AMDGPU/SIInstrInfo.td

  Log Message:
  -----------
  AMDGPU: Use ImmLeaf

This solves one GlobalISel importer error, but the pattern still fails
for another reason.


  Commit: 7f2db2917da9e4fe43976b7abe37400812ed5dea
      https://github.com/llvm/llvm-project/commit/7f2db2917da9e4fe43976b7abe37400812ed5dea
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2020-01-06 (Mon, 06 Jan 2020)

  Changed paths:
    M llvm/lib/Target/AMDGPU/SIISelLowering.cpp
    M llvm/lib/Target/AMDGPU/SIInstructions.td
    A llvm/test/CodeGen/AMDGPU/fpow.ll

  Log Message:
  -----------
  AMDGPU: Fix legalizing f16 fpow

The existing test only covered one case for r600. The use of
mul_legacy also looks suspicious to me, but leave it for now. The
patterns are also not making use of source modifiers.


  Commit: 0b093f02120e212b9c1305eae626e9b5e99b92fa
      https://github.com/llvm/llvm-project/commit/0b093f02120e212b9c1305eae626e9b5e99b92fa
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2020-01-06 (Mon, 06 Jan 2020)

  Changed paths:
    M llvm/include/llvm/CodeGen/GlobalISel/GISelKnownBits.h
    M llvm/lib/CodeGen/GlobalISel/GISelKnownBits.cpp
    M llvm/unittests/CodeGen/GlobalISel/KnownBitsTest.cpp

  Log Message:
  -----------
  GlobalISel: Start adding computeNumSignBits to GISelKnownBits


  Commit: 1060b9e23b8f9d2802835896947ec281ba3b4f6b
      https://github.com/llvm/llvm-project/commit/1060b9e23b8f9d2802835896947ec281ba3b4f6b
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2020-01-06 (Mon, 06 Jan 2020)

  Changed paths:
    M llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
    M llvm/test/CodeGen/Mips/GlobalISel/legalizer/fptosi_and_fptoui.mir
    M llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/fptosi_and_fptoui.ll

  Log Message:
  -----------
  GlobalISel: Correct result type for G_FCMP in lowerFPTOUI

Using the final result type doesn't make any sense. Use the natural
default boolean type for the select condition.


  Commit: ee6b8722ffa101b57af9029c84691cb7e8a43799
      https://github.com/llvm/llvm-project/commit/ee6b8722ffa101b57af9029c84691cb7e8a43799
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2020-01-06 (Mon, 06 Jan 2020)

  Changed paths:
    M llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
    M llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
    A llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-jump-table.mir

  Log Message:
  -----------
  GlobalISel: Fix unsupported legalize action

This would complain about invalid legalizer rules otherwise.

Mark some operations as unsupported for AMDGPU. This currently seems
to produce the same legalize error as when no rules are defined, but
eventually this should produce a proper user facing error.


Compare: https://github.com/llvm/llvm-project/compare/6a0564adcfe6...ee6b8722ffa1


More information about the All-commits mailing list