blob: 5dd0039a3327e2729211d870409ecb36052c2798 [file] [log] [blame]
; Simple test of the load instruction.
; REQUIRES: allow_dump
; RUN: %p2i -i %s --args --verbose inst -threads=0 | FileCheck %s
; RUN: %if --need=target_MIPS32 --need=allow_dump \
; RUN: --command %p2i --filetype=asm --assemble \
; RUN: --disassemble --target mips32 -i %s --args -Om1 \
; RUN: -allow-externally-defined-symbols \
; RUN: | %if --need=target_MIPS32 --need=allow_dump \
; RUN: --command FileCheck --check-prefix MIPS32 %s
define internal void @load_i64(i32 %addr_arg) {
entry:
%__1 = inttoptr i32 %addr_arg to i64*
%iv = load i64, i64* %__1, align 1
ret void
; CHECK: Initial CFG
; CHECK: entry:
; CHECK-NEXT: %iv = load i64, i64* %addr_arg, align 1
; CHECK-NEXT: ret void
}
; MIPS32-LABEL: load_i64
; MIPS32: lw [[BASE:.*]],
; MIPS32-NEXT: lw {{.*}},0([[BASE]])
; MIPS32-NEXT: lw {{.*}},4([[BASE]])
define internal void @load_i32(i32 %addr_arg) {
entry:
%__1 = inttoptr i32 %addr_arg to i32*
%iv = load i32, i32* %__1, align 1
ret void
; CHECK: Initial CFG
; CHECK: entry:
; CHECK-NEXT: %iv = load i32, i32* %addr_arg, align 1
; CHECK-NEXT: ret void
}
; MIPS32-LABEL: load_i32
; MIPS32: lw {{.*}},0({{.*}})
define internal void @load_i16(i32 %addr_arg) {
entry:
%__1 = inttoptr i32 %addr_arg to i16*
%iv = load i16, i16* %__1, align 1
ret void
; CHECK: Initial CFG
; CHECK: entry:
; CHECK-NEXT: %iv = load i16, i16* %addr_arg, align 1
; CHECK-NEXT: ret void
}
; MIPS32-LABEL: load_i16
; MIPS32: lh {{.*}},0({{.*}})
define internal void @load_i8(i32 %addr_arg) {
entry:
%__1 = inttoptr i32 %addr_arg to i8*
%iv = load i8, i8* %__1, align 1
ret void
; CHECK: Initial CFG
; CHECK: entry:
; CHECK-NEXT: %iv = load i8, i8* %addr_arg, align 1
; CHECK-NEXT: ret void
}
; MIPS32-LABEL: load_i8
; MIPS32: lb {{.*}},0({{.*}})