| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4 |
| ; RUN: llc -mtriple=m68k < %s | FileCheck %s |
| |
| @VBRTag = external dso_local global [2147483647 x i8] |
| |
| define i1 @folded_offset(i32 %conv29) { |
| ; CHECK-LABEL: folded_offset: |
| ; CHECK: .cfi_startproc |
| ; CHECK-NEXT: ; %bb.0: ; %entry |
| ; CHECK-NEXT: move.b (VBRTag+1,%pc), %d0 |
| ; CHECK-NEXT: ext.w %d0 |
| ; CHECK-NEXT: ext.l %d0 |
| ; CHECK-NEXT: sub.l (4,%sp), %d0 |
| ; CHECK-NEXT: seq %d0 |
| ; CHECK-NEXT: rts |
| entry: |
| %0 = load i8, ptr getelementptr inbounds ([2147483647 x i8], ptr @VBRTag, i32 0, i32 1), align 1 |
| %conv30 = sext i8 %0 to i32 |
| %cmp31.not = icmp eq i32 %conv30, %conv29 |
| ret i1 %cmp31.not |
| } |
| |
| define i1 @non_folded_offset(i32 %conv29) { |
| ; CHECK-LABEL: non_folded_offset: |
| ; CHECK: .cfi_startproc |
| ; CHECK-NEXT: ; %bb.0: ; %entry |
| ; CHECK-NEXT: move.l #2147483645, %d0 |
| ; CHECK-NEXT: lea (VBRTag,%pc), %a0 |
| ; CHECK-NEXT: move.b (0,%a0,%d0), %d0 |
| ; CHECK-NEXT: ext.w %d0 |
| ; CHECK-NEXT: ext.l %d0 |
| ; CHECK-NEXT: sub.l (4,%sp), %d0 |
| ; CHECK-NEXT: seq %d0 |
| ; CHECK-NEXT: rts |
| entry: |
| %0 = load i8, ptr getelementptr inbounds ([2147483647 x i8], ptr @VBRTag, i32 0, i32 2147483645), align 1 |
| %conv30 = sext i8 %0 to i32 |
| %cmp31.not = icmp eq i32 %conv30, %conv29 |
| ret i1 %cmp31.not |
| } |