Skip to content

Commit 2b29088

Browse files
committed
[SVE][Inline-Asm] Add support to specify SVE registers in the clobber list
Adds the SVE vector and predicate registers to the list of known registers. Patch by Kerry McLaughlin. Reviewers: erichkeane, sdesmalen, rengolin Reviewed By: sdesmalen Differential Revision: https://reviews.llvm.org/D64739 llvm-svn: 366878
1 parent ec4d8cd commit 2b29088

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

clang/lib/Basic/Targets/AArch64.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,10 +351,19 @@ const char *const AArch64TargetInfo::GCCRegNames[] = {
351351
"d12", "d13", "d14", "d15", "d16", "d17", "d18", "d19", "d20", "d21", "d22",
352352
"d23", "d24", "d25", "d26", "d27", "d28", "d29", "d30", "d31",
353353

354-
// Vector registers
354+
// Neon vector registers
355355
"v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", "v9", "v10", "v11",
356356
"v12", "v13", "v14", "v15", "v16", "v17", "v18", "v19", "v20", "v21", "v22",
357-
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"
357+
"v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31",
358+
359+
// SVE vector registers
360+
"z0", "z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8", "z9", "z10",
361+
"z11", "z12", "z13", "z14", "z15", "z16", "z17", "z18", "z19", "z20", "z21",
362+
"z22", "z23", "z24", "z25", "z26", "z27", "z28", "z29", "z30", "z31",
363+
364+
// SVE predicate registers
365+
"p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10",
366+
"p11", "p12", "p13", "p14", "p15"
358367
};
359368

360369
ArrayRef<const char *> AArch64TargetInfo::getGCCRegNames() const {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK
2+
3+
void test_sve_asm() {
4+
asm volatile(
5+
"ptrue p0.d\n"
6+
"ptrue p15.d\n"
7+
"add z0.d, p0/m, z0.d, z0.d\n"
8+
"add z31.d, p0/m, z31.d, z31.d\n"
9+
:
10+
:
11+
: "z0", "z31", "p0", "p15");
12+
// CHECK: "~{z0},~{z31},~{p0},~{p15}"
13+
}

0 commit comments

Comments
 (0)