mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-19 23:23:38 -04:00
[WarnMissedTransforms] Do not warn about already vectorized loops.
LoopVectorize adds llvm.loop.isvectorized, but leaves llvm.loop.vectorize.enable. Do not consider such a loop for user-forced vectorization since vectorization already happened -- by prioritizing llvm.loop.isvectorized except for TM_SuppressedByUser. Fixes http://llvm.org/PR40546 Differential Revision: https://reviews.llvm.org/D57542 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353082 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
; RUN: opt -transform-warning -disable-output < %s 2>&1 | FileCheck -allow-empty %s
|
||||
;
|
||||
; llvm.org/PR40546
|
||||
; Do not warn about about leftover llvm.loop.vectorize.enable for already
|
||||
; vectorized loops.
|
||||
|
||||
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
||||
|
||||
define void @test(i32 %n) {
|
||||
entry:
|
||||
%cmp = icmp eq i32 %n, 0
|
||||
br i1 %cmp, label %simd.if.end, label %omp.inner.for.body.preheader
|
||||
|
||||
omp.inner.for.body.preheader:
|
||||
%wide.trip.count = zext i32 %n to i64
|
||||
br label %omp.inner.for.body
|
||||
|
||||
omp.inner.for.body:
|
||||
%indvars.iv = phi i64 [ 0, %omp.inner.for.body.preheader ], [ %indvars.iv.next, %omp.inner.for.body ]
|
||||
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
|
||||
%exitcond = icmp eq i64 %indvars.iv.next, %wide.trip.count
|
||||
br i1 %exitcond, label %simd.if.end, label %omp.inner.for.body, !llvm.loop !0
|
||||
|
||||
simd.if.end:
|
||||
ret void
|
||||
}
|
||||
|
||||
!0 = distinct !{!0, !1, !2}
|
||||
!1 = !{!"llvm.loop.vectorize.enable", i1 true}
|
||||
!2 = !{!"llvm.loop.isvectorized"}
|
||||
|
||||
|
||||
; CHECK-NOT: loop not vectorized
|
||||
Reference in New Issue
Block a user