[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