[PATCH] D62254: [ARM][CGP] Clear SafeWrap before each search

Phabricator via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 23 00:46:38 PDT 2019


This revision was automatically updated to reflect the committed changes.
Closed by commit rL361462: [ARM][CGP] Clear SafeWrap before each search (authored by sam_parker, committed by ).
Herald added a project: LLVM.

Changed prior to commit:
  https://reviews.llvm.org/D62254?vs=200742&id=200881#toc

Repository:
  rL LLVM

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

https://reviews.llvm.org/D62254

Files:
  llvm/trunk/lib/Target/ARM/ARMCodeGenPrepare.cpp
  llvm/trunk/test/CodeGen/ARM/CGP/clear-structures.ll


Index: llvm/trunk/lib/Target/ARM/ARMCodeGenPrepare.cpp
===================================================================
--- llvm/trunk/lib/Target/ARM/ARMCodeGenPrepare.cpp
+++ llvm/trunk/lib/Target/ARM/ARMCodeGenPrepare.cpp
@@ -906,6 +906,7 @@
     return false;
 
   SafeToPromote.clear();
+  SafeWrap.clear();
 
   if (!isSupportedValue(V) || !shouldPromote(V) || !isLegalToPromote(V))
     return false;
Index: llvm/trunk/test/CodeGen/ARM/CGP/clear-structures.ll
===================================================================
--- llvm/trunk/test/CodeGen/ARM/CGP/clear-structures.ll
+++ llvm/trunk/test/CodeGen/ARM/CGP/clear-structures.ll
@@ -0,0 +1,75 @@
+; RUN: opt -arm-codegenprepare -arm-disable-cgp=false -mtriple=armv8 -verify %s -S -o - | FileCheck %s
+
+; CHECK: clear_structures
+define i32 @clear_structures(i8* nocapture readonly %fmt, [1 x i32] %ap.coerce, i8* %out, void (i32, i8*)* nocapture %write) {
+entry:
+  br label %while.cond.outer
+
+while.cond.outer:
+  %fmt.addr.0.ph = phi i8* [ %fmt, %entry ], [ %fmt.addr.3, %while.cond.outer.backedge ]
+  %0 = load i8, i8* %fmt.addr.0.ph, align 1
+  br label %while.cond
+
+while.cond:
+  switch i8 %0, label %while.cond [
+    i8 0, label %while.end48
+    i8 37, label %while.cond2
+  ]
+
+while.cond2:
+  %flags.0 = phi i32 [ %or, %while.cond2 ], [ 0, %while.cond ]
+  %fmt.addr.0.pn = phi i8* [ %fmt.addr.1, %while.cond2 ], [ %fmt.addr.0.ph, %while.cond ]
+  %fmt.addr.1 = getelementptr inbounds i8, i8* %fmt.addr.0.pn, i32 1
+  %1 = load i8, i8* %fmt.addr.1, align 1
+  ; CHECK: add i8 [[LOAD:%[^ ]+]], -32
+  %sub = add i8 %1, -32
+  %conv6 = zext i8 %sub to i32
+  %shl = shl i32 1, %conv6
+  %and = and i32 %shl, 75785
+  %tobool7 = icmp eq i32 %and, 0
+  %or = or i32 %shl, %flags.0
+  br i1 %tobool7, label %while.cond10.preheader, label %while.cond2
+
+while.cond10.preheader:
+  ; CHECK: [[ADD:%[^ ]+]] = add i8 [[LOAD]], -48
+  ; CHECK: icmp ult i8 [[ADD]], 10
+  %.off = add i8 %1, -48
+  %2 = icmp ult i8 %.off, 10
+  br i1 %2, label %while.cond10, label %while.end18.split
+
+while.cond10:
+  br label %while.cond10
+
+while.end18.split:
+  %cmp20 = icmp eq i8 %1, 46
+  br i1 %cmp20, label %if.then22, label %cond.end
+
+if.then22:
+  %incdec.ptr23 = getelementptr inbounds i8, i8* %fmt.addr.0.pn, i32 2
+  %.pr74 = load i8, i8* %incdec.ptr23, align 1
+  ; CHECK: [[LOAD2:[^ ]+]] = load i8, i8*
+  ; CHECK: [[ZEXT:[^ ]+]] = zext i8 [[LOAD2]] to i32
+  ; CHECK: sub i32 [[ZEXT]], 48
+  %.pr74.off = add i8 %.pr74, -48
+  %3 = icmp ult i8 %.pr74.off, 10
+  br i1 %3, label %while.cond24, label %cond.end
+
+while.cond24:
+  br label %while.cond24
+
+cond.end:
+  %fmt.addr.3 = phi i8* [ %fmt.addr.1, %while.end18.split ], [ %incdec.ptr23, %if.then22 ]
+  %and39 = and i32 %flags.0, 2048
+  %tobool40 = icmp eq i32 %and39, 0
+  br i1 %tobool40, label %while.cond.outer.backedge, label %if.then43
+
+while.cond.outer.backedge:
+  br label %while.cond.outer
+
+if.then43:
+  tail call void %write(i32 43, i8* %out) #1
+  br label %while.cond.outer.backedge
+
+while.end48:
+  ret i32 undef
+}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D62254.200881.patch
Type: text/x-patch
Size: 3079 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190523/49dbeead/attachment.bin>


More information about the llvm-commits mailing list