mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-15 17:07:52 +00:00
31333a7c12
"insert_subreg, subreg_to_reg, and reg_sequence" instructions' after adjusting some unittest checks. This is to solve PR28852. The restriction was added at 2010 to make better register coalescing. We assumed that it was not necessary any more. Testing results on x86 supported the assumption. We will look closely to any performance impact it will bring and will be prepared to help analyzing performance problem found on other architectures. Differential Revision: https://reviews.llvm.org/D23210 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278466 91177308-0d34-0410-b5e6-96231b3b80d8
20 lines
627 B
LLVM
20 lines
627 B
LLVM
; RUN: llc < %s -march=x86-64 | grep mov | count 1
|
|
; rdar://6806252
|
|
|
|
define i64 @test(i32* %tmp13) nounwind {
|
|
entry:
|
|
br label %while.cond
|
|
|
|
while.cond: ; preds = %while.cond, %entry
|
|
%tmp15 = load i32, i32* %tmp13 ; <i32> [#uses=2]
|
|
%bf.lo = lshr i32 %tmp15, 1 ; <i32> [#uses=1]
|
|
%bf.lo.cleared = and i32 %bf.lo, 2147483647 ; <i32> [#uses=1]
|
|
%conv = zext i32 %bf.lo.cleared to i64 ; <i64> [#uses=1]
|
|
%bf.lo.cleared25 = and i32 %tmp15, 1 ; <i32> [#uses=1]
|
|
%tobool = icmp ne i32 %bf.lo.cleared25, 0 ; <i1> [#uses=1]
|
|
br i1 %tobool, label %while.cond, label %while.end
|
|
|
|
while.end: ; preds = %while.cond
|
|
ret i64 %conv
|
|
}
|