xref: /llvm-project/llvm/test/CodeGen/PowerPC/tocdata-non-zero-addend.mir (revision 2cd32132dbf5ec4a0e62f8fea0cd48420561e970)
18ab578a1SKai Luo# RUN: llc -verify-machineinstrs -x mir -filetype=obj < %s -o %t.o
28ab578a1SKai Luo# RUN: llvm-objdump -dr %t.o | FileCheck %s
38ab578a1SKai Luo# CHECK-LABEL: .read_x
48ab578a1SKai Luo# CHECK: lbz 3, 2(2)
58ab578a1SKai Luo# CHECK-NEXT: R_TOC        x
68ab578a1SKai Luo# CHECK-LABEL: .read_y
78ab578a1SKai Luo# CHECK: lbz 3, 0(2)
88ab578a1SKai Luo# CHECK-NEXT: R_TOC        y
98ab578a1SKai Luo
108ab578a1SKai Luo--- |
118ab578a1SKai Luo  ; ModuleID = '<stdin>'
128ab578a1SKai Luo  source_filename = "<stdin>"
138ab578a1SKai Luo  target datalayout = "E-m:a-Fi64-i64:64-n32:64-S128-v256:256:256-v512:512:512"
148ab578a1SKai Luo  target triple = "powerpc64-ibm-aix"
158ab578a1SKai Luo
168ab578a1SKai Luo  @x = local_unnamed_addr global i32 218114560, align 4 #0
178ab578a1SKai Luo  @y = external local_unnamed_addr global i32, align 4 #0
188ab578a1SKai Luo
198ab578a1SKai Luo  define signext range(i32 0, 256) i32 @read_x() {
208ab578a1SKai Luo  entry:
218ab578a1SKai Luo    %0 = load i32, ptr @x, align 4
228ab578a1SKai Luo    %shr = lshr i32 %0, 8
238ab578a1SKai Luo    %and = and i32 %shr, 255
248ab578a1SKai Luo    ret i32 %and
258ab578a1SKai Luo  }
268ab578a1SKai Luo
278ab578a1SKai Luo  define signext range(i32 0, 256) i32 @read_y() {
288ab578a1SKai Luo  entry:
298ab578a1SKai Luo    %0 = load i32, ptr @y, align 4
308ab578a1SKai Luo    %shr = lshr i32 %0, 16
318ab578a1SKai Luo    %and = and i32 %shr, 255
328ab578a1SKai Luo    ret i32 %and
338ab578a1SKai Luo  }
348ab578a1SKai Luo
358ab578a1SKai Luo  attributes #0 = { "toc-data" }
368ab578a1SKai Luo
378ab578a1SKai Luo...
388ab578a1SKai Luo---
398ab578a1SKai Luoname:            read_x
408ab578a1SKai Luoalignment:       4
418ab578a1SKai LuotracksRegLiveness: true
428ab578a1SKai Luoregisters:
438ab578a1SKai Luo  - { id: 0, class: g8rc }
448ab578a1SKai LuoframeInfo:
458ab578a1SKai Luo  maxAlignment:    8
468ab578a1SKai LuomachineFunctionInfo: {}
478ab578a1SKai Luobody:             |
488ab578a1SKai Luo  bb.0.entry:
49*2cd32132Szhijian lin    liveins: $x3, $x2
508ab578a1SKai Luo    %0:g8rc = LBZ8 @x + 2, $x2 :: (dereferenceable load (s8) from @x + 2, align 2, basealign 4)
518ab578a1SKai Luo    $x3 = COPY %0
528ab578a1SKai Luo    BLR8 implicit $lr8, implicit $rm, implicit $x3
538ab578a1SKai Luo
548ab578a1SKai Luo...
558ab578a1SKai Luo---
568ab578a1SKai Luoname:            read_y
578ab578a1SKai Luoalignment:       4
588ab578a1SKai LuotracksRegLiveness: true
598ab578a1SKai Luoregisters:
608ab578a1SKai Luo  - { id: 0, class: g8rc }
618ab578a1SKai LuoframeInfo:
628ab578a1SKai Luo  maxAlignment:    8
638ab578a1SKai LuomachineFunctionInfo: {}
648ab578a1SKai Luobody:             |
658ab578a1SKai Luo  bb.0.entry:
66*2cd32132Szhijian lin    liveins: $x3, $x2
678ab578a1SKai Luo    %0:g8rc = LBZ8 @y + 1, $x2 :: (dereferenceable load (s8) from @y + 1, basealign 4)
688ab578a1SKai Luo    $x3 = COPY %0
698ab578a1SKai Luo    BLR8 implicit $lr8, implicit $rm, implicit $x3
708ab578a1SKai Luo
718ab578a1SKai Luo...
72