| Issue |
174472
|
| Summary |
[HLSL] Add support for groupshared args to HLSL 202x
|
| Labels |
HLSL
|
| Assignees |
|
| Reporter |
spall
|
Implement support for groupshared arguments in 202x based on this proposal: https://github.com/microsoft/hlsl-specs/blob/main/proposals/0043-groupshared-arguments.md
Errors:
- Error if a function annotated with 'export' or '[noinline]' annotates a parameter with groupshared.
- Error if the argument to a groupshared parameter is not a groupshared variable.
- Error if the argument to a groupshared parameter is not exactly the same type as the parameter. No implicit or explicit conversion are allowed.
- the following overload calls are errors.
Given this set of overloads
```
void fn(groupshared uint shared);
void fn(inout uint u);
```
This call site is ambiguous and results in an error:
```
groupshared uint Shared;
void caller() {
fn(Shared);
}
```
This call site is not ambiguous however:
```
void caller() {
uint Local;
fn(Local);
}
```
Given this set of overloads
```
void fn(groupshared uint shared);
void fn(uint u);
```
This call site is ambiguous and results in an error:
```
groupshared uint Shared;
void caller() {
fn(Shared);
}
```
These call sites are not ambiguous however:
```
void caller() {
uint Local;
fn(Local);
fn(5);
}
```
Warnings:
- Warn if language mode is earlier than 202x and groupshared annotation is used on a parameter
- Warn when language mode is 202x or later and a groupshared variable is passed to a function annotated with inout.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs