; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -S -passes=instcombine < %s | FileCheck %s define void @test_shl(i1 %x) { ; CHECK-LABEL: @test_shl( ; CHECK-NEXT: call void @sink(i8 0) ; CHECK-NEXT: ret void ; %y = zext i1 %x to i8 %z = shl i8 64, %y %a = and i8 %z, 1 call void @sink(i8 %a) ret void } define void @test_lshr(i1 %x) { ; CHECK-LABEL: @test_lshr( ; CHECK-NEXT: call void @sink(i8 0) ; CHECK-NEXT: ret void ; %y = zext i1 %x to i8 %z = lshr i8 64, %y %a = and i8 %z, 1 call void @sink(i8 %a) ret void } define void @test_ashr(i1 %x) { ; CHECK-LABEL: @test_ashr( ; CHECK-NEXT: call void @sink(i8 0) ; CHECK-NEXT: ret void ; %y = zext i1 %x to i8 %z = ashr i8 -16, %y %a = and i8 %z, 3 call void @sink(i8 %a) ret void } define void @test_udiv(i8 %x) { ; CHECK-LABEL: @test_udiv( ; CHECK-NEXT: call void @sink(i8 0) ; CHECK-NEXT: ret void ; %y = udiv i8 10, %x %z = and i8 %y, 64 call void @sink(i8 %z) ret void } declare void @sink(i8)