xref: /llvm-project/llvm/test/CodeGen/VE/Scalar/inlineasm-vldvst.ll (revision b006b60dc993b2e0ba3e412c80709477241b6be6)
1; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s
2
3define void @vld(ptr %p, i64 %i) nounwind {
4; CHECK-LABEL: vld:
5; CHECK:       # %bb.0:
6; CHECK-NEXT:    #APP
7; CHECK-NEXT:    lea %s2, 256
8; CHECK-NEXT:    #NO_APP
9; CHECK-NEXT:    #APP
10; CHECK-NEXT:    lvl %s2
11; CHECK-NEXT:    #NO_APP
12; CHECK-NEXT:    #APP
13; CHECK-NEXT:    vld %v0, %s1, %s0
14; CHECK-NEXT:    #NO_APP
15; CHECK-NEXT:    b.l.t (, %s10)
16  %lvl = tail call i64 asm sideeffect "lea $0, 256", "=r"() nounwind
17  tail call void asm sideeffect "lvl $0", "r"(i64 %lvl) nounwind
18  tail call <256 x double> asm sideeffect "vld $0, $2, $1", "=v,r,r"(ptr %p, i64 %i) nounwind
19  ret void
20}
21
22define void @vldvst(ptr %p, i64 %i) nounwind {
23; CHECK-LABEL: vldvst:
24; CHECK:       # %bb.0:
25; CHECK-NEXT:    #APP
26; CHECK-NEXT:    lea %s2, 256
27; CHECK-NEXT:    #NO_APP
28; CHECK-NEXT:    #APP
29; CHECK-NEXT:    lvl %s2
30; CHECK-NEXT:    #NO_APP
31; CHECK-NEXT:    #APP
32; CHECK-NEXT:    vld %v0, %s1, %s0
33; CHECK-NEXT:    #NO_APP
34; CHECK-NEXT:    #APP
35; CHECK-NEXT:    vst %v0, %s1, %s0
36; CHECK-NEXT:    #NO_APP
37; CHECK-NEXT:    b.l.t (, %s10)
38  %lvl = tail call i64 asm sideeffect "lea $0, 256", "=r"() nounwind
39  tail call void asm sideeffect "lvl $0", "r"(i64 %lvl) nounwind
40  %1 = tail call <256 x double> asm sideeffect "vld $0, $2, $1", "=v,r,r"(ptr %p, i64 %i) nounwind
41  tail call void asm sideeffect "vst $0, $2, $1", "v,r,r"(<256 x double> %1, ptr %p, i64 %i) nounwind
42  ret void
43}
44
45define void @vld2vst2(ptr %p, i64 %i) nounwind {
46; CHECK-LABEL: vld2vst2:
47; CHECK:       # %bb.0:
48; CHECK-NEXT:    #APP
49; CHECK-NEXT:    lea %s2, 256
50; CHECK-NEXT:    #NO_APP
51; CHECK-NEXT:    #APP
52; CHECK-NEXT:    lvl %s2
53; CHECK-NEXT:    #NO_APP
54; CHECK-NEXT:    #APP
55; CHECK-NEXT:    vld %v0, %s1, %s0
56; CHECK-NEXT:    #NO_APP
57; CHECK-NEXT:    #APP
58; CHECK-NEXT:    vld %v1, %s1, %s0
59; CHECK-NEXT:    #NO_APP
60; CHECK-NEXT:    #APP
61; CHECK-NEXT:    vst %v0, %s1, %s0
62; CHECK-NEXT:    #NO_APP
63; CHECK-NEXT:    #APP
64; CHECK-NEXT:    vst %v1, %s1, %s0
65; CHECK-NEXT:    #NO_APP
66; CHECK-NEXT:    b.l.t (, %s10)
67  %lvl = tail call i64 asm sideeffect "lea $0, 256", "=r"() nounwind
68  tail call void asm sideeffect "lvl $0", "r"(i64 %lvl) nounwind
69  %1 = tail call <256 x double> asm sideeffect "vld $0, $2, $1", "=v,r,r"(ptr %p, i64 %i) nounwind
70  %2 = tail call <256 x double> asm sideeffect "vld $0, $2, $1", "=v,r,r"(ptr %p, i64 %i) nounwind
71  tail call void asm sideeffect "vst $0, $2, $1", "v,r,r"(<256 x double> %1, ptr %p, i64 %i) nounwind
72  tail call void asm sideeffect "vst $0, $2, $1", "v,r,r"(<256 x double> %2, ptr %p, i64 %i) nounwind
73  ret void
74}
75