1
; RUN: llc -march=x86 %s -o -
2
; RUN: llc -march=x86-64 %s -o -
6
; Chain and flag folding issues.
7
define i32 @test1() nounwind ssp {
9
%tmp5.i = volatile load i32* undef ; <i32> [#uses=1]
10
%conv.i = zext i32 %tmp5.i to i64 ; <i64> [#uses=1]
11
%tmp12.i = volatile load i32* undef ; <i32> [#uses=1]
12
%conv13.i = zext i32 %tmp12.i to i64 ; <i64> [#uses=1]
13
%shl.i = shl i64 %conv13.i, 32 ; <i64> [#uses=1]
14
%or.i = or i64 %shl.i, %conv.i ; <i64> [#uses=1]
15
%add16.i = add i64 %or.i, 256 ; <i64> [#uses=1]
16
%shr.i = lshr i64 %add16.i, 8 ; <i64> [#uses=1]
17
%conv19.i = trunc i64 %shr.i to i32 ; <i32> [#uses=1]
18
volatile store i32 %conv19.i, i32* undef
23
define void @test2(i1 %x, i32 %y) nounwind {
24
%land.ext = zext i1 %x to i32 ; <i32> [#uses=1]
25
%and = and i32 %y, 1 ; <i32> [#uses=1]
26
%xor = xor i32 %and, %land.ext ; <i32> [#uses=1]
27
%cmp = icmp eq i32 %xor, 1 ; <i1> [#uses=1]
28
br i1 %cmp, label %if.end, label %if.then
30
if.then: ; preds = %land.end
33
if.end: ; preds = %land.end