mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
(For X86) Enhancement to add-carray/sub-borrow (adc/sbb) optimization.
The adc/sbb optimization is to able to convert following expression into a single adc/sbb instruction: (ult) ... = x + 1 // where the ult is unsigned-less-than comparison (ult) ... = x - 1 This change is to flip the "x >u y" (i.e. ugt comparison) in order to expose the adc/sbb opportunity. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167180 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -30,4 +30,17 @@ entry:
|
||||
ret i32 %z.0
|
||||
}
|
||||
|
||||
; <rdar://problem/12579915>
|
||||
define i32 @test3(i32 %x, i32 %y, i32 %res) nounwind uwtable readnone ssp {
|
||||
entry:
|
||||
%cmp = icmp ugt i32 %x, %y
|
||||
%dec = sext i1 %cmp to i32
|
||||
%dec.res = add nsw i32 %dec, %res
|
||||
ret i32 %dec.res
|
||||
; CHECK: test3:
|
||||
; CHECK: cmpl
|
||||
; CHECK: sbbl
|
||||
; CHECK: ret
|
||||
}
|
||||
|
||||
declare { i32, i1 } @llvm.uadd.with.overflow.i32(i32, i32) nounwind readnone
|
||||
|
Reference in New Issue
Block a user