mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-09 11:25:55 +00:00
Add a synthetic missed optimization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60186 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -984,3 +984,27 @@ define i1 @test(i8 %x) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//===---------------------------------------------------------------------===//
|
//===---------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
These three functions all perform the same computation, but produce different
|
||||||
|
assembly. On x86, they are sorted from slowest to fastest.
|
||||||
|
|
||||||
|
define i8 @udiv(i8 %x) readnone nounwind {
|
||||||
|
%A = udiv i8 %x, 250
|
||||||
|
ret i8 %A
|
||||||
|
}
|
||||||
|
|
||||||
|
define i8 @select(i8 %x) readnone nounwind {
|
||||||
|
%A = icmp ult i8 %x, 250
|
||||||
|
%B = select i1 %A, i8 0, i8 1
|
||||||
|
ret i8 %B
|
||||||
|
}
|
||||||
|
|
||||||
|
define i8 @addshr(i8 %x) readnone nounwind {
|
||||||
|
%A = zext i8 %x to i9
|
||||||
|
%B = add i9 %A, 6 ;; 256 - 250 == 6
|
||||||
|
%C = lshr i9 %B, 8
|
||||||
|
%D = trunc i9 %C to i8
|
||||||
|
ret i8 %D
|
||||||
|
}
|
||||||
|
|
||||||
|
//===---------------------------------------------------------------------===//
|
||||||
|
Reference in New Issue
Block a user