summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/docs/LanguageExtensions.html44
1 files changed, 44 insertions, 0 deletions
diff --git a/clang/docs/LanguageExtensions.html b/clang/docs/LanguageExtensions.html
index 5b8518b3305..d73e3026b1f 100644
--- a/clang/docs/LanguageExtensions.html
+++ b/clang/docs/LanguageExtensions.html
@@ -27,6 +27,11 @@ td {
<li><a href="#__builtin_shufflevector">__builtin_shufflevector</a></li>
</ul>
</li>
+<li><a href="#targetspecific">Target-Specific Extensions</a>
+ <ul>
+ <li><a href="#x86-specific">X86/X86-64 Language Extensions</a></li>
+ </ul>
+</li>
</ul>
@@ -224,6 +229,45 @@ with the same element type as vec1/vec2 but that has an element count equal to
the number of indices specified.
</p>
+<!-- ======================================================================= -->
+<h2 id="targetspecific">Target-Specific Extensions</h2>
+<!-- ======================================================================= -->
+
+<p>Clang supports some language features conditionally on some targets.</p>
+
+<!-- ======================================================================= -->
+<h3 id="x86-specific">X86/X86-64 Language Extensions</h3>
+<!-- ======================================================================= -->
+
+<p>The X86 backend has these language extensions:</p>
+
+<!-- ======================================================================= -->
+<h4 id="x86-gs-segment">Memory references off the GS segment</h4>
+<!-- ======================================================================= -->
+
+<p>Annotating a pointer with address space #256 causes it to be code generated
+relative to the X86 GS segment register.
+Note that this is a very very low-level feature that should only be used if you
+know what you're doing (for example in an OS kernel).</p>
+
+<p>Here is an example:</p>
+
+<pre>
+#define GS_RELATIVE __attribute__((address_space(256)))
+int foo(int GS_RELATIVE *P) {
+ return *P;
+}
+</pre>
+
+<p>Which compiles to (on X86-32):</p>
+
+<pre>
+_foo:
+ movl 4(%esp), %eax
+ movl %gs:(%eax), %eax
+ ret
+</pre>
+
</div>
</body>
</html>
OpenPOWER on IntegriCloud