No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Aliasing.cs 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. namespace 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. /// <summary>
  15. /// Will cause a compiler error in Burst-compiled code if a and b do not alias.
  16. /// </summary>
  17. /// <typeparam name="A">The type of a.</typeparam>
  18. /// <typeparam name="B">The type of b.</typeparam>
  19. /// <param name="a">A reference to do aliasing checks on.</param>
  20. /// <param name="b">A reference to do aliasing checks on.</param>
  21. public static void ExpectAliased<A, B>(in A a, in B b) where A : struct where B : struct { }
  22. /// <summary>
  23. /// Will cause a compiler error in Burst-compiled code if a and b do not alias.
  24. /// </summary>
  25. /// <typeparam name="B">The type of b.</typeparam>
  26. /// <param name="a">A pointer to do aliasing checks on.</param>
  27. /// <param name="b">A reference to do aliasing checks on.</param>
  28. public static unsafe void ExpectAliased<B>(void* a, in B b) where B : struct { }
  29. /// <summary>
  30. /// Will cause a compiler error in Burst-compiled code if a and b do not alias.
  31. /// </summary>
  32. /// <typeparam name="A">The type of a.</typeparam>
  33. /// <param name="a">A reference to do aliasing checks on.</param>
  34. /// <param name="b">A pointer to do aliasing checks on.</param>
  35. public static unsafe void ExpectAliased<A>(in A a, void* b) where A : struct { }
  36. /// <summary>
  37. /// Will cause a compiler error in Burst-compiled code if a and b can alias.
  38. /// </summary>
  39. /// <param name="a">A pointer to do aliasing checks on.</param>
  40. /// <param name="b">A pointer to do aliasing checks on.</param>
  41. public static unsafe void ExpectNotAliased(void* a, void* b) { }
  42. /// <summary>
  43. /// Will cause a compiler error in Burst-compiled code if a and b can alias.
  44. /// </summary>
  45. /// <typeparam name="A">The type of a.</typeparam>
  46. /// <typeparam name="B">The type of b.</typeparam>
  47. /// <param name="a">A reference to do aliasing checks on.</param>
  48. /// <param name="b">A reference to do aliasing checks on.</param>
  49. public static void ExpectNotAliased<A, B>(in A a, in B b) where A : struct where B : struct { }
  50. /// <summary>
  51. /// Will cause a compiler error in Burst-compiled code if a and b can alias.
  52. /// </summary>
  53. /// <typeparam name="B">The type of b.</typeparam>
  54. /// <param name="a">A pointer to do aliasing checks on.</param>
  55. /// <param name="b">A reference to do aliasing checks on.</param>
  56. public static unsafe void ExpectNotAliased<B>(void* a, in B b) where B : struct { }
  57. /// <summary>
  58. /// Will cause a compiler error in Burst-compiled code if a and b can alias.
  59. /// </summary>
  60. /// <typeparam name="A">The type of a.</typeparam>
  61. /// <param name="a">A reference to do aliasing checks on.</param>
  62. /// <param name="b">A pointer to do aliasing checks on.</param>
  63. public static unsafe void ExpectNotAliased<A>(in A a, void* b) where A : struct { }
  64. }
  65. }