[PATCH] D134348: [InstSimplify] Support vectors in simplifyWithOpReplaced()

Sanjay Patel via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 21 07:41:06 PDT 2022


spatel added a comment.

Seems right, but do we have tests that exercise the call restriction? Maybe something like these:

  declare <2 x i32> @llvm.sadd.sat.v2i32(<2 x i32>, <2 x i32>)
  declare <2 x i32> @arbitrary_call(<2 x i32>)
  
  define <2 x i32> @could_fold(<2 x i32> %x, <2 x i32> %y) {
    %a = call <2 x i32> @llvm.sadd.sat.v2i32(<2 x i32> %x, <2 x i32> <i32 42, i32 42>)
    %cond = icmp eq <2 x i32> %x, zeroinitializer
    %s = select <2 x i1> %cond, <2 x i32> %a, <2 x i32> %y
    ret <2 x i32> %s
  }
  
  define <2 x i32> @must_not_fold(<2 x i32> %x, <2 x i32> %y) {
    %a = call <2 x i32> @arbitrary_call(<2 x i32> %x)
    %cond = icmp eq <2 x i32> %x, zeroinitializer
    %s = select <2 x i1> %cond, <2 x i32> %a, <2 x i32> %y
    ret <2 x i32> %s
  }


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

https://reviews.llvm.org/D134348



More information about the llvm-commits mailing list