[PATCH] D44980: [MC][Tblgen] Allow the definition of processor register files in the scheduling model for llvm-mca

Andrea Di Biagio via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 3 05:07:28 PDT 2018


andreadb updated this revision to Diff 140760.
andreadb added a comment.

Patch updated.

Addressed review comments from Clement.

Added an invalid register file entry in the tablegen'd table of register file descriptors.

This is what we get on BtVer2 with this patch (in X86GenSubtargetInfo.inc):

  // {RegisterClassID, Register Cost}
  static const llvm::MCRegisterCostEntry BtVer2ModelRegisterCosts[] = {
    { X86::VR64RegClassID, 1},
    { X86::VR128RegClassID, 1},
    { X86::VR256RegClassID, 2},
    { X86::GR8RegClassID, 1},
    { X86::GR16RegClassID, 1},
    { X86::GR32RegClassID, 1},
    { X86::GR64RegClassID, 1},
    { X86::CCRRegClassID, 1},
  };
  
   // {Name, #PhysRegs, #CostEntries, IndexToCostTbl}
  static const llvm::MCRegisterFileDesc BtVer2ModelRegisterFiles[] = {
    { "InvalidRegisterFile", 0, 0, 0 },
    { "FpuPRF", 72, 3, 0},
    { "IntegerPRF", 64, 5, 3},
  };
  
  static const llvm::MCExtraProcessorInfo BtVer2ModelExtraInfo = {
    BtVer2ModelRegisterFiles,
    3, // Number of register files.
    BtVer2ModelRegisterCosts,
    8 // Number of register cost entries.
  };

A register file with zero physical registers is treated by llvm-mca as an invalid register file. So, entry #0 from the `BtVer2ModelRegisterFiles` table is never used.


https://reviews.llvm.org/D44980

Files:
  include/llvm/MC/MCSchedule.h
  include/llvm/Target/TargetSchedule.td
  lib/Target/X86/X86ScheduleBtVer2.td
  test/tools/llvm-mca/X86/BtVer2/register-files-1.s
  test/tools/llvm-mca/X86/BtVer2/register-files-2.s
  test/tools/llvm-mca/X86/BtVer2/register-files-3.s
  test/tools/llvm-mca/X86/BtVer2/register-files-4.s
  test/tools/llvm-mca/X86/BtVer2/register-files-5.s
  tools/llvm-mca/Backend.h
  tools/llvm-mca/BackendStatistics.cpp
  tools/llvm-mca/BackendStatistics.h
  tools/llvm-mca/Dispatch.cpp
  tools/llvm-mca/Dispatch.h
  utils/TableGen/CodeGenSchedule.cpp
  utils/TableGen/CodeGenSchedule.h
  utils/TableGen/SubtargetEmitter.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D44980.140760.patch
Type: text/x-patch
Size: 47560 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180403/13f7019e/attachment.bin>


More information about the llvm-commits mailing list