215 lines · plain
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s2 3; Function Attrs: norecurse nounwind readonly4define void @storef128(ptr nocapture %0, fp128 %1) {5; CHECK-LABEL: storef128:6; CHECK: # %bb.0:7; CHECK-NEXT: st %s2, 8(, %s0)8; CHECK-NEXT: st %s3, (, %s0)9; CHECK-NEXT: b.l.t (, %s10)10 store fp128 %1, ptr %0, align 1611 ret void12}13 14; Function Attrs: norecurse nounwind readonly15define void @storef64(ptr nocapture %0, double %1) {16; CHECK-LABEL: storef64:17; CHECK: # %bb.0:18; CHECK-NEXT: st %s1, (, %s0)19; CHECK-NEXT: b.l.t (, %s10)20 store double %1, ptr %0, align 1621 ret void22}23 24; Function Attrs: norecurse nounwind readonly25define void @storef32(ptr nocapture %0, float %1) {26; CHECK-LABEL: storef32:27; CHECK: # %bb.0:28; CHECK-NEXT: stu %s1, (, %s0)29; CHECK-NEXT: b.l.t (, %s10)30 store float %1, ptr %0, align 1631 ret void32}33 34; Function Attrs: norecurse nounwind readonly35define void @storei128(ptr nocapture %0, i128 %1) {36; CHECK-LABEL: storei128:37; CHECK: # %bb.0:38; CHECK-NEXT: st %s2, 8(, %s0)39; CHECK-NEXT: st %s1, (, %s0)40; CHECK-NEXT: b.l.t (, %s10)41 store i128 %1, ptr %0, align 1642 ret void43}44 45; Function Attrs: norecurse nounwind readonly46define void @storei64(ptr nocapture %0, i64 %1) {47; CHECK-LABEL: storei64:48; CHECK: # %bb.0:49; CHECK-NEXT: st %s1, (, %s0)50; CHECK-NEXT: b.l.t (, %s10)51 store i64 %1, ptr %0, align 1652 ret void53}54 55; Function Attrs: norecurse nounwind readonly56define void @storei32(ptr nocapture %0, i32 %1) {57; CHECK-LABEL: storei32:58; CHECK: # %bb.0:59; CHECK-NEXT: stl %s1, (, %s0)60; CHECK-NEXT: b.l.t (, %s10)61 store i32 %1, ptr %0, align 1662 ret void63}64 65; Function Attrs: norecurse nounwind readonly66define void @storei32tr(ptr nocapture %0, i64 %1) {67; CHECK-LABEL: storei32tr:68; CHECK: # %bb.0:69; CHECK-NEXT: stl %s1, (, %s0)70; CHECK-NEXT: b.l.t (, %s10)71 %3 = trunc i64 %1 to i3272 store i32 %3, ptr %0, align 1673 ret void74}75 76; Function Attrs: norecurse nounwind readonly77define void @storei16(ptr nocapture %0, i16 %1) {78; CHECK-LABEL: storei16:79; CHECK: # %bb.0:80; CHECK-NEXT: st2b %s1, (, %s0)81; CHECK-NEXT: b.l.t (, %s10)82 store i16 %1, ptr %0, align 1683 ret void84}85 86; Function Attrs: norecurse nounwind readonly87define void @storei16tr(ptr nocapture %0, i64 %1) {88; CHECK-LABEL: storei16tr:89; CHECK: # %bb.0:90; CHECK-NEXT: st2b %s1, (, %s0)91; CHECK-NEXT: b.l.t (, %s10)92 %3 = trunc i64 %1 to i1693 store i16 %3, ptr %0, align 1694 ret void95}96 97; Function Attrs: norecurse nounwind readonly98define void @storei8(ptr nocapture %0, i8 %1) {99; CHECK-LABEL: storei8:100; CHECK: # %bb.0:101; CHECK-NEXT: st1b %s1, (, %s0)102; CHECK-NEXT: b.l.t (, %s10)103 store i8 %1, ptr %0, align 16104 ret void105}106 107; Function Attrs: norecurse nounwind readonly108define void @storei8tr(ptr nocapture %0, i64 %1) {109; CHECK-LABEL: storei8tr:110; CHECK: # %bb.0:111; CHECK-NEXT: st1b %s1, (, %s0)112; CHECK-NEXT: b.l.t (, %s10)113 %3 = trunc i64 %1 to i8114 store i8 %3, ptr %0, align 16115 ret void116}117 118; Function Attrs: norecurse nounwind readonly119define void @storef128stk(fp128 %0) {120; CHECK-LABEL: storef128stk:121; CHECK: .LBB{{[0-9]+}}_2:122; CHECK-NEXT: st %s1, (, %s11)123; CHECK-NEXT: st %s0, 8(, %s11)124; CHECK-NEXT: adds.l %s11, 16, %s11125; CHECK-NEXT: b.l.t (, %s10)126 %addr = alloca fp128, align 16127 store fp128 %0, ptr %addr, align 16128 ret void129}130 131; Function Attrs: norecurse nounwind readonly132define void @storef64stk(double %0) {133; CHECK-LABEL: storef64stk:134; CHECK: .LBB{{[0-9]+}}_2:135; CHECK-NEXT: st %s0, (, %s11)136; CHECK-NEXT: adds.l %s11, 16, %s11137; CHECK-NEXT: b.l.t (, %s10)138 %addr = alloca double, align 16139 store double %0, ptr %addr, align 16140 ret void141}142 143; Function Attrs: norecurse nounwind readonly144define void @storef32stk(float %0) {145; CHECK-LABEL: storef32stk:146; CHECK: .LBB{{[0-9]+}}_2:147; CHECK-NEXT: stu %s0, (, %s11)148; CHECK-NEXT: adds.l %s11, 16, %s11149; CHECK-NEXT: b.l.t (, %s10)150 %addr = alloca float, align 16151 store float %0, ptr %addr, align 16152 ret void153}154 155; Function Attrs: norecurse nounwind readonly156define void @storei128stk(i128 %0) {157; CHECK-LABEL: storei128stk:158; CHECK: .LBB{{[0-9]+}}_2:159; CHECK-NEXT: st %s1, 8(, %s11)160; CHECK-NEXT: st %s0, (, %s11)161; CHECK-NEXT: adds.l %s11, 16, %s11162; CHECK-NEXT: b.l.t (, %s10)163 %addr = alloca i128, align 16164 store i128 %0, ptr %addr, align 16165 ret void166}167 168; Function Attrs: norecurse nounwind readonly169define void @storei64stk(i64 %0) {170; CHECK-LABEL: storei64stk:171; CHECK: .LBB{{[0-9]+}}_2:172; CHECK-NEXT: st %s0, (, %s11)173; CHECK-NEXT: adds.l %s11, 16, %s11174; CHECK-NEXT: b.l.t (, %s10)175 %addr = alloca i64, align 16176 store i64 %0, ptr %addr, align 16177 ret void178}179 180; Function Attrs: norecurse nounwind readonly181define void @storei32stk(i32 %0) {182; CHECK-LABEL: storei32stk:183; CHECK: .LBB{{[0-9]+}}_2:184; CHECK-NEXT: stl %s0, (, %s11)185; CHECK-NEXT: adds.l %s11, 16, %s11186; CHECK-NEXT: b.l.t (, %s10)187 %addr = alloca i32, align 16188 store i32 %0, ptr %addr, align 16189 ret void190}191 192; Function Attrs: norecurse nounwind readonly193define void @storei16stk(i16 %0) {194; CHECK-LABEL: storei16stk:195; CHECK: .LBB{{[0-9]+}}_2:196; CHECK-NEXT: st2b %s0, (, %s11)197; CHECK-NEXT: adds.l %s11, 16, %s11198; CHECK-NEXT: b.l.t (, %s10)199 %addr = alloca i16, align 16200 store i16 %0, ptr %addr, align 16201 ret void202}203 204; Function Attrs: norecurse nounwind readonly205define void @storei8stk(i8 %0) {206; CHECK-LABEL: storei8stk:207; CHECK: .LBB{{[0-9]+}}_2:208; CHECK-NEXT: st1b %s0, (, %s11)209; CHECK-NEXT: adds.l %s11, 16, %s11210; CHECK-NEXT: b.l.t (, %s10)211 %addr = alloca i8, align 16212 store i8 %0, ptr %addr, align 16213 ret void214}215