A game about forced loneliness, made by TACStudios
1namespace Unity.Burst.CompilerServices
2{
3 /// <summary>
4 /// Compile-time aliasing intrinsics.
5 /// </summary>
6 public static class Aliasing
7 {
8 /// <summary>
9 /// Will cause a compiler error in Burst-compiled code if a and b do not alias.
10 /// </summary>
11 /// <param name="a">A pointer to do aliasing checks on.</param>
12 /// <param name="b">A pointer to do aliasing checks on.</param>
13 public static unsafe void ExpectAliased(void* a, void* b) { }
14
15 /// <summary>
16 /// Will cause a compiler error in Burst-compiled code if a and b do not alias.
17 /// </summary>
18 /// <typeparam name="A">The type of a.</typeparam>
19 /// <typeparam name="B">The type of b.</typeparam>
20 /// <param name="a">A reference to do aliasing checks on.</param>
21 /// <param name="b">A reference to do aliasing checks on.</param>
22 public static void ExpectAliased<A, B>(in A a, in B b) where A : struct where B : struct { }
23
24 /// <summary>
25 /// Will cause a compiler error in Burst-compiled code if a and b do not alias.
26 /// </summary>
27 /// <typeparam name="B">The type of b.</typeparam>
28 /// <param name="a">A pointer to do aliasing checks on.</param>
29 /// <param name="b">A reference to do aliasing checks on.</param>
30 public static unsafe void ExpectAliased<B>(void* a, in B b) where B : struct { }
31
32 /// <summary>
33 /// Will cause a compiler error in Burst-compiled code if a and b do not alias.
34 /// </summary>
35 /// <typeparam name="A">The type of a.</typeparam>
36 /// <param name="a">A reference to do aliasing checks on.</param>
37 /// <param name="b">A pointer to do aliasing checks on.</param>
38 public static unsafe void ExpectAliased<A>(in A a, void* b) where A : struct { }
39
40 /// <summary>
41 /// Will cause a compiler error in Burst-compiled code if a and b can alias.
42 /// </summary>
43 /// <param name="a">A pointer to do aliasing checks on.</param>
44 /// <param name="b">A pointer to do aliasing checks on.</param>
45 public static unsafe void ExpectNotAliased(void* a, void* b) { }
46
47 /// <summary>
48 /// Will cause a compiler error in Burst-compiled code if a and b can alias.
49 /// </summary>
50 /// <typeparam name="A">The type of a.</typeparam>
51 /// <typeparam name="B">The type of b.</typeparam>
52 /// <param name="a">A reference to do aliasing checks on.</param>
53 /// <param name="b">A reference to do aliasing checks on.</param>
54 public static void ExpectNotAliased<A, B>(in A a, in B b) where A : struct where B : struct { }
55
56 /// <summary>
57 /// Will cause a compiler error in Burst-compiled code if a and b can alias.
58 /// </summary>
59 /// <typeparam name="B">The type of b.</typeparam>
60 /// <param name="a">A pointer to do aliasing checks on.</param>
61 /// <param name="b">A reference to do aliasing checks on.</param>
62 public static unsafe void ExpectNotAliased<B>(void* a, in B b) where B : struct { }
63
64 /// <summary>
65 /// Will cause a compiler error in Burst-compiled code if a and b can alias.
66 /// </summary>
67 /// <typeparam name="A">The type of a.</typeparam>
68 /// <param name="a">A reference to do aliasing checks on.</param>
69 /// <param name="b">A pointer to do aliasing checks on.</param>
70 public static unsafe void ExpectNotAliased<A>(in A a, void* b) where A : struct { }
71 }
72}