; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -S -passes=instsimplify < %s | FileCheck %s define i1 @cttz_elts_i1_v4i32() { ; CHECK-LABEL: @cttz_elts_i1_v4i32( ; CHECK-NEXT: ret i1 poison ; %res = call i1 @llvm.experimental.cttz.elts.i1.v4i32(<4 x i32> , i1 false) ret i1 %res } define i32 @cttz_elts_v4i1() { ; CHECK-LABEL: @cttz_elts_v4i1( ; CHECK-NEXT: ret i32 3 ; %res = call i32 @llvm.experimental.cttz.elts.i32.v4i1(<4 x i1> , i1 false) ret i32 %res } define i32 @cttz_elts_v4i32() { ; CHECK-LABEL: @cttz_elts_v4i32( ; CHECK-NEXT: ret i32 1 ; %res = call i32 @llvm.experimental.cttz.elts.i32.v4i32(<4 x i32> , i1 false) ret i32 %res } define i32 @cttz_elts_v4i32_unused_lane_undef() { ; CHECK-LABEL: @cttz_elts_v4i32_unused_lane_undef( ; CHECK-NEXT: ret i32 1 ; %res = call i32 @llvm.experimental.cttz.elts.i32.v4i32(<4 x i32> , i1 false) ret i32 %res } define i32 @cttz_elts_v4i32_used_lane_undef() { ; CHECK-LABEL: @cttz_elts_v4i32_used_lane_undef( ; CHECK-NEXT: ret i32 3 ; %res = call i32 @llvm.experimental.cttz.elts.i32.v4i32(<4 x i32> , i1 false) ret i32 %res } define i32 @cttz_elts_v4i32_unused_lane_poison() { ; CHECK-LABEL: @cttz_elts_v4i32_unused_lane_poison( ; CHECK-NEXT: ret i32 1 ; %res = call i32 @llvm.experimental.cttz.elts.i32.v4i32(<4 x i32> , i1 false) ret i32 %res } define i32 @cttz_elts_v4i32_used_lane_poison() { ; CHECK-LABEL: @cttz_elts_v4i32_used_lane_poison( ; CHECK-NEXT: ret i32 3 ; %res = call i32 @llvm.experimental.cttz.elts.i32.v4i32(<4 x i32> , i1 false) ret i32 %res } define i32 @cttz_elts_v4i32_all_zeros() { ; CHECK-LABEL: @cttz_elts_v4i32_all_zeros( ; CHECK-NEXT: ret i32 4 ; %res = call i32 @llvm.experimental.cttz.elts.i32.v4i32(<4 x i32> , i1 false) ret i32 %res } define i32 @cttz_elts_v4i32_all_zeros_iszeropoison() { ; CHECK-LABEL: @cttz_elts_v4i32_all_zeros_iszeropoison( ; CHECK-NEXT: ret i32 poison ; %res = call i32 @llvm.experimental.cttz.elts.i32.v4i32(<4 x i32> , i1 true) ret i32 %res }