160 lines · plain
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s2 3@vi8 = common dso_local local_unnamed_addr global i8 0, align 24@vi16 = common dso_local local_unnamed_addr global i16 0, align 25@vi32 = common dso_local local_unnamed_addr global i32 0, align 26@vi64 = common dso_local local_unnamed_addr global i64 0, align 27@vf32 = common dso_local local_unnamed_addr global float 0.000000e+00, align 28@vf64 = common dso_local local_unnamed_addr global double 0.000000e+00, align 29 10; Function Attrs: norecurse nounwind readonly11define void @storef64stk(double %0) {12; CHECK-LABEL: storef64stk:13; CHECK: .LBB{{[0-9]+}}_2:14; CHECK-NEXT: st %s0, 8(, %s11)15; CHECK-NEXT: adds.l %s11, 16, %s1116; CHECK-NEXT: b.l.t (, %s10)17 %addr = alloca double, align 218 store double %0, ptr %addr, align 219 ret void20}21 22; Function Attrs: norecurse nounwind readonly23define void @storef32stk(float %0) {24; CHECK-LABEL: storef32stk:25; CHECK: .LBB{{[0-9]+}}_2:26; CHECK-NEXT: stu %s0, 12(, %s11)27; CHECK-NEXT: adds.l %s11, 16, %s1128; CHECK-NEXT: b.l.t (, %s10)29 %addr = alloca float, align 230 store float %0, ptr %addr, align 231 ret void32}33 34; Function Attrs: norecurse nounwind readonly35define void @storei64stk(i64 %0) {36; CHECK-LABEL: storei64stk:37; CHECK: .LBB{{[0-9]+}}_2:38; CHECK-NEXT: st %s0, 8(, %s11)39; CHECK-NEXT: adds.l %s11, 16, %s1140; CHECK-NEXT: b.l.t (, %s10)41 %addr = alloca i64, align 242 store i64 %0, ptr %addr, align 243 ret void44}45 46; Function Attrs: norecurse nounwind readonly47define void @storei32stk(i32 %0) {48; CHECK-LABEL: storei32stk:49; CHECK: .LBB{{[0-9]+}}_2:50; CHECK-NEXT: stl %s0, 12(, %s11)51; CHECK-NEXT: adds.l %s11, 16, %s1152; CHECK-NEXT: b.l.t (, %s10)53 %addr = alloca i32, align 254 store i32 %0, ptr %addr, align 255 ret void56}57 58; Function Attrs: norecurse nounwind readonly59define void @storei16stk(i16 %0) {60; CHECK-LABEL: storei16stk:61; CHECK: .LBB{{[0-9]+}}_2:62; CHECK-NEXT: st2b %s0, 14(, %s11)63; CHECK-NEXT: adds.l %s11, 16, %s1164; CHECK-NEXT: b.l.t (, %s10)65 %addr = alloca i16, align 266 store i16 %0, ptr %addr, align 267 ret void68}69 70; Function Attrs: norecurse nounwind readonly71define void @storei8stk(i8 %0) {72; CHECK-LABEL: storei8stk:73; CHECK: .LBB{{[0-9]+}}_2:74; CHECK-NEXT: st1b %s0, 14(, %s11)75; CHECK-NEXT: adds.l %s11, 16, %s1176; CHECK-NEXT: b.l.t (, %s10)77 %addr = alloca i8, align 278 store i8 %0, ptr %addr, align 279 ret void80}81 82; Function Attrs: norecurse nounwind readonly83define void @storef64com(double %0) {84; CHECK-LABEL: storef64com:85; CHECK: # %bb.0:86; CHECK-NEXT: lea %s1, vf64@lo87; CHECK-NEXT: and %s1, %s1, (32)088; CHECK-NEXT: lea.sl %s1, vf64@hi(, %s1)89; CHECK-NEXT: st %s0, (, %s1)90; CHECK-NEXT: b.l.t (, %s10)91 store double %0, ptr @vf64, align 292 ret void93}94 95; Function Attrs: norecurse nounwind readonly96define void @storef32com(float %0) {97; CHECK-LABEL: storef32com:98; CHECK: # %bb.0:99; CHECK-NEXT: lea %s1, vf32@lo100; CHECK-NEXT: and %s1, %s1, (32)0101; CHECK-NEXT: lea.sl %s1, vf32@hi(, %s1)102; CHECK-NEXT: stu %s0, (, %s1)103; CHECK-NEXT: b.l.t (, %s10)104 store float %0, ptr @vf32, align 2105 ret void106}107 108; Function Attrs: norecurse nounwind readonly109define void @storei64com(i64 %0) {110; CHECK-LABEL: storei64com:111; CHECK: # %bb.0:112; CHECK-NEXT: lea %s1, vi64@lo113; CHECK-NEXT: and %s1, %s1, (32)0114; CHECK-NEXT: lea.sl %s1, vi64@hi(, %s1)115; CHECK-NEXT: st %s0, (, %s1)116; CHECK-NEXT: b.l.t (, %s10)117 store i64 %0, ptr @vi64, align 2118 ret void119}120 121; Function Attrs: norecurse nounwind readonly122define void @storei32com(i32 %0) {123; CHECK-LABEL: storei32com:124; CHECK: # %bb.0:125; CHECK-NEXT: lea %s1, vi32@lo126; CHECK-NEXT: and %s1, %s1, (32)0127; CHECK-NEXT: lea.sl %s1, vi32@hi(, %s1)128; CHECK-NEXT: stl %s0, (, %s1)129; CHECK-NEXT: b.l.t (, %s10)130 store i32 %0, ptr @vi32, align 2131 ret void132}133 134; Function Attrs: norecurse nounwind readonly135define void @storei16com(i16 %0) {136; CHECK-LABEL: storei16com:137; CHECK: # %bb.0:138; CHECK-NEXT: lea %s1, vi16@lo139; CHECK-NEXT: and %s1, %s1, (32)0140; CHECK-NEXT: lea.sl %s1, vi16@hi(, %s1)141; CHECK-NEXT: st2b %s0, (, %s1)142; CHECK-NEXT: b.l.t (, %s10)143 store i16 %0, ptr @vi16, align 2144 ret void145}146 147; Function Attrs: norecurse nounwind readonly148define void @storei8com(i8 %0) {149; CHECK-LABEL: storei8com:150; CHECK: # %bb.0:151; CHECK-NEXT: lea %s1, vi8@lo152; CHECK-NEXT: and %s1, %s1, (32)0153; CHECK-NEXT: lea.sl %s1, vi8@hi(, %s1)154; CHECK-NEXT: st1b %s0, (, %s1)155; CHECK-NEXT: b.l.t (, %s10)156 store i8 %0, ptr @vi8, align 2157 ret void158}159 160