; RUN: opt < %s -mem2reg -instcombine -S | grep "ret i32 1" | count 8 define i32 @test1() { entry: %z = alloca i32 store i32 0, i32* %z %tmp = load i32* %z %sub = sub i32 %tmp, 1 %cmp = icmp ule i32 %sub, 0 %retval = select i1 %cmp, i32 0, i32 1 ret i32 %retval } define i32 @test2() { entry: %z = alloca i32 store i32 0, i32* %z %tmp = load i32* %z %sub = sub i32 %tmp, 1 %cmp = icmp ugt i32 %sub, 0 %retval = select i1 %cmp, i32 1, i32 0 ret i32 %retval } define i32 @test3() { entry: %z = alloca i32 store i32 0, i32* %z %tmp = load i32* %z %sub = sub i32 %tmp, 1 %cmp = icmp slt i32 %sub, 0 %retval = select i1 %cmp, i32 1, i32 0 ret i32 %retval } define i32 @test4() { entry: %z = alloca i32 store i32 0, i32* %z %tmp = load i32* %z %sub = sub i32 %tmp, 1 %cmp = icmp sle i32 %sub, 0 %retval = select i1 %cmp, i32 1, i32 0 ret i32 %retval } define i32 @test5() { entry: %z = alloca i32 store i32 0, i32* %z %tmp = load i32* %z %sub = sub i32 %tmp, 1 %cmp = icmp sge i32 %sub, 0 %retval = select i1 %cmp, i32 0, i32 1 ret i32 %retval } define i32 @test6() { entry: %z = alloca i32 store i32 0, i32* %z %tmp = load i32* %z %sub = sub i32 %tmp, 1 %cmp = icmp sgt i32 %sub, 0 %retval = select i1 %cmp, i32 0, i32 1 ret i32 %retval } define i32 @test7() { entry: %z = alloca i32 store i32 0, i32* %z %tmp = load i32* %z %sub = sub i32 %tmp, 1 %cmp = icmp eq i32 %sub, 0 %retval = select i1 %cmp, i32 0, i32 1 ret i32 %retval } define i32 @test8() { entry: %z = alloca i32 store i32 0, i32* %z %tmp = load i32* %z %sub = sub i32 %tmp, 1 %cmp = icmp ne i32 %sub, 0 %retval = select i1 %cmp, i32 1, i32 0 ret i32 %retval }