xref: /llvm-project/llvm/test/CodeGen/LoongArch/load-store-offset.ll (revision 9d4f7f44b64d87d1068859906f43b7ce03a7388b)
130424191Sgonglingqin; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*9d4f7f44Swanglei; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck %s --check-prefix=LA32
3*9d4f7f44Swanglei; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA64
430424191Sgonglingqin
530424191Sgonglingqindefine i8 @load_i8() nounwind {
630424191Sgonglingqin; LA32-LABEL: load_i8:
730424191Sgonglingqin; LA32:       # %bb.0:
8653d823aSgonglingqin; LA32-NEXT:    ld.b $a0, $zero, 40
930424191Sgonglingqin; LA32-NEXT:    ret
1030424191Sgonglingqin;
1130424191Sgonglingqin; LA64-LABEL: load_i8:
1230424191Sgonglingqin; LA64:       # %bb.0:
13653d823aSgonglingqin; LA64-NEXT:    ld.b $a0, $zero, 40
1430424191Sgonglingqin; LA64-NEXT:    ret
15653d823aSgonglingqin  %a = load i8, ptr inttoptr (i64 40 to ptr), align 8
1630424191Sgonglingqin  ret i8 %a
1730424191Sgonglingqin}
1830424191Sgonglingqin
1930424191Sgonglingqindefine signext i8 @load_i8_sext() nounwind {
2030424191Sgonglingqin; LA32-LABEL: load_i8_sext:
2130424191Sgonglingqin; LA32:       # %bb.0:
22653d823aSgonglingqin; LA32-NEXT:    ld.b $a0, $zero, 40
2330424191Sgonglingqin; LA32-NEXT:    ret
2430424191Sgonglingqin;
2530424191Sgonglingqin; LA64-LABEL: load_i8_sext:
2630424191Sgonglingqin; LA64:       # %bb.0:
27653d823aSgonglingqin; LA64-NEXT:    ld.b $a0, $zero, 40
2830424191Sgonglingqin; LA64-NEXT:    ret
29653d823aSgonglingqin  %a = load i8, ptr inttoptr (i64 40 to ptr), align 8
3030424191Sgonglingqin  ret i8 %a
3130424191Sgonglingqin}
3230424191Sgonglingqin
3330424191Sgonglingqindefine i16 @load_i16() nounwind {
3430424191Sgonglingqin; LA32-LABEL: load_i16:
3530424191Sgonglingqin; LA32:       # %bb.0:
36653d823aSgonglingqin; LA32-NEXT:    ld.h $a0, $zero, 40
3730424191Sgonglingqin; LA32-NEXT:    ret
3830424191Sgonglingqin;
3930424191Sgonglingqin; LA64-LABEL: load_i16:
4030424191Sgonglingqin; LA64:       # %bb.0:
41653d823aSgonglingqin; LA64-NEXT:    ld.h $a0, $zero, 40
4230424191Sgonglingqin; LA64-NEXT:    ret
43653d823aSgonglingqin  %a = load i16, ptr inttoptr (i64 40 to ptr), align 8
4430424191Sgonglingqin  ret i16 %a
4530424191Sgonglingqin}
4630424191Sgonglingqin
4730424191Sgonglingqindefine signext i16 @load_i16_sext() nounwind {
4830424191Sgonglingqin; LA32-LABEL: load_i16_sext:
4930424191Sgonglingqin; LA32:       # %bb.0:
50653d823aSgonglingqin; LA32-NEXT:    ld.h $a0, $zero, 40
5130424191Sgonglingqin; LA32-NEXT:    ret
5230424191Sgonglingqin;
5330424191Sgonglingqin; LA64-LABEL: load_i16_sext:
5430424191Sgonglingqin; LA64:       # %bb.0:
55653d823aSgonglingqin; LA64-NEXT:    ld.h $a0, $zero, 40
5630424191Sgonglingqin; LA64-NEXT:    ret
57653d823aSgonglingqin  %a = load i16, ptr inttoptr (i64 40 to ptr), align 8
5830424191Sgonglingqin  ret i16 %a
5930424191Sgonglingqin}
6030424191Sgonglingqin
6130424191Sgonglingqindefine i32 @load_i32() nounwind {
6230424191Sgonglingqin; LA32-LABEL: load_i32:
6330424191Sgonglingqin; LA32:       # %bb.0:
64653d823aSgonglingqin; LA32-NEXT:    ld.w $a0, $zero, 40
6530424191Sgonglingqin; LA32-NEXT:    ret
6630424191Sgonglingqin;
6730424191Sgonglingqin; LA64-LABEL: load_i32:
6830424191Sgonglingqin; LA64:       # %bb.0:
69653d823aSgonglingqin; LA64-NEXT:    ld.w $a0, $zero, 40
7030424191Sgonglingqin; LA64-NEXT:    ret
71653d823aSgonglingqin  %a = load i32, ptr inttoptr (i64 40 to ptr), align 8
7230424191Sgonglingqin  ret i32 %a
7330424191Sgonglingqin}
7430424191Sgonglingqin
7530424191Sgonglingqindefine signext i32 @load_i32_sext() nounwind {
7630424191Sgonglingqin; LA32-LABEL: load_i32_sext:
7730424191Sgonglingqin; LA32:       # %bb.0:
78653d823aSgonglingqin; LA32-NEXT:    ld.w $a0, $zero, 40
7930424191Sgonglingqin; LA32-NEXT:    ret
8030424191Sgonglingqin;
8130424191Sgonglingqin; LA64-LABEL: load_i32_sext:
8230424191Sgonglingqin; LA64:       # %bb.0:
83653d823aSgonglingqin; LA64-NEXT:    ld.w $a0, $zero, 40
8430424191Sgonglingqin; LA64-NEXT:    ret
85653d823aSgonglingqin  %a = load i32, ptr inttoptr (i64 40 to ptr), align 8
8630424191Sgonglingqin  ret i32 %a
8730424191Sgonglingqin}
8830424191Sgonglingqin
8930424191Sgonglingqindefine i64 @load_i64() nounwind {
9030424191Sgonglingqin; LA32-LABEL: load_i64:
9130424191Sgonglingqin; LA32:       # %bb.0:
92653d823aSgonglingqin; LA32-NEXT:    ld.w $a0, $zero, 40
93653d823aSgonglingqin; LA32-NEXT:    ld.w $a1, $zero, 44
9430424191Sgonglingqin; LA32-NEXT:    ret
9530424191Sgonglingqin;
9630424191Sgonglingqin; LA64-LABEL: load_i64:
9730424191Sgonglingqin; LA64:       # %bb.0:
98653d823aSgonglingqin; LA64-NEXT:    ld.d $a0, $zero, 40
9930424191Sgonglingqin; LA64-NEXT:    ret
100653d823aSgonglingqin  %a = load i64, ptr inttoptr (i64 40 to ptr), align 8
10130424191Sgonglingqin  ret i64 %a
10230424191Sgonglingqin}
10330424191Sgonglingqin
10430424191Sgonglingqindefine void @store_i8(i8 %v) nounwind {
10530424191Sgonglingqin; LA32-LABEL: store_i8:
10630424191Sgonglingqin; LA32:       # %bb.0:
107653d823aSgonglingqin; LA32-NEXT:    st.b $a0, $zero, 40
10830424191Sgonglingqin; LA32-NEXT:    ret
10930424191Sgonglingqin;
11030424191Sgonglingqin; LA64-LABEL: store_i8:
11130424191Sgonglingqin; LA64:       # %bb.0:
112653d823aSgonglingqin; LA64-NEXT:    st.b $a0, $zero, 40
11330424191Sgonglingqin; LA64-NEXT:    ret
114653d823aSgonglingqin  store i8 %v, ptr inttoptr (i64 40 to ptr), align 8
11530424191Sgonglingqin  ret void
11630424191Sgonglingqin}
11730424191Sgonglingqin
11830424191Sgonglingqindefine void @store_i16(i16 %v) nounwind {
11930424191Sgonglingqin; LA32-LABEL: store_i16:
12030424191Sgonglingqin; LA32:       # %bb.0:
121653d823aSgonglingqin; LA32-NEXT:    st.h $a0, $zero, 40
12230424191Sgonglingqin; LA32-NEXT:    ret
12330424191Sgonglingqin;
12430424191Sgonglingqin; LA64-LABEL: store_i16:
12530424191Sgonglingqin; LA64:       # %bb.0:
126653d823aSgonglingqin; LA64-NEXT:    st.h $a0, $zero, 40
12730424191Sgonglingqin; LA64-NEXT:    ret
128653d823aSgonglingqin  store i16 %v, ptr inttoptr (i64 40 to ptr), align 8
12930424191Sgonglingqin  ret void
13030424191Sgonglingqin}
13130424191Sgonglingqin
13230424191Sgonglingqindefine void @store_i32(i32 %v) nounwind {
13330424191Sgonglingqin; LA32-LABEL: store_i32:
13430424191Sgonglingqin; LA32:       # %bb.0:
135653d823aSgonglingqin; LA32-NEXT:    st.w $a0, $zero, 40
13630424191Sgonglingqin; LA32-NEXT:    ret
13730424191Sgonglingqin;
13830424191Sgonglingqin; LA64-LABEL: store_i32:
13930424191Sgonglingqin; LA64:       # %bb.0:
140653d823aSgonglingqin; LA64-NEXT:    st.w $a0, $zero, 40
14130424191Sgonglingqin; LA64-NEXT:    ret
142653d823aSgonglingqin  store i32 %v, ptr inttoptr (i64 40 to ptr), align 8
14330424191Sgonglingqin  ret void
14430424191Sgonglingqin}
14530424191Sgonglingqin
14630424191Sgonglingqindefine void @store_i64(i64 %v) nounwind {
14730424191Sgonglingqin; LA32-LABEL: store_i64:
14830424191Sgonglingqin; LA32:       # %bb.0:
149653d823aSgonglingqin; LA32-NEXT:    st.w $a1, $zero, 44
150653d823aSgonglingqin; LA32-NEXT:    st.w $a0, $zero, 40
15130424191Sgonglingqin; LA32-NEXT:    ret
15230424191Sgonglingqin;
15330424191Sgonglingqin; LA64-LABEL: store_i64:
15430424191Sgonglingqin; LA64:       # %bb.0:
155653d823aSgonglingqin; LA64-NEXT:    st.d $a0, $zero, 40
15630424191Sgonglingqin; LA64-NEXT:    ret
157653d823aSgonglingqin  store i64 %v, ptr inttoptr (i64 40 to ptr), align 8
15830424191Sgonglingqin  ret void
15930424191Sgonglingqin}
160