xref: /llvm-project/llvm/test/CodeGen/M68k/global-address.ll (revision 4bd79ea3fe15c55852e8ec046db4a1513c9ebc1f)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2; RUN: llc -mtriple=m68k < %s | FileCheck %s
3
4@VBRTag = external dso_local global [2147483647 x i8]
5
6define i1 @folded_offset(i32 %conv29) {
7; CHECK-LABEL: folded_offset:
8; CHECK:         .cfi_startproc
9; CHECK-NEXT:  ; %bb.0: ; %entry
10; CHECK-NEXT:    move.b (VBRTag+1,%pc), %d0
11; CHECK-NEXT:    ext.w %d0
12; CHECK-NEXT:    ext.l %d0
13; CHECK-NEXT:    sub.l (4,%sp), %d0
14; CHECK-NEXT:    seq %d0
15; CHECK-NEXT:    rts
16entry:
17  %0 = load i8, ptr getelementptr inbounds ([2147483647 x i8], ptr @VBRTag, i32 0, i32 1), align 1
18  %conv30 = sext i8 %0 to i32
19  %cmp31.not = icmp eq i32 %conv30, %conv29
20  ret i1 %cmp31.not
21}
22
23define i1 @non_folded_offset(i32 %conv29) {
24; CHECK-LABEL: non_folded_offset:
25; CHECK:         .cfi_startproc
26; CHECK-NEXT:  ; %bb.0: ; %entry
27; CHECK-NEXT:    move.l #2147483645, %d0
28; CHECK-NEXT:    lea (VBRTag,%pc), %a0
29; CHECK-NEXT:    move.b (0,%a0,%d0), %d0
30; CHECK-NEXT:    ext.w %d0
31; CHECK-NEXT:    ext.l %d0
32; CHECK-NEXT:    sub.l (4,%sp), %d0
33; CHECK-NEXT:    seq %d0
34; CHECK-NEXT:    rts
35entry:
36  %0 = load i8, ptr getelementptr inbounds ([2147483647 x i8], ptr @VBRTag, i32 0, i32 2147483645), align 1
37  %conv30 = sext i8 %0 to i32
38  %cmp31.not = icmp eq i32 %conv30, %conv29
39  ret i1 %cmp31.not
40}
41