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 double @loadf64stk() {12; CHECK-LABEL: loadf64stk:13; CHECK: .LBB{{[0-9]+}}_2:14; CHECK-NEXT: ld %s0, 8(, %s11)15; CHECK-NEXT: adds.l %s11, 16, %s1116; CHECK-NEXT: b.l.t (, %s10)17 %addr = alloca double, align 218 %1 = load double, ptr %addr, align 219 ret double %120}21 22; Function Attrs: norecurse nounwind readonly23define float @loadf32stk() {24; CHECK-LABEL: loadf32stk:25; CHECK: .LBB{{[0-9]+}}_2:26; CHECK-NEXT: ldu %s0, 12(, %s11)27; CHECK-NEXT: adds.l %s11, 16, %s1128; CHECK-NEXT: b.l.t (, %s10)29 %addr = alloca float, align 230 %1 = load float, ptr %addr, align 231 ret float %132}33 34; Function Attrs: norecurse nounwind readonly35define i64 @loadi64stk() {36; CHECK-LABEL: loadi64stk:37; CHECK: .LBB{{[0-9]+}}_2:38; CHECK-NEXT: ld %s0, 8(, %s11)39; CHECK-NEXT: adds.l %s11, 16, %s1140; CHECK-NEXT: b.l.t (, %s10)41 %addr = alloca i64, align 242 %1 = load i64, ptr %addr, align 243 ret i64 %144}45 46; Function Attrs: norecurse nounwind readonly47define i32 @loadi32stk() {48; CHECK-LABEL: loadi32stk:49; CHECK: .LBB{{[0-9]+}}_2:50; CHECK-NEXT: ldl.sx %s0, 12(, %s11)51; CHECK-NEXT: adds.l %s11, 16, %s1152; CHECK-NEXT: b.l.t (, %s10)53 %addr = alloca i32, align 254 %1 = load i32, ptr %addr, align 255 ret i32 %156}57 58; Function Attrs: norecurse nounwind readonly59define i16 @loadi16stk() {60; CHECK-LABEL: loadi16stk:61; CHECK: .LBB{{[0-9]+}}_2:62; CHECK-NEXT: ld2b.zx %s0, 14(, %s11)63; CHECK-NEXT: adds.l %s11, 16, %s1164; CHECK-NEXT: b.l.t (, %s10)65 %addr = alloca i16, align 266 %1 = load i16, ptr %addr, align 267 ret i16 %168}69 70; Function Attrs: norecurse nounwind readonly71define i8 @loadi8stk() {72; CHECK-LABEL: loadi8stk:73; CHECK: .LBB{{[0-9]+}}_2:74; CHECK-NEXT: ld1b.zx %s0, 14(, %s11)75; CHECK-NEXT: adds.l %s11, 16, %s1176; CHECK-NEXT: b.l.t (, %s10)77 %addr = alloca i8, align 278 %1 = load i8, ptr %addr, align 279 ret i8 %180}81 82; Function Attrs: norecurse nounwind readonly83define double @loadf64com() {84; CHECK-LABEL: loadf64com:85; CHECK: # %bb.0:86; CHECK-NEXT: lea %s0, vf64@lo87; CHECK-NEXT: and %s0, %s0, (32)088; CHECK-NEXT: lea.sl %s0, vf64@hi(, %s0)89; CHECK-NEXT: ld %s0, (, %s0)90; CHECK-NEXT: b.l.t (, %s10)91 %1 = load double, ptr @vf64, align 292 ret double %193}94 95; Function Attrs: norecurse nounwind readonly96define float @loadf32com() {97; CHECK-LABEL: loadf32com:98; CHECK: # %bb.0:99; CHECK-NEXT: lea %s0, vf32@lo100; CHECK-NEXT: and %s0, %s0, (32)0101; CHECK-NEXT: lea.sl %s0, vf32@hi(, %s0)102; CHECK-NEXT: ldu %s0, (, %s0)103; CHECK-NEXT: b.l.t (, %s10)104 %1 = load float, ptr @vf32, align 2105 ret float %1106}107 108; Function Attrs: norecurse nounwind readonly109define i64 @loadi64com() {110; CHECK-LABEL: loadi64com:111; CHECK: # %bb.0:112; CHECK-NEXT: lea %s0, vi64@lo113; CHECK-NEXT: and %s0, %s0, (32)0114; CHECK-NEXT: lea.sl %s0, vi64@hi(, %s0)115; CHECK-NEXT: ld %s0, (, %s0)116; CHECK-NEXT: b.l.t (, %s10)117 %1 = load i64, ptr @vi64, align 2118 ret i64 %1119}120 121; Function Attrs: norecurse nounwind readonly122define i32 @loadi32com() {123; CHECK-LABEL: loadi32com:124; CHECK: # %bb.0:125; CHECK-NEXT: lea %s0, vi32@lo126; CHECK-NEXT: and %s0, %s0, (32)0127; CHECK-NEXT: lea.sl %s0, vi32@hi(, %s0)128; CHECK-NEXT: ldl.sx %s0, (, %s0)129; CHECK-NEXT: b.l.t (, %s10)130 %1 = load i32, ptr @vi32, align 2131 ret i32 %1132}133 134; Function Attrs: norecurse nounwind readonly135define i16 @loadi16com() {136; CHECK-LABEL: loadi16com:137; CHECK: # %bb.0:138; CHECK-NEXT: lea %s0, vi16@lo139; CHECK-NEXT: and %s0, %s0, (32)0140; CHECK-NEXT: lea.sl %s0, vi16@hi(, %s0)141; CHECK-NEXT: ld2b.zx %s0, (, %s0)142; CHECK-NEXT: b.l.t (, %s10)143 %1 = load i16, ptr @vi16, align 2144 ret i16 %1145}146 147; Function Attrs: norecurse nounwind readonly148define i8 @loadi8com() {149; CHECK-LABEL: loadi8com:150; CHECK: # %bb.0:151; CHECK-NEXT: lea %s0, vi8@lo152; CHECK-NEXT: and %s0, %s0, (32)0153; CHECK-NEXT: lea.sl %s0, vi8@hi(, %s0)154; CHECK-NEXT: ld1b.zx %s0, (, %s0)155; CHECK-NEXT: b.l.t (, %s10)156 %1 = load i8, ptr @vi8, align 2157 ret i8 %1158}159 160