[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 01:47:13 PST 2019


plotfi updated this revision to Diff 233017.
plotfi added a comment.

Adding test case.


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: %bb0_{{[0-9]+}}__1:fr32 = COPY $xmm0
+    ; CHECK: %bb0_{{[0-9]+}}__1:fr32 = nnan VMULSSrr
+    ; CHECK: %bb0_{{[0-9]+}}__1:fr32 = ninf VMULSSrr
+    ; CHECK: %bb0_{{[0-9]+}}__1:fr32 = nsz VMULSSrr
+    ; CHECK: %bb0_{{[0-9]+}}__1:fr32 = arcp VMULSSrr
+    ; CHECK: %bb0_{{[0-9]+}}__1:fr32 = contract VMULSSrr
+    ; CHECK: %bb0_{{[0-9]+}}__1:fr32 = afn VMULSSrr
+    ; CHECK: %bb0_{{[0-9]+}}__1:fr32 = reassoc VMULSSrr
+    ; CHECK: %bb0_{{[0-9]+}}__1:fr32 = nsz arcp contract
+    ; CHECK: %bb0_{{[0-9]+}}__1:fr32 = contract afn reassoc
+
+    %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.233017.patch
Type: text/x-patch
Size: 2305 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191210/7d4c76d3/attachment.bin>


More information about the llvm-commits mailing list