[System.Numerics.Vectors] Enable Vector on desktop profile
[mono-project.git] / mcs / class / System.Numerics.Vectors / System.Numerics / Register.cs
bloba27e922b9d818a158df5db7d9b783d8b262f1aec
1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
5 using System.Runtime.InteropServices;
7 namespace System.Numerics
9 /// <summary>
10 /// A structure describing the layout of an SSE2-sized register.
11 /// Contains overlapping fields representing the set of valid numeric types.
12 /// Allows the generic Vector'T struct to contain an explicit field layout.
13 /// </summary>
14 [StructLayout(LayoutKind.Explicit)]
15 internal struct Register
17 #region Internal Storage Fields
18 // Internal System.Byte Fields
19 [FieldOffset(0)]
20 internal Byte byte_0;
21 [FieldOffset(1)]
22 internal Byte byte_1;
23 [FieldOffset(2)]
24 internal Byte byte_2;
25 [FieldOffset(3)]
26 internal Byte byte_3;
27 [FieldOffset(4)]
28 internal Byte byte_4;
29 [FieldOffset(5)]
30 internal Byte byte_5;
31 [FieldOffset(6)]
32 internal Byte byte_6;
33 [FieldOffset(7)]
34 internal Byte byte_7;
35 [FieldOffset(8)]
36 internal Byte byte_8;
37 [FieldOffset(9)]
38 internal Byte byte_9;
39 [FieldOffset(10)]
40 internal Byte byte_10;
41 [FieldOffset(11)]
42 internal Byte byte_11;
43 [FieldOffset(12)]
44 internal Byte byte_12;
45 [FieldOffset(13)]
46 internal Byte byte_13;
47 [FieldOffset(14)]
48 internal Byte byte_14;
49 [FieldOffset(15)]
50 internal Byte byte_15;
52 // Internal System.SByte Fields
53 [FieldOffset(0)]
54 internal SByte sbyte_0;
55 [FieldOffset(1)]
56 internal SByte sbyte_1;
57 [FieldOffset(2)]
58 internal SByte sbyte_2;
59 [FieldOffset(3)]
60 internal SByte sbyte_3;
61 [FieldOffset(4)]
62 internal SByte sbyte_4;
63 [FieldOffset(5)]
64 internal SByte sbyte_5;
65 [FieldOffset(6)]
66 internal SByte sbyte_6;
67 [FieldOffset(7)]
68 internal SByte sbyte_7;
69 [FieldOffset(8)]
70 internal SByte sbyte_8;
71 [FieldOffset(9)]
72 internal SByte sbyte_9;
73 [FieldOffset(10)]
74 internal SByte sbyte_10;
75 [FieldOffset(11)]
76 internal SByte sbyte_11;
77 [FieldOffset(12)]
78 internal SByte sbyte_12;
79 [FieldOffset(13)]
80 internal SByte sbyte_13;
81 [FieldOffset(14)]
82 internal SByte sbyte_14;
83 [FieldOffset(15)]
84 internal SByte sbyte_15;
86 // Internal System.UInt16 Fields
87 [FieldOffset(0)]
88 internal UInt16 uint16_0;
89 [FieldOffset(2)]
90 internal UInt16 uint16_1;
91 [FieldOffset(4)]
92 internal UInt16 uint16_2;
93 [FieldOffset(6)]
94 internal UInt16 uint16_3;
95 [FieldOffset(8)]
96 internal UInt16 uint16_4;
97 [FieldOffset(10)]
98 internal UInt16 uint16_5;
99 [FieldOffset(12)]
100 internal UInt16 uint16_6;
101 [FieldOffset(14)]
102 internal UInt16 uint16_7;
104 // Internal System.Int16 Fields
105 [FieldOffset(0)]
106 internal Int16 int16_0;
107 [FieldOffset(2)]
108 internal Int16 int16_1;
109 [FieldOffset(4)]
110 internal Int16 int16_2;
111 [FieldOffset(6)]
112 internal Int16 int16_3;
113 [FieldOffset(8)]
114 internal Int16 int16_4;
115 [FieldOffset(10)]
116 internal Int16 int16_5;
117 [FieldOffset(12)]
118 internal Int16 int16_6;
119 [FieldOffset(14)]
120 internal Int16 int16_7;
122 // Internal System.UInt32 Fields
123 [FieldOffset(0)]
124 internal UInt32 uint32_0;
125 [FieldOffset(4)]
126 internal UInt32 uint32_1;
127 [FieldOffset(8)]
128 internal UInt32 uint32_2;
129 [FieldOffset(12)]
130 internal UInt32 uint32_3;
132 // Internal System.Int32 Fields
133 [FieldOffset(0)]
134 internal Int32 int32_0;
135 [FieldOffset(4)]
136 internal Int32 int32_1;
137 [FieldOffset(8)]
138 internal Int32 int32_2;
139 [FieldOffset(12)]
140 internal Int32 int32_3;
142 // Internal System.UInt64 Fields
143 [FieldOffset(0)]
144 internal UInt64 uint64_0;
145 [FieldOffset(8)]
146 internal UInt64 uint64_1;
148 // Internal System.Int64 Fields
149 [FieldOffset(0)]
150 internal Int64 int64_0;
151 [FieldOffset(8)]
152 internal Int64 int64_1;
154 // Internal System.Single Fields
155 [FieldOffset(0)]
156 internal Single single_0;
157 [FieldOffset(4)]
158 internal Single single_1;
159 [FieldOffset(8)]
160 internal Single single_2;
161 [FieldOffset(12)]
162 internal Single single_3;
164 // Internal System.Double Fields
165 [FieldOffset(0)]
166 internal Double double_0;
167 [FieldOffset(8)]
168 internal Double double_1;
170 #endregion Internal Storage Fields