From a19d0f2f3e36d47abd13e2f7ae12256b5c2b1707 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Sat, 6 Aug 2016 08:16:00 +0000 Subject: [ValueTracking] Teach computeKnownBits about [su]min/max Reasoning about a select in terms of a min or max allows us to derive a tigher bound on the result. llvm-svn: 277914 --- llvm/test/Transforms/LoopVectorize/interleaved-accesses.ll | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'llvm/test/Transforms/LoopVectorize/interleaved-accesses.ll') diff --git a/llvm/test/Transforms/LoopVectorize/interleaved-accesses.ll b/llvm/test/Transforms/LoopVectorize/interleaved-accesses.ll index 868c3a2cdab..34998782aa8 100644 --- a/llvm/test/Transforms/LoopVectorize/interleaved-accesses.ll +++ b/llvm/test/Transforms/LoopVectorize/interleaved-accesses.ll @@ -577,7 +577,7 @@ for.body: ; preds = %for.body, %entry ; CHECK: %n.mod.vf = and i64 %[[N:.+]], 3 ; CHECK: %[[IsZero:[a-zA-Z0-9]+]] = icmp eq i64 %n.mod.vf, 0 ; CHECK: %[[R:[a-zA-Z0-9]+]] = select i1 %[[IsZero]], i64 4, i64 %n.mod.vf -; CHECK: %n.vec = sub i64 %[[N]], %[[R]] +; CHECK: %n.vec = sub nsw i64 %[[N]], %[[R]] ; CHECK: vector.body: ; CHECK: %[[L1:.+]] = load <8 x i32>, <8 x i32>* {{.*}} ; CHECK: %[[X1:.+]] = extractelement <8 x i32> %[[L1]], i32 0 @@ -625,7 +625,7 @@ for.end: ; CHECK: %n.mod.vf = and i64 %[[N:.+]], 3 ; CHECK: %[[IsZero:[a-zA-Z0-9]+]] = icmp eq i64 %n.mod.vf, 0 ; CHECK: %[[R:[a-zA-Z0-9]+]] = select i1 %[[IsZero]], i64 4, i64 %n.mod.vf -; CHECK: %n.vec = sub i64 %[[N]], %[[R]] +; CHECK: %n.vec = sub nsw i64 %[[N]], %[[R]] ; CHECK: vector.body: ; CHECK: %[[Phi:.+]] = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ {{.*}}, %vector.body ] ; CHECK: %[[L1:.+]] = load <8 x i32>, <8 x i32>* {{.*}} @@ -678,7 +678,7 @@ for.end: ; CHECK: %n.mod.vf = and i64 %[[N:.+]], 3 ; CHECK: %[[IsZero:[a-zA-Z0-9]+]] = icmp eq i64 %n.mod.vf, 0 ; CHECK: %[[R:[a-zA-Z0-9]+]] = select i1 %[[IsZero]], i64 4, i64 %n.mod.vf -; CHECK: %n.vec = sub i64 %[[N]], %[[R]] +; CHECK: %n.vec = sub nsw i64 %[[N]], %[[R]] ; CHECK: vector.body: ; CHECK: %[[L1:.+]] = load <8 x i32>, <8 x i32>* {{.*}} ; CHECK: %[[X1:.+]] = extractelement <8 x i32> %[[L1]], i32 0 @@ -726,7 +726,7 @@ for.end: ; CHECK: %n.mod.vf = and i64 %[[N:.+]], 3 ; CHECK: %[[IsZero:[a-zA-Z0-9]+]] = icmp eq i64 %n.mod.vf, 0 ; CHECK: %[[R:[a-zA-Z0-9]+]] = select i1 %[[IsZero]], i64 4, i64 %n.mod.vf -; CHECK: %n.vec = sub i64 %[[N]], %[[R]] +; CHECK: %n.vec = sub nsw i64 %[[N]], %[[R]] ; CHECK: vector.body: ; CHECK: %[[Phi:.+]] = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ {{.*}}, %vector.body ] ; CHECK: %[[L1:.+]] = load <8 x i32>, <8 x i32>* {{.*}} -- cgit v1.2.3