You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: sycl/doc/extensions/SPIRV/SPV_INTEL_usm_storage_classes.asciidoc
+25-12Lines changed: 25 additions & 12 deletions
Original file line number
Diff line number
Diff line change
@@ -39,7 +39,9 @@ This extension requires SPIR-V 1.0.
39
39
40
40
== Overview
41
41
42
-
This extension introduces two new storage classes that are sub classes of the CrossWorkgroup storage class. Using these more specific storage classes provides additional information that can enable optimization.
42
+
This extension introduces two new storage classes that are sub classes of the CrossWorkgroup storage class.
43
+
Using these more specific storage classes provides additional information that can enable optimization.
44
+
The extension also introduces two new conversion instructions to enable converting pointers from and to these storage classes.
43
45
44
46
== Extension Name
45
47
To use this extension within a SPIR-V module, the following *OpExtension* must be present in the module:
@@ -61,9 +63,11 @@ USMStorageClassesINTEL
61
63
[cols="70%,30%"]
62
64
[grid="rows"]
63
65
|====
66
+
| OpPtrCastToCrossWorkgroupINTEL | 5934
64
67
| USMStorageClassesINTEL | 5935
65
68
| DeviceOnlyINTEL | 5936
66
69
| HostOnlyINTEL | 5937
70
+
| OpCrossWorkgroupCastToPtrINTEL | 5938
67
71
|====
68
72
69
73
== Modifications to the SPIR-V Specification, Version 1.5 Revision 3
@@ -96,30 +100,38 @@ Modify Section 3.31, Capability, adding a row to the Capability table:
96
100
97
101
=== Instructions
98
102
99
-
Modify Section 3.36.11, Conversion Instructions, replacing the descriptions of *OpPtrCastToGeneric* and *OpGenericCastToPtr* with the following. Their required capabilities and operands remain unchanged.
103
+
Modify Section 3.36.11, Conversion Instructions, adding two new instructions as follows:
100
104
101
105
|===
102
-
*OpPtrCastToGeneric*
106
+
3+^| *OpPtrCastToCrossWorkgroupINTEL*
103
107
104
-
Converts a pointer's Storage Class to a more generic class.
108
+
Converts a pointer's Storage Class from a more specific class to *CrossWorkgroup*.
105
109
106
-
_Result Type_ must be an OpTypePointer. Its Storage Class must be *Generic* or *CrossWorkgroup*.
110
+
_Result Type_ must be an OpTypePointer. Its Storage Class must be *CrossWorkgroup*.
107
111
108
-
If _Result Type_'s Storage Class is *Generic*, _Pointer_ must point to the *Workgroup*, *CrossWorkgroup*, *Function*, *DeviceOnlyINTEL*, or *HostOnlyINTEL* Storage Class. If _Result Type_'s Storage Class is *CrossWorkgroup*, _Pointer_ must point to the *DeviceOnlyINTEL* or *HostOnlyINTEL* Storage Class.
112
+
_Pointer_ must point to the *DeviceOnlyINTEL* or *HostOnlyINTEL* Storage Class.
109
113
110
-
_Result Type_ and _Pointer_ must point to the same type.
114
+
_Result Type_ and _Pointer_ must point to the same type. 2+^| Capability: +
115
+
*USMStorageClassesINTEL*
116
+
| 4 | 5934 | <id> +
117
+
Result Type | Result <id> | <id> +
118
+
Pointer
111
119
|===
112
120
113
121
|===
114
-
*OpGenericCastToPtr*
122
+
3+^| *OpCrossWorkgroupCastToPtrINTEL*
115
123
116
-
Convert a pointer's Storage Class to a more specific class.
124
+
Convert a pointer's Storage Class from *CrossWorkgroup* to a more specific class.
117
125
118
-
_Result Type_ must be an OpTypePointer. If _Pointer_ points to the *Generic* Storage Class, _Result Type_'s Storage Class must be *Workgroup*, *CrossWorkgroup*, *Function*, *DeviceOnlyINTEL*, or *HostOnlyINTEL*. If _Pointer_ points to the *CrossWorkgroup* storage class, _Result Type_'s Storage Class must be *DeviceOnlyINTEL* or *HostOnlyINTEL*.
126
+
_Result Type_ must be an OpTypePointer. _Result Type_'s Storage Class must be *DeviceOnlyINTEL* or *HostOnlyINTEL*.
119
127
120
-
_Pointer_ must point to the *Generic* or *CrossWorkgroup* Storage Class.
128
+
_Pointer_ must point to the *CrossWorkgroup* Storage Class.
121
129
122
-
_Result Type_ and _Pointer_ must point to the same type.
130
+
_Result Type_ and _Pointer_ must point to the same type. 2+^| Capability: +
131
+
*USMStorageClassesINTEL*
132
+
| 4 | 5938 | <id> +
133
+
Result Type | Result <id> | <id> +
134
+
Pointer
123
135
|===
124
136
125
137
=== Validation Rules
@@ -144,4 +156,5 @@ None.
144
156
|========================================
145
157
|Rev|Date|Author|Changes
146
158
|A|2020-06-08|Joe Garvey|*First public draft*
159
+
|B|2020-06-18|Joe Garvey|*Added new conversion instructions*
0 commit comments