[llvm] r312123 - [InstCombine] remove unnecessary vector select fold; NFCI
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 30 07:04:57 PDT 2017
Author: spatel
Date: Wed Aug 30 07:04:57 2017
New Revision: 312123
URL: http://llvm.org/viewvc/llvm-project?rev=312123&view=rev
Log:
[InstCombine] remove unnecessary vector select fold; NFCI
This code is double-dead:
1. We simplify all selects with constant true/false condition in InstSimplify.
I've minimized/moved the tests to show that works as expected.
2. All remaining vector selects with a constant condition are canonicalized to
shufflevector, so we really can't see this pattern.
Modified:
llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp
llvm/trunk/test/Transforms/InstSimplify/compare.ll
llvm/trunk/test/Transforms/InstSimplify/select.ll
Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp?rev=312123&r1=312122&r2=312123&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp (original)
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineSelect.cpp Wed Aug 30 07:04:57 2017
@@ -1566,10 +1566,6 @@ Instruction *InstCombiner::visitSelectIn
return replaceInstUsesWith(SI, V);
return &SI;
}
-
- if (isa<ConstantAggregateZero>(CondVal)) {
- return replaceInstUsesWith(SI, FalseVal);
- }
}
// See if we can determine the result of this select based on a dominating
Modified: llvm/trunk/test/Transforms/InstSimplify/compare.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstSimplify/compare.ll?rev=312123&r1=312122&r2=312123&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstSimplify/compare.ll (original)
+++ llvm/trunk/test/Transforms/InstSimplify/compare.ll Wed Aug 30 07:04:57 2017
@@ -790,24 +790,6 @@ define i1 @non_inbounds_gep_compare2(i64
; CHECK-NEXT: ret i1 true
}
-define <4 x i8> @vectorselectfold(<4 x i8> %a, <4 x i8> %b) {
- %false = icmp ne <4 x i8> zeroinitializer, zeroinitializer
- %sel = select <4 x i1> %false, <4 x i8> %a, <4 x i8> %b
- ret <4 x i8> %sel
-
-; CHECK-LABEL: @vectorselectfold
-; CHECK-NEXT: ret <4 x i8> %b
-}
-
-define <4 x i8> @vectorselectfold2(<4 x i8> %a, <4 x i8> %b) {
- %true = icmp eq <4 x i8> zeroinitializer, zeroinitializer
- %sel = select <4 x i1> %true, <4 x i8> %a, <4 x i8> %b
- ret <4 x i8> %sel
-
-; CHECK-LABEL: @vectorselectfold
-; CHECK-NEXT: ret <4 x i8> %a
-}
-
define i1 @compare_always_true_slt(i16 %a) {
%1 = zext i16 %a to i32
%2 = sub nsw i32 0, %1
Modified: llvm/trunk/test/Transforms/InstSimplify/select.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstSimplify/select.ll?rev=312123&r1=312122&r2=312123&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstSimplify/select.ll (original)
+++ llvm/trunk/test/Transforms/InstSimplify/select.ll Wed Aug 30 07:04:57 2017
@@ -1,6 +1,22 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -instsimplify -S | FileCheck %s
+define <2 x i8> @vsel_tvec(<2 x i8> %x, <2 x i8> %y) {
+; CHECK-LABEL: @vsel_tvec(
+; CHECK-NEXT: ret <2 x i8> %x
+;
+ %s = select <2 x i1><i1 true, i1 true>, <2 x i8> %x, <2 x i8> %y
+ ret <2 x i8> %s
+}
+
+define <2 x i8> @vsel_fvec(<2 x i8> %x, <2 x i8> %y) {
+; CHECK-LABEL: @vsel_fvec(
+; CHECK-NEXT: ret <2 x i8> %y
+;
+ %s = select <2 x i1><i1 false, i1 false>, <2 x i8> %x, <2 x i8> %y
+ ret <2 x i8> %s
+}
+
define i32 @test1(i32 %x) {
; CHECK-LABEL: @test1(
; CHECK-NEXT: ret i32 %x
More information about the llvm-commits
mailing list