160 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck %s --check-prefix=LA323; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA644 5define i8 @load_i8() nounwind {6; LA32-LABEL: load_i8:7; LA32: # %bb.0:8; LA32-NEXT: ld.b $a0, $zero, 409; LA32-NEXT: ret10;11; LA64-LABEL: load_i8:12; LA64: # %bb.0:13; LA64-NEXT: ld.b $a0, $zero, 4014; LA64-NEXT: ret15 %a = load i8, ptr inttoptr (i64 40 to ptr), align 816 ret i8 %a17}18 19define signext i8 @load_i8_sext() nounwind {20; LA32-LABEL: load_i8_sext:21; LA32: # %bb.0:22; LA32-NEXT: ld.b $a0, $zero, 4023; LA32-NEXT: ret24;25; LA64-LABEL: load_i8_sext:26; LA64: # %bb.0:27; LA64-NEXT: ld.b $a0, $zero, 4028; LA64-NEXT: ret29 %a = load i8, ptr inttoptr (i64 40 to ptr), align 830 ret i8 %a31}32 33define i16 @load_i16() nounwind {34; LA32-LABEL: load_i16:35; LA32: # %bb.0:36; LA32-NEXT: ld.h $a0, $zero, 4037; LA32-NEXT: ret38;39; LA64-LABEL: load_i16:40; LA64: # %bb.0:41; LA64-NEXT: ld.h $a0, $zero, 4042; LA64-NEXT: ret43 %a = load i16, ptr inttoptr (i64 40 to ptr), align 844 ret i16 %a45}46 47define signext i16 @load_i16_sext() nounwind {48; LA32-LABEL: load_i16_sext:49; LA32: # %bb.0:50; LA32-NEXT: ld.h $a0, $zero, 4051; LA32-NEXT: ret52;53; LA64-LABEL: load_i16_sext:54; LA64: # %bb.0:55; LA64-NEXT: ld.h $a0, $zero, 4056; LA64-NEXT: ret57 %a = load i16, ptr inttoptr (i64 40 to ptr), align 858 ret i16 %a59}60 61define i32 @load_i32() nounwind {62; LA32-LABEL: load_i32:63; LA32: # %bb.0:64; LA32-NEXT: ld.w $a0, $zero, 4065; LA32-NEXT: ret66;67; LA64-LABEL: load_i32:68; LA64: # %bb.0:69; LA64-NEXT: ld.w $a0, $zero, 4070; LA64-NEXT: ret71 %a = load i32, ptr inttoptr (i64 40 to ptr), align 872 ret i32 %a73}74 75define signext i32 @load_i32_sext() nounwind {76; LA32-LABEL: load_i32_sext:77; LA32: # %bb.0:78; LA32-NEXT: ld.w $a0, $zero, 4079; LA32-NEXT: ret80;81; LA64-LABEL: load_i32_sext:82; LA64: # %bb.0:83; LA64-NEXT: ld.w $a0, $zero, 4084; LA64-NEXT: ret85 %a = load i32, ptr inttoptr (i64 40 to ptr), align 886 ret i32 %a87}88 89define i64 @load_i64() nounwind {90; LA32-LABEL: load_i64:91; LA32: # %bb.0:92; LA32-NEXT: ld.w $a0, $zero, 4093; LA32-NEXT: ld.w $a1, $zero, 4494; LA32-NEXT: ret95;96; LA64-LABEL: load_i64:97; LA64: # %bb.0:98; LA64-NEXT: ld.d $a0, $zero, 4099; LA64-NEXT: ret100 %a = load i64, ptr inttoptr (i64 40 to ptr), align 8101 ret i64 %a102}103 104define void @store_i8(i8 %v) nounwind {105; LA32-LABEL: store_i8:106; LA32: # %bb.0:107; LA32-NEXT: st.b $a0, $zero, 40108; LA32-NEXT: ret109;110; LA64-LABEL: store_i8:111; LA64: # %bb.0:112; LA64-NEXT: st.b $a0, $zero, 40113; LA64-NEXT: ret114 store i8 %v, ptr inttoptr (i64 40 to ptr), align 8115 ret void116}117 118define void @store_i16(i16 %v) nounwind {119; LA32-LABEL: store_i16:120; LA32: # %bb.0:121; LA32-NEXT: st.h $a0, $zero, 40122; LA32-NEXT: ret123;124; LA64-LABEL: store_i16:125; LA64: # %bb.0:126; LA64-NEXT: st.h $a0, $zero, 40127; LA64-NEXT: ret128 store i16 %v, ptr inttoptr (i64 40 to ptr), align 8129 ret void130}131 132define void @store_i32(i32 %v) nounwind {133; LA32-LABEL: store_i32:134; LA32: # %bb.0:135; LA32-NEXT: st.w $a0, $zero, 40136; LA32-NEXT: ret137;138; LA64-LABEL: store_i32:139; LA64: # %bb.0:140; LA64-NEXT: st.w $a0, $zero, 40141; LA64-NEXT: ret142 store i32 %v, ptr inttoptr (i64 40 to ptr), align 8143 ret void144}145 146define void @store_i64(i64 %v) nounwind {147; LA32-LABEL: store_i64:148; LA32: # %bb.0:149; LA32-NEXT: st.w $a1, $zero, 44150; LA32-NEXT: st.w $a0, $zero, 40151; LA32-NEXT: ret152;153; LA64-LABEL: store_i64:154; LA64: # %bb.0:155; LA64-NEXT: st.d $a0, $zero, 40156; LA64-NEXT: ret157 store i64 %v, ptr inttoptr (i64 40 to ptr), align 8158 ret void159}160