xref: /llvm-project/llvm/test/Transforms/InstSimplify/ConstProp/logicaltest.ll (revision 5b4b842ffb0952ce4a8949962a9857b6520fca39)
1486ed885SArthur Eubanks; Ensure constant propagation of logical instructions is working correctly.
2486ed885SArthur Eubanks
3*5b4b842fSRoman Lebedev; RUN: opt < %s -passes=instsimplify,dce -S | FileCheck %s
4486ed885SArthur Eubanks; CHECK-NOT:     {{and|or|xor}}
5486ed885SArthur Eubanks
6486ed885SArthur Eubanksdefine i32 @test1() {
7486ed885SArthur Eubanks        %R = and i32 4, 1234            ; <i32> [#uses=1]
8486ed885SArthur Eubanks        ret i32 %R
9486ed885SArthur Eubanks}
10486ed885SArthur Eubanks
11486ed885SArthur Eubanksdefine i1 @test1.upgrd.1() {
12486ed885SArthur Eubanks        %R = and i1 true, false         ; <i1> [#uses=1]
13486ed885SArthur Eubanks        ret i1 %R
14486ed885SArthur Eubanks}
15486ed885SArthur Eubanks
16486ed885SArthur Eubanksdefine i32 @test2() {
17486ed885SArthur Eubanks        %R = or i32 4, 1234             ; <i32> [#uses=1]
18486ed885SArthur Eubanks        ret i32 %R
19486ed885SArthur Eubanks}
20486ed885SArthur Eubanks
21486ed885SArthur Eubanksdefine i1 @test2.upgrd.2() {
22486ed885SArthur Eubanks        %R = or i1 true, false          ; <i1> [#uses=1]
23486ed885SArthur Eubanks        ret i1 %R
24486ed885SArthur Eubanks}
25486ed885SArthur Eubanks
26486ed885SArthur Eubanksdefine i32 @test3() {
27486ed885SArthur Eubanks        %R = xor i32 4, 1234            ; <i32> [#uses=1]
28486ed885SArthur Eubanks        ret i32 %R
29486ed885SArthur Eubanks}
30486ed885SArthur Eubanks
31486ed885SArthur Eubanksdefine i1 @test3.upgrd.3() {
32486ed885SArthur Eubanks        %R = xor i1 true, false         ; <i1> [#uses=1]
33486ed885SArthur Eubanks        ret i1 %R
34486ed885SArthur Eubanks}
35486ed885SArthur Eubanks
36