暫無描述
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.

090-Vectors-LoadStore.cs 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using System.Runtime.CompilerServices;
  2. using Burst.Compiler.IL.Tests.Helpers;
  3. using NUnit.Framework;
  4. using Unity.Mathematics;
  5. namespace Burst.Compiler.IL.Tests
  6. {
  7. [TestFixture]
  8. internal partial class VectorsLoadStore
  9. {
  10. public struct StructWithFloat4
  11. {
  12. public float4 Vec4;
  13. }
  14. [TestCompiler(DataRange.Standard)]
  15. public static float TestReturnFloat4(ref float4 result)
  16. {
  17. var value = Process(result);
  18. return value.x + value.y;
  19. }
  20. private static float4 Process(float4 vec)
  21. {
  22. vec.x += 5;
  23. return vec;
  24. }
  25. [TestCompiler]
  26. public static float FieldLoadStoreLocalFloat4()
  27. {
  28. var v = new float4(0);
  29. var v1 = v.x;
  30. v.y = 5;
  31. return v.y + v1;
  32. }
  33. [TestCompiler]
  34. public static float FieldLoadStoreIndirectFloat4()
  35. {
  36. var localStruct = new StructWithFloat4();
  37. localStruct.Vec4 = new float4(1.0f, 2.0f, 3.0f, 4.0f);
  38. return Vectors.ConvertToFloat(localStruct.Vec4);
  39. }
  40. [TestCompiler]
  41. public static float FieldLoadStoreLocalByRefFloat4()
  42. {
  43. var v = new float4(2);
  44. ChangeFloat4(ref v);
  45. return Vectors.ConvertToFloat(v);
  46. }
  47. private static void ChangeFloat4(ref float4 vect)
  48. {
  49. vect.x += 5;
  50. }
  51. [TestCompiler]
  52. public static float FieldStoreByOutFloat4()
  53. {
  54. float4 v;
  55. OutputFloat4(out v);
  56. return Vectors.ConvertToFloat(v);
  57. }
  58. private static void OutputFloat4(out float4 float4)
  59. {
  60. float4 = new float4(1, 2, 3, 4);
  61. }
  62. [TestCompiler]
  63. public static float FieldLoadStoreLocalByRefFloat3()
  64. {
  65. var v = new float3(2);
  66. ChangeFloat3(ref v);
  67. return Vectors.ConvertToFloat(v);
  68. }
  69. private static void ChangeFloat3(ref float3 vect)
  70. {
  71. vect.z += 5;
  72. }
  73. [TestCompiler]
  74. public static float FieldLoadStoreByRefFloat3()
  75. {
  76. var v = new float3(2);
  77. float3 result;
  78. LoadAndChangeFloat3(ref v, out result);
  79. return Vectors.ConvertToFloat(result);
  80. }
  81. private static void LoadAndChangeFloat3(ref float3 vect, out float3 result)
  82. {
  83. var local = vect;
  84. local.z += 5;
  85. result = local;
  86. }
  87. }
  88. }