Merge pull request #3262 from lindenlab/add_continuations_test
[mono.git] / mcs / class / System.Numerics.Vectors / System.Numerics / Register.cs
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.
4
5 using System.Runtime.InteropServices;
6
7 namespace System.Numerics
8 {
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
16     {
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;
51
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;
85
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;
103
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;
121
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;
131
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;
141
142         // Internal System.UInt64 Fields
143         [FieldOffset(0)]
144         internal UInt64 uint64_0;
145         [FieldOffset(8)]
146         internal UInt64 uint64_1;
147
148         // Internal System.Int64 Fields
149         [FieldOffset(0)]
150         internal Int64 int64_0;
151         [FieldOffset(8)]
152         internal Int64 int64_1;
153
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;
163
164         // Internal System.Double Fields
165         [FieldOffset(0)]
166         internal Double double_0;
167         [FieldOffset(8)]
168         internal Double double_1;
169
170         #endregion Internal Storage Fields
171     }
172 }