mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-20 16:17:38 +00:00
New InstCombine pattern: (icmp ult/ule (A + C1), C3) | (icmp ult/ule (A + C2), C3) to (icmp ult/ule ((A & ~(C1 ^ C2)) + max(C1, C2)), C3) under certain condition
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216135 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -480,3 +480,29 @@ define i32 @test45(i32 %x, i32 %y, i32 %z) {
|
||||
%or1 = or i32 %and, %y
|
||||
ret i32 %or1
|
||||
}
|
||||
|
||||
define i1 @test46(i8 signext %c) {
|
||||
%c.off = add i8 %c, -97
|
||||
%cmp1 = icmp ult i8 %c.off, 26
|
||||
%c.off17 = add i8 %c, -65
|
||||
%cmp2 = icmp ult i8 %c.off17, 26
|
||||
%or = or i1 %cmp1, %cmp2
|
||||
ret i1 %or
|
||||
; CHECK-LABEL: @test46(
|
||||
; CHECK-NEXT: and i8 %c, -33
|
||||
; CHECK-NEXT: add i8 %1, -65
|
||||
; CHECK-NEXT: icmp ult i8 %2, 26
|
||||
}
|
||||
|
||||
define i1 @test47(i8 signext %c) {
|
||||
%c.off = add i8 %c, -65
|
||||
%cmp1 = icmp ule i8 %c.off, 26
|
||||
%c.off17 = add i8 %c, -97
|
||||
%cmp2 = icmp ule i8 %c.off17, 26
|
||||
%or = or i1 %cmp1, %cmp2
|
||||
ret i1 %or
|
||||
; CHECK-LABEL: @test47(
|
||||
; CHECK-NEXT: and i8 %c, -33
|
||||
; CHECK-NEXT: add i8 %1, -65
|
||||
; CHECK-NEXT: icmp ult i8 %2, 27
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user