[PATCH] D50944: [Hexagon] [Test] Remove undef and infinite loop from test

Dmytro Shynkevych via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 30 18:49:07 PDT 2018


hermord updated this revision to Diff 163458.
hermord added a comment.

After a rebase and bisect, it turned out that the current form does rely on https://reviews.llvm.org/D50222. The extra `mpy` nodes come from this combine on the `srem`, which would not be reached with the proposed SREM optimization:

  Combining: t11: i32 = srem t5, Constant:i32<3>
  Creating constant: t36: i32 = Constant<1431655766>
  Creating new node: t37: i32 = mulhs t5, Constant:i32<1431655766>
  Creating new node: t38: i32 = mul t5, Constant:i32<0>
  Creating new node: t39: i32 = add t37, t38
  Creating constant: t40: i32 = Constant<31>
  Creating new node: t41: i32 = srl t39, Constant:i32<31>
  Creating new node: t42: i32 = add t39, t41
  Creating new node: t43: i32 = mul t42, Constant:i32<3>
  Creating new node: t44: i32 = sub t5, t43
   ... into: t44: i32 = sub t5, t43

This change fixes that: though there may be multiple `mpy`s in the loop body, there is only one `cmp`; looking at it instead still fullfils the purpose of the test (ensuring the loop body is not duplicated), unless I'm mistaken.


Repository:
  rL LLVM

https://reviews.llvm.org/D50944

Files:
  test/CodeGen/Hexagon/swp-const-tc2.ll


Index: test/CodeGen/Hexagon/swp-const-tc2.ll
===================================================================
--- test/CodeGen/Hexagon/swp-const-tc2.ll
+++ test/CodeGen/Hexagon/swp-const-tc2.ll
@@ -6,17 +6,17 @@
 ; In the bug, the final CFG contains two iterations of the loop.
 
 ; CHECK-NOT: loop0
-; CHECK: = mpy
-; CHECK-NOT: = mpy
+; CHECK: = cmp
+; CHECK-NOT: = cmp
 
-define void @f0() {
+define i32 @f0(i32* %a0) {
 b0:
   br label %b1
 
 b1:                                               ; preds = %b1, %b0
   %v0 = phi i32 [ 0, %b0 ], [ %v9, %b1 ]
   %v1 = phi i32 [ 0, %b0 ], [ %v8, %b1 ]
-  %v2 = load i32, i32* undef, align 4
+  %v2 = load i32, i32* %a0, align 4
   %v3 = add nsw i32 %v1, 1
   %v4 = srem i32 %v2, 3
   %v5 = icmp ne i32 %v4, 0
@@ -32,5 +32,5 @@
   br label %b3
 
 b3:                                               ; preds = %b3, %b2
-  br label %b3
+  ret i32 %v11
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50944.163458.patch
Type: text/x-patch
Size: 901 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180831/9793e8b0/attachment.bin>


More information about the llvm-commits mailing list