xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/2009-04-25-CoalescerBug.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86-64 | grep mov | count 2
2*9880d681SAndroid Build Coastguard Worker; rdar://6806252
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine i64 @test(i32* %tmp13) nounwind {
5*9880d681SAndroid Build Coastguard Workerentry:
6*9880d681SAndroid Build Coastguard Worker	br label %while.cond
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Workerwhile.cond:		; preds = %while.cond, %entry
9*9880d681SAndroid Build Coastguard Worker	%tmp15 = load i32, i32* %tmp13		; <i32> [#uses=2]
10*9880d681SAndroid Build Coastguard Worker	%bf.lo = lshr i32 %tmp15, 1		; <i32> [#uses=1]
11*9880d681SAndroid Build Coastguard Worker	%bf.lo.cleared = and i32 %bf.lo, 2147483647		; <i32> [#uses=1]
12*9880d681SAndroid Build Coastguard Worker	%conv = zext i32 %bf.lo.cleared to i64		; <i64> [#uses=1]
13*9880d681SAndroid Build Coastguard Worker	%bf.lo.cleared25 = and i32 %tmp15, 1		; <i32> [#uses=1]
14*9880d681SAndroid Build Coastguard Worker	%tobool = icmp ne i32 %bf.lo.cleared25, 0		; <i1> [#uses=1]
15*9880d681SAndroid Build Coastguard Worker	br i1 %tobool, label %while.cond, label %while.end
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerwhile.end:		; preds = %while.cond
18*9880d681SAndroid Build Coastguard Worker	ret i64 %conv
19*9880d681SAndroid Build Coastguard Worker}
20