[PATCH] D70479: [MIRVRegNamerUtils] Add additional hashing on MachineInstr flags.

Puyan Lotfi via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 10 17:23:40 PST 2019


This revision was automatically updated to reflect the committed changes.
plotfi marked an inline comment as done.
Closed by commit rGf364686f34d8: [llvm][MIRVRegNamerUtil] Adding hashing against MachineInstr flags. (authored by plotfi).

Changed prior to commit:
  https://reviews.llvm.org/D70479?vs=233017&id=233241#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D70479/new/

https://reviews.llvm.org/D70479

Files:
  llvm/lib/CodeGen/MIRVRegNamerUtils.cpp
  llvm/test/CodeGen/MIR/X86/mircanon-flags.mir


Index: llvm/test/CodeGen/MIR/X86/mircanon-flags.mir
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/MIR/X86/mircanon-flags.mir
@@ -0,0 +1,37 @@
+# RUN: llc -march=x86-64 -run-pass mir-canonicalizer -o - %s | FileCheck %s
+# The purpose of this test is to ensure that differing flags do in-fact cause
+# naming collisions with the new vreg renamers naming scheme.
+--- |
+  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+  define void @baz() { unreachable }
+...
+---
+name:            baz
+body:             |
+  bb.0:
+
+    ; CHECK: COPY
+    ; CHECK-NEXT: %bb0_{{[0-9]+}}__1:fr32 = nnan VMULSSrr
+    ; CHECK-NEXT: %bb0_{{[0-9]+}}__1:fr32 = ninf VMULSSrr
+    ; CHECK-NEXT: %bb0_{{[0-9]+}}__1:fr32 = nsz VMULSSrr
+    ; CHECK-NEXT: %bb0_{{[0-9]+}}__1:fr32 = arcp VMULSSrr
+    ; CHECK-NEXT: %bb0_{{[0-9]+}}__1:fr32 = contract VMULSSrr
+    ; CHECK-NEXT: %bb0_{{[0-9]+}}__1:fr32 = afn VMULSSrr
+    ; CHECK-NEXT: %bb0_{{[0-9]+}}__1:fr32 = reassoc VMULSSrr
+    ; CHECK-NEXT: %bb0_{{[0-9]+}}__1:fr32 = nsz arcp contract afn reassoc VMULSSrr
+    ; CHECK-NEXT: %bb0_{{[0-9]+}}__1:fr32 = contract afn reassoc VMULSSrr
+
+    %0:fr32 = COPY $xmm0
+    %1:fr32 = nnan VMULSSrr %0, %0, implicit $mxcsr
+    %2:fr32 = ninf VMULSSrr %1, %1, implicit $mxcsr
+    %3:fr32 = nsz VMULSSrr %2, %2, implicit $mxcsr
+    %4:fr32 = arcp VMULSSrr %3, %3, implicit $mxcsr
+    %5:fr32 = contract VMULSSrr %4, %4, implicit $mxcsr
+    %6:fr32 = afn VMULSSrr %5, %5, implicit $mxcsr
+    %7:fr32 = reassoc VMULSSrr %6, %6, implicit $mxcsr
+    %8:fr32 = nsz arcp contract afn reassoc VMULSSrr %7, %7, implicit $mxcsr
+    %9:fr32 = contract afn reassoc VMULSSrr %8, %8, implicit $mxcsr
+    $xmm0 = COPY %9
+    RET 0, $xmm0
+
+...
Index: llvm/lib/CodeGen/MIRVRegNamerUtils.cpp
===================================================================
--- llvm/lib/CodeGen/MIRVRegNamerUtils.cpp
+++ llvm/lib/CodeGen/MIRVRegNamerUtils.cpp
@@ -69,7 +69,7 @@
     return 0;
   };
 
-  SmallVector<unsigned, 16> MIOperands = {MI.getOpcode()};
+  SmallVector<unsigned, 16> MIOperands = {MI.getOpcode(), MI.getFlags()};
   llvm::transform(MI.uses(), std::back_inserter(MIOperands), GetHashableMO);
 
   auto HashMI = hash_combine_range(MIOperands.begin(), MIOperands.end());


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70479.233241.patch
Type: text/x-patch
Size: 2348 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191211/a1f1026f/attachment.bin>


More information about the llvm-commits mailing list