16d4b1c04SSimon Atanasyan; RUN: llc -march=mipsel -relocation-model=pic < %s | FileCheck %s
26d4b1c04SSimon Atanasyan
36d4b1c04SSimon Atanasyan@data = global [8193 x i32] zeroinitializer
46d4b1c04SSimon Atanasyan
56d4b1c04SSimon Atanasyandefine void @R(i32 *%p) nounwind {
66d4b1c04SSimon Atanasyanentry:
76d4b1c04SSimon Atanasyan  ; CHECK-LABEL: R:
86d4b1c04SSimon Atanasyan
9*f430c1ebSNikita Popov  call void asm sideeffect "lw $$1, $0", "*R,~{$1}"(i32* elementtype(i32) getelementptr inbounds ([8193 x i32], [8193 x i32]* @data, i32 0, i32 0))
106d4b1c04SSimon Atanasyan
116d4b1c04SSimon Atanasyan  ; CHECK: lw $[[BASEPTR:[0-9]+]], %got(data)(
126d4b1c04SSimon Atanasyan  ; CHECK: #APP
136d4b1c04SSimon Atanasyan  ; CHECK: lw $1, 0($[[BASEPTR]])
146d4b1c04SSimon Atanasyan  ; CHECK: #NO_APP
156d4b1c04SSimon Atanasyan
166d4b1c04SSimon Atanasyan  ret void
176d4b1c04SSimon Atanasyan}
186d4b1c04SSimon Atanasyan
196d4b1c04SSimon Atanasyandefine void @R_offset_4(i32 *%p) nounwind {
206d4b1c04SSimon Atanasyanentry:
216d4b1c04SSimon Atanasyan  ; CHECK-LABEL: R_offset_4:
226d4b1c04SSimon Atanasyan
23*f430c1ebSNikita Popov  call void asm sideeffect "lw $$1, $0", "*R,~{$1}"(i32* elementtype(i32) getelementptr inbounds ([8193 x i32], [8193 x i32]* @data, i32 0, i32 1))
246d4b1c04SSimon Atanasyan
256d4b1c04SSimon Atanasyan  ; CHECK: lw $[[BASEPTR:[0-9]+]], %got(data)(
266d4b1c04SSimon Atanasyan  ; CHECK: #APP
276d4b1c04SSimon Atanasyan  ; CHECK: lw $1, 4($[[BASEPTR]])
286d4b1c04SSimon Atanasyan  ; CHECK: #NO_APP
296d4b1c04SSimon Atanasyan
306d4b1c04SSimon Atanasyan  ret void
316d4b1c04SSimon Atanasyan}
326d4b1c04SSimon Atanasyan
336d4b1c04SSimon Atanasyandefine void @R_offset_254(i32 *%p) nounwind {
346d4b1c04SSimon Atanasyanentry:
356d4b1c04SSimon Atanasyan  ; CHECK-LABEL: R_offset_254:
366d4b1c04SSimon Atanasyan
37*f430c1ebSNikita Popov  call void asm sideeffect "lw $$1, $0", "*R,~{$1}"(i32* elementtype(i32) getelementptr inbounds ([8193 x i32], [8193 x i32]* @data, i32 0, i32 63))
386d4b1c04SSimon Atanasyan
396d4b1c04SSimon Atanasyan  ; CHECK-DAG: lw $[[BASEPTR:[0-9]+]], %got(data)(
406d4b1c04SSimon Atanasyan  ; CHECK: #APP
416d4b1c04SSimon Atanasyan  ; CHECK: lw $1, 252($[[BASEPTR]])
426d4b1c04SSimon Atanasyan  ; CHECK: #NO_APP
436d4b1c04SSimon Atanasyan
446d4b1c04SSimon Atanasyan  ret void
456d4b1c04SSimon Atanasyan}
466d4b1c04SSimon Atanasyan
476d4b1c04SSimon Atanasyandefine void @R_offset_256(i32 *%p) nounwind {
486d4b1c04SSimon Atanasyanentry:
496d4b1c04SSimon Atanasyan  ; CHECK-LABEL: R_offset_256:
506d4b1c04SSimon Atanasyan
51*f430c1ebSNikita Popov  call void asm sideeffect "lw $$1, $0", "*R,~{$1}"(i32* elementtype(i32) getelementptr inbounds ([8193 x i32], [8193 x i32]* @data, i32 0, i32 64))
526d4b1c04SSimon Atanasyan
536d4b1c04SSimon Atanasyan  ; CHECK-DAG: lw $[[BASEPTR:[0-9]+]], %got(data)(
546d4b1c04SSimon Atanasyan  ; CHECK: addiu $[[BASEPTR2:[0-9]+]], $[[BASEPTR]], 256
556d4b1c04SSimon Atanasyan  ; CHECK: #APP
566d4b1c04SSimon Atanasyan  ; CHECK: lw $1, 0($[[BASEPTR2]])
576d4b1c04SSimon Atanasyan  ; CHECK: #NO_APP
586d4b1c04SSimon Atanasyan
596d4b1c04SSimon Atanasyan  ret void
606d4b1c04SSimon Atanasyan}
61