Skip to content

Commit 3c389fc

Browse files
author
Yihan Wang
authored
[SYCLomatic] Relax the syntax restriction of asm builtin identifier (#1951)
Signed-off-by: Wang, Yihan <[email protected]>
1 parent 211f64d commit 3c389fc

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

clang/lib/DPCT/Asm/AsmLexer.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,10 @@ bool InlineAsmLexer::lexTokenInternal(InlineAsmToken &Result) {
195195
} else if (Char == '|') {
196196
++CurPtr;
197197
Kind = asmtok::pipe;
198+
} else if (isIdentifierContinue(Char)) {
199+
// PTX allows % builtin-identifier.
200+
Result.setFlag(InlineAsmToken::NeedsCleaning);
201+
return lexIdentifierContinue(Result, CurPtr);
198202
} else {
199203
// error: unknown escaped characher.
200204
return false;

clang/test/dpct/asm/syntax.cu

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ __global__ void gpu_ptx(int *d_ptr, int length) {
1717
unsigned int WARP_SZ;
1818
// CHECK: laneid = item_ct1.get_sub_group().get_local_linear_id();
1919
asm("mov.u32 %0, %%laneid;" : "=r"(laneid));
20+
21+
// CHECK: laneid = item_ct1.get_sub_group().get_local_linear_id();
22+
asm("mov.u32 %0, %laneid;" : "=r"(laneid));
23+
24+
// CHECK: warpid = item_ct1.get_sub_group().get_group_linear_id();
25+
asm("mov.u32 %0, %%warpid;" : "=r"(warpid));
2026

2127
// CHECK: warpid = item_ct1.get_sub_group().get_group_linear_id();
2228
asm("mov.u32 %0, %%warpid;" : "=r"(warpid));

0 commit comments

Comments
 (0)