1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
4 define i1 @test1(i1 %a) {
6 ; CHECK-NEXT: ret i1 true
13 define <2 x i1> @test2(<2 x i1> %a) {
14 ; CHECK-LABEL: @test2(
15 ; CHECK-NEXT: ret <2 x i1> splat (i1 true)
17 %b = xor <2 x i1> %a, <i1 true, i1 true>
18 %res = sub <2 x i1> %a, %b
22 define i1 @test5(i1 %a) {
23 ; CHECK-LABEL: @test5(
24 ; CHECK-NEXT: ret i1 false
30 define <2 x i1> @test6(<2 x i1> %a) {
31 ; CHECK-LABEL: @test6(
32 ; CHECK-NEXT: ret <2 x i1> zeroinitializer
34 %res = add <2 x i1> %a, %a
38 define i1 @test7(i1 %a) {
39 ; CHECK-LABEL: @test7(
40 ; CHECK-NEXT: ret i1 [[A:%.*]]
43 %res = add i1 %c, true
47 ; TODO: simplify this to %a
48 define i1 @test8(i1 %a) {
49 ; CHECK-LABEL: @test8(
50 ; CHECK-NEXT: [[C:%.*]] = add i1 [[A:%.*]], true
51 ; CHECK-NEXT: [[RES:%.*]] = xor i1 [[C]], true
52 ; CHECK-NEXT: ret i1 [[RES]]
55 %res = xor i1 %c, true
59 define i1 @test9(i1 %a) {
60 ; CHECK-LABEL: @test9(
61 ; CHECK-NEXT: ret i1 [[A:%.*]]
64 %res = sub i1 %c, true
68 ; TODO: simplify this to %a
69 define i1 @test10(i1 %a) {
70 ; CHECK-LABEL: @test10(
71 ; CHECK-NEXT: [[C:%.*]] = sub i1 [[A:%.*]], true
72 ; CHECK-NEXT: [[RES:%.*]] = xor i1 [[C]], true
73 ; CHECK-NEXT: ret i1 [[RES]]
76 %res = xor i1 %c, true