[all-commits] [llvm/llvm-project] 7fff1f: [MIRVRegNamer] Experimental MachineInstr stable ha...

Puyan Lotfi via All-commits all-commits at lists.llvm.org
Thu Sep 3 13:13:30 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 7fff1fbd3ce1c069aff0f475e896d50a39deb1ac
      https://github.com/llvm/llvm-project/commit/7fff1fbd3ce1c069aff0f475e896d50a39deb1ac
  Author: Puyan Lotfi <puyan at puyan.org>
  Date:   2020-09-03 (Thu, 03 Sep 2020)

  Changed paths:
    M llvm/include/llvm/CodeGen/MachineOperand.h
    A llvm/include/llvm/CodeGen/MachineStableHash.h
    A llvm/include/llvm/CodeGen/StableHashing.h
    M llvm/lib/CodeGen/CMakeLists.txt
    M llvm/lib/CodeGen/MIRVRegNamerUtils.cpp
    M llvm/lib/CodeGen/MachineOperand.cpp
    A llvm/lib/CodeGen/MachineStableHash.cpp
    M llvm/test/CodeGen/MIR/AArch64/addrspace-memoperands.mir
    M llvm/test/CodeGen/MIR/AArch64/mir-canon-constant-pool-hash.mir
    M llvm/test/CodeGen/MIR/AArch64/mir-canon-jump-table.mir
    M llvm/test/CodeGen/MIR/AArch64/mirCanonCopyCopyProp.mir
    M llvm/test/CodeGen/MIR/AArch64/mirCanonIdempotent.mir
    M llvm/test/CodeGen/MIR/AArch64/mirnamer.mir
    M llvm/test/CodeGen/MIR/AMDGPU/mir-canon-multi.mir
    M llvm/test/CodeGen/MIR/AMDGPU/mircanon-memoperands.mir
    M llvm/test/CodeGen/MIR/AMDGPU/parse-order-reserved-regs.mir
    M llvm/test/CodeGen/MIR/Generic/CFPImmMIRCanonHash.mir
    M llvm/test/CodeGen/MIR/X86/mir-canon-hash-bb.mir
    M llvm/test/CodeGen/MIR/X86/mir-namer-hash-frameindex.mir
    M llvm/test/CodeGen/MIR/X86/mircanon-flags.mir

  Log Message:
  -----------
  [MIRVRegNamer] Experimental MachineInstr stable hashing (Fowler-Noll-Vo)

This hashing scheme has been useful out of tree, and I want to start
experimenting with it. Specifically I want to experiment on the
MIRVRegNamer, MIRCanononicalizer, and eventually the MachineOutliner.

This diff is a first step, that optionally brings stable hashing to the
MIRVRegNamer (and as a result, the MIRCanonicalizer).  We've tested this
hashing scheme on a lot of MachineOperand types that llvm::hash_value
can not handle in a stable manner.

This stable hashing was also the basis for

"Global Machine Outliner for ThinLTO" in EuroLLVM 2020

http://llvm.org/devmtg/2020-04/talks.html#TechTalk_58

Credits: Kyungwoo Lee, Nikolai Tillmann

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




More information about the All-commits mailing list