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