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