xref: /llvm-project/llvm/test/CodeGen/VE/Scalar/load.ll (revision b006b60dc993b2e0ba3e412c80709477241b6be6)
11943b7f1SSimon Moll; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
21943b7f1SSimon Moll
31943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
4*b006b60dSNikita Popovdefine fp128 @loadf128(ptr nocapture readonly %0) {
51943b7f1SSimon Moll; CHECK-LABEL: loadf128:
644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
71943b7f1SSimon Moll; CHECK-NEXT:    ld %s2, 8(, %s0)
81943b7f1SSimon Moll; CHECK-NEXT:    ld %s3, (, %s0)
91943b7f1SSimon Moll; CHECK-NEXT:    or %s0, 0, %s2
101943b7f1SSimon Moll; CHECK-NEXT:    or %s1, 0, %s3
1144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
12*b006b60dSNikita Popov  %2 = load fp128, ptr %0, align 16
131943b7f1SSimon Moll  ret fp128 %2
141943b7f1SSimon Moll}
151943b7f1SSimon Moll
161943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
17*b006b60dSNikita Popovdefine double @loadf64(ptr nocapture readonly %0) {
181943b7f1SSimon Moll; CHECK-LABEL: loadf64:
1944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
201943b7f1SSimon Moll; CHECK-NEXT:    ld %s0, (, %s0)
2144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
22*b006b60dSNikita Popov  %2 = load double, ptr %0, align 16
231943b7f1SSimon Moll  ret double %2
241943b7f1SSimon Moll}
251943b7f1SSimon Moll
261943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
27*b006b60dSNikita Popovdefine float @loadf32(ptr nocapture readonly %0) {
281943b7f1SSimon Moll; CHECK-LABEL: loadf32:
2944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
301943b7f1SSimon Moll; CHECK-NEXT:    ldu %s0, (, %s0)
3144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
32*b006b60dSNikita Popov  %2 = load float, ptr %0, align 16
331943b7f1SSimon Moll  ret float %2
341943b7f1SSimon Moll}
351943b7f1SSimon Moll
361943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
37*b006b60dSNikita Popovdefine i128 @loadi128(ptr nocapture readonly %0) {
381943b7f1SSimon Moll; CHECK-LABEL: loadi128:
3944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
401943b7f1SSimon Moll; CHECK-NEXT:    ld %s2, (, %s0)
411943b7f1SSimon Moll; CHECK-NEXT:    ld %s1, 8(, %s0)
421943b7f1SSimon Moll; CHECK-NEXT:    or %s0, 0, %s2
4344a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
44*b006b60dSNikita Popov  %2 = load i128, ptr %0, align 16
451943b7f1SSimon Moll  ret i128 %2
461943b7f1SSimon Moll}
471943b7f1SSimon Moll
481943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
49*b006b60dSNikita Popovdefine i64 @loadi64(ptr nocapture readonly %0) {
501943b7f1SSimon Moll; CHECK-LABEL: loadi64:
5144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
521943b7f1SSimon Moll; CHECK-NEXT:    ld %s0, (, %s0)
5344a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
54*b006b60dSNikita Popov  %2 = load i64, ptr %0, align 16
551943b7f1SSimon Moll  ret i64 %2
561943b7f1SSimon Moll}
571943b7f1SSimon Moll
581943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
59*b006b60dSNikita Popovdefine i32 @loadi32(ptr nocapture readonly %0) {
601943b7f1SSimon Moll; CHECK-LABEL: loadi32:
6144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
621943b7f1SSimon Moll; CHECK-NEXT:    ldl.sx %s0, (, %s0)
6344a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
64*b006b60dSNikita Popov  %2 = load i32, ptr %0, align 16
651943b7f1SSimon Moll  ret i32 %2
661943b7f1SSimon Moll}
671943b7f1SSimon Moll
681943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
69*b006b60dSNikita Popovdefine i64 @loadi32sext(ptr nocapture readonly %0) {
701943b7f1SSimon Moll; CHECK-LABEL: loadi32sext:
7144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
721943b7f1SSimon Moll; CHECK-NEXT:    ldl.sx %s0, (, %s0)
7344a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
74*b006b60dSNikita Popov  %2 = load i32, ptr %0, align 16
751943b7f1SSimon Moll  %3 = sext i32 %2 to i64
761943b7f1SSimon Moll  ret i64 %3
771943b7f1SSimon Moll}
781943b7f1SSimon Moll
791943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
80*b006b60dSNikita Popovdefine i64 @loadi32zext(ptr nocapture readonly %0) {
811943b7f1SSimon Moll; CHECK-LABEL: loadi32zext:
8244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
831943b7f1SSimon Moll; CHECK-NEXT:    ldl.zx %s0, (, %s0)
8444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
85*b006b60dSNikita Popov  %2 = load i32, ptr %0, align 16
861943b7f1SSimon Moll  %3 = zext i32 %2 to i64
871943b7f1SSimon Moll  ret i64 %3
881943b7f1SSimon Moll}
891943b7f1SSimon Moll
901943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
91*b006b60dSNikita Popovdefine i16 @loadi16(ptr nocapture readonly %0) {
921943b7f1SSimon Moll; CHECK-LABEL: loadi16:
9344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
941943b7f1SSimon Moll; CHECK-NEXT:    ld2b.zx %s0, (, %s0)
9544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
96*b006b60dSNikita Popov  %2 = load i16, ptr %0, align 16
971943b7f1SSimon Moll  ret i16 %2
981943b7f1SSimon Moll}
991943b7f1SSimon Moll
1001943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
101*b006b60dSNikita Popovdefine i64 @loadi16sext(ptr nocapture readonly %0) {
1021943b7f1SSimon Moll; CHECK-LABEL: loadi16sext:
10344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1041943b7f1SSimon Moll; CHECK-NEXT:    ld2b.sx %s0, (, %s0)
10544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
106*b006b60dSNikita Popov  %2 = load i16, ptr %0, align 16
1071943b7f1SSimon Moll  %3 = sext i16 %2 to i64
1081943b7f1SSimon Moll  ret i64 %3
1091943b7f1SSimon Moll}
1101943b7f1SSimon Moll
1111943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
112*b006b60dSNikita Popovdefine i64 @loadi16zext(ptr nocapture readonly %0) {
1131943b7f1SSimon Moll; CHECK-LABEL: loadi16zext:
11444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1151943b7f1SSimon Moll; CHECK-NEXT:    ld2b.zx %s0, (, %s0)
11644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
117*b006b60dSNikita Popov  %2 = load i16, ptr %0, align 16
1181943b7f1SSimon Moll  %3 = zext i16 %2 to i64
1191943b7f1SSimon Moll  ret i64 %3
1201943b7f1SSimon Moll}
1211943b7f1SSimon Moll
1221943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
123*b006b60dSNikita Popovdefine i8 @loadi8(ptr nocapture readonly %0) {
1241943b7f1SSimon Moll; CHECK-LABEL: loadi8:
12544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1261943b7f1SSimon Moll; CHECK-NEXT:    ld1b.zx %s0, (, %s0)
12744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
128*b006b60dSNikita Popov  %2 = load i8, ptr %0, align 16
1291943b7f1SSimon Moll  ret i8 %2
1301943b7f1SSimon Moll}
1311943b7f1SSimon Moll
1321943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
133*b006b60dSNikita Popovdefine i64 @loadi8sext(ptr nocapture readonly %0) {
1341943b7f1SSimon Moll; CHECK-LABEL: loadi8sext:
13544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1361943b7f1SSimon Moll; CHECK-NEXT:    ld1b.sx %s0, (, %s0)
13744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
138*b006b60dSNikita Popov  %2 = load i8, ptr %0, align 16
1391943b7f1SSimon Moll  %3 = sext i8 %2 to i64
1401943b7f1SSimon Moll  ret i64 %3
1411943b7f1SSimon Moll}
1421943b7f1SSimon Moll
1431943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
144*b006b60dSNikita Popovdefine i64 @loadi8zext(ptr nocapture readonly %0) {
1451943b7f1SSimon Moll; CHECK-LABEL: loadi8zext:
14644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1471943b7f1SSimon Moll; CHECK-NEXT:    ld1b.zx %s0, (, %s0)
14844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
149*b006b60dSNikita Popov  %2 = load i8, ptr %0, align 16
1501943b7f1SSimon Moll  %3 = zext i8 %2 to i64
1511943b7f1SSimon Moll  ret i64 %3
1521943b7f1SSimon Moll}
1531943b7f1SSimon Moll
1541943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
1551943b7f1SSimon Molldefine fp128 @loadf128stk() {
1561943b7f1SSimon Moll; CHECK-LABEL: loadf128stk:
1571943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
158686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    ld %s1, (, %s11)
159686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    ld %s0, 8(, %s11)
160686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    adds.l %s11, 16, %s11
161686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1621943b7f1SSimon Moll  %addr = alloca fp128, align 16
163*b006b60dSNikita Popov  %1 = load fp128, ptr %addr, align 16
1641943b7f1SSimon Moll  ret fp128 %1
1651943b7f1SSimon Moll}
1661943b7f1SSimon Moll
1671943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
1681943b7f1SSimon Molldefine double @loadf64stk() {
1691943b7f1SSimon Moll; CHECK-LABEL: loadf64stk:
1701943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
171686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    ld %s0, (, %s11)
172686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    adds.l %s11, 16, %s11
173686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1741943b7f1SSimon Moll  %addr = alloca double, align 16
175*b006b60dSNikita Popov  %1 = load double, ptr %addr, align 16
1761943b7f1SSimon Moll  ret double %1
1771943b7f1SSimon Moll}
1781943b7f1SSimon Moll
1791943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
1801943b7f1SSimon Molldefine float @loadf32stk() {
1811943b7f1SSimon Moll; CHECK-LABEL: loadf32stk:
1821943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
183686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    ldu %s0, (, %s11)
184686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    adds.l %s11, 16, %s11
185686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1861943b7f1SSimon Moll  %addr = alloca float, align 16
187*b006b60dSNikita Popov  %1 = load float, ptr %addr, align 16
1881943b7f1SSimon Moll  ret float %1
1891943b7f1SSimon Moll}
1901943b7f1SSimon Moll
1911943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
1921943b7f1SSimon Molldefine i128 @loadi128stk() {
1931943b7f1SSimon Moll; CHECK-LABEL: loadi128stk:
1941943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
195686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    ld %s0, (, %s11)
196686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    ld %s1, 8(, %s11)
197686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    adds.l %s11, 16, %s11
198686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1991943b7f1SSimon Moll  %addr = alloca i128, align 16
200*b006b60dSNikita Popov  %1 = load i128, ptr %addr, align 16
2011943b7f1SSimon Moll  ret i128 %1
2021943b7f1SSimon Moll}
2031943b7f1SSimon Moll
2041943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
2051943b7f1SSimon Molldefine i64 @loadi64stk() {
2061943b7f1SSimon Moll; CHECK-LABEL: loadi64stk:
2071943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
208686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    ld %s0, (, %s11)
209686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    adds.l %s11, 16, %s11
210686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2111943b7f1SSimon Moll  %addr = alloca i64, align 16
212*b006b60dSNikita Popov  %1 = load i64, ptr %addr, align 16
2131943b7f1SSimon Moll  ret i64 %1
2141943b7f1SSimon Moll}
2151943b7f1SSimon Moll
2161943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
2171943b7f1SSimon Molldefine i32 @loadi32stk() {
2181943b7f1SSimon Moll; CHECK-LABEL: loadi32stk:
2191943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
220686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    ldl.sx %s0, (, %s11)
221686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    adds.l %s11, 16, %s11
222686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2231943b7f1SSimon Moll  %addr = alloca i32, align 16
224*b006b60dSNikita Popov  %1 = load i32, ptr %addr, align 16
2251943b7f1SSimon Moll  ret i32 %1
2261943b7f1SSimon Moll}
2271943b7f1SSimon Moll
2281943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
2291943b7f1SSimon Molldefine i16 @loadi16stk() {
2301943b7f1SSimon Moll; CHECK-LABEL: loadi16stk:
2311943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
232686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    ld2b.zx %s0, (, %s11)
233686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    adds.l %s11, 16, %s11
234686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2351943b7f1SSimon Moll  %addr = alloca i16, align 16
236*b006b60dSNikita Popov  %1 = load i16, ptr %addr, align 16
2371943b7f1SSimon Moll  ret i16 %1
2381943b7f1SSimon Moll}
2391943b7f1SSimon Moll
2401943b7f1SSimon Moll; Function Attrs: norecurse nounwind readonly
2411943b7f1SSimon Molldefine i8 @loadi8stk() {
2421943b7f1SSimon Moll; CHECK-LABEL: loadi8stk:
2431943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
244686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    ld1b.zx %s0, (, %s11)
245686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    adds.l %s11, 16, %s11
246686988a5SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2471943b7f1SSimon Moll  %addr = alloca i8, align 16
248*b006b60dSNikita Popov  %1 = load i8, ptr %addr, align 16
2491943b7f1SSimon Moll  ret i8 %1
2501943b7f1SSimon Moll}
251