1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s 2 3; Function Attrs: norecurse nounwind readonly 4define void @storef128(fp128* 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, fp128* %0, align 16 11 ret void 12} 13 14; Function Attrs: norecurse nounwind readonly 15define void @storef64(double* 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, double* %0, align 16 21 ret void 22} 23 24; Function Attrs: norecurse nounwind readonly 25define void @storef32(float* 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, float* %0, align 16 31 ret void 32} 33 34; Function Attrs: norecurse nounwind readonly 35define void @storei128(i128* 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, i128* %0, align 16 42 ret void 43} 44 45; Function Attrs: norecurse nounwind readonly 46define void @storei64(i64* 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, i64* %0, align 16 52 ret void 53} 54 55; Function Attrs: norecurse nounwind readonly 56define void @storei32(i32* 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, i32* %0, align 16 62 ret void 63} 64 65; Function Attrs: norecurse nounwind readonly 66define void @storei32tr(i32* 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 i32 72 store i32 %3, i32* %0, align 16 73 ret void 74} 75 76; Function Attrs: norecurse nounwind readonly 77define void @storei16(i16* 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, i16* %0, align 16 83 ret void 84} 85 86; Function Attrs: norecurse nounwind readonly 87define void @storei16tr(i16* 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 i16 93 store i16 %3, i16* %0, align 16 94 ret void 95} 96 97; Function Attrs: norecurse nounwind readonly 98define void @storei8(i8* 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, i8* %0, align 16 104 ret void 105} 106 107; Function Attrs: norecurse nounwind readonly 108define void @storei8tr(i8* 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 i8 114 store i8 %3, i8* %0, align 16 115 ret void 116} 117 118; Function Attrs: norecurse nounwind readonly 119define 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, %s11 125; CHECK-NEXT: b.l.t (, %s10) 126 %addr = alloca fp128, align 16 127 store fp128 %0, fp128* %addr, align 16 128 ret void 129} 130 131; Function Attrs: norecurse nounwind readonly 132define 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, %s11 137; CHECK-NEXT: b.l.t (, %s10) 138 %addr = alloca double, align 16 139 store double %0, double* %addr, align 16 140 ret void 141} 142 143; Function Attrs: norecurse nounwind readonly 144define 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, %s11 149; CHECK-NEXT: b.l.t (, %s10) 150 %addr = alloca float, align 16 151 store float %0, float* %addr, align 16 152 ret void 153} 154 155; Function Attrs: norecurse nounwind readonly 156define 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, %s11 162; CHECK-NEXT: b.l.t (, %s10) 163 %addr = alloca i128, align 16 164 store i128 %0, i128* %addr, align 16 165 ret void 166} 167 168; Function Attrs: norecurse nounwind readonly 169define 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, %s11 174; CHECK-NEXT: b.l.t (, %s10) 175 %addr = alloca i64, align 16 176 store i64 %0, i64* %addr, align 16 177 ret void 178} 179 180; Function Attrs: norecurse nounwind readonly 181define 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, %s11 186; CHECK-NEXT: b.l.t (, %s10) 187 %addr = alloca i32, align 16 188 store i32 %0, i32* %addr, align 16 189 ret void 190} 191 192; Function Attrs: norecurse nounwind readonly 193define 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, %s11 198; CHECK-NEXT: b.l.t (, %s10) 199 %addr = alloca i16, align 16 200 store i16 %0, i16* %addr, align 16 201 ret void 202} 203 204; Function Attrs: norecurse nounwind readonly 205define 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, %s11 210; CHECK-NEXT: b.l.t (, %s10) 211 %addr = alloca i8, align 16 212 store i8 %0, i8* %addr, align 16 213 ret void 214} 215