Yarn: Add stubs for MSVC source-code annotations

This lets us use the SAL annotations to detect locking bugs on MSVC, and are nops on other platforms.

Bug: b/139010488
Change-Id: Ibe63befa9fb88078d2af3e9a9ade71bd21a37090
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/34811
Tested-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Yarn/SAL.hpp b/src/Yarn/SAL.hpp
new file mode 100644
index 0000000..acd03c7
--- /dev/null
+++ b/src/Yarn/SAL.hpp
@@ -0,0 +1,29 @@
+// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Stubs SAL annotation macros for platforms that do not support them.
+// See https://docs.microsoft.com/en-us/visualstudio/code-quality/annotating-locking-behavior?view=vs-2019
+
+#ifndef yarn_sal_hpp
+#define yarn_sal_hpp
+
+#ifndef _Requires_lock_held_
+#define _Requires_lock_held_(x)
+#endif
+
+#ifndef _Requires_lock_not_held_
+#define _Requires_lock_not_held_(x)
+#endif
+
+#endif // yarn_sal_hpp