[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