polylane 0.12.0

Portable and versatile SIMD.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
// Copyright 2025 Gabriel Bjørnager Jensen.
//
// This Source Code Form is subject to the terms of
// the Mozilla Public License, v. 2.0. If a copy of
// the MPL was not distributed with this file, you
// can obtain one at:
// <https://mozilla.org/MPL/2.0/>.

/// Denotes a valid instance of [`Layout`](crate::simd::Layout).
pub trait ValidLayout: crate::simd::seal::ValidLayout {}

macro_rules! impl_valid_layout {
	{ $([$Elm:ty; $len:expr] => $Alignement:ty),*$(,)? } => {
		$(
			unsafe impl ::polylane::simd::seal::ValidLayout for ::polylane::simd::Layout<$Elm, $len> {
				type Alignement = $Alignement;

				type Bytes = [::core::primitive::u8; { ::core::mem::size_of::<$Elm>() * $len }];
			}

			impl ::polylane::simd::ValidLayout for ::polylane::simd::Layout<$Elm, $len> {}
		)*
	};
}

macro_rules! impl_valid_layout_for_const_ptr {
	{ $([$Elm:ty; $len:expr] => $Alignement:ty),*$(,)? } => {
		$(
			unsafe impl<T: ::core::marker::Sized> ::polylane::simd::seal::ValidLayout for ::polylane::simd::Layout<*const T, $len> {
				type Alignement = $Alignement;

				type Bytes = [::core::primitive::u8; { ::core::mem::size_of::<::core::primitive::usize>() * $len }];
			}

			impl<T: ::core::marker::Sized> ::polylane::simd::ValidLayout for ::polylane::simd::Layout<*const T, $len> {}
		)*
	};
}

macro_rules! impl_valid_layout_for_mut_ptr {
	{ $([$Elm:ty; $len:expr] => $Alignement:ty),*$(,)? } => {
		$(
			unsafe impl<T: ::core::marker::Sized> ::polylane::simd::seal::ValidLayout for ::polylane::simd::Layout<*mut T, $len> {
				type Alignement = $Alignement;

				type Bytes = [::core::primitive::u8; { ::core::mem::size_of::<::core::primitive::usize>() * $len }];
			}

			impl<T: ::core::marker::Sized> ::polylane::simd::ValidLayout for ::polylane::simd::Layout<*mut T, $len> {}
		)*
	};
}

impl_valid_layout! {
	[u8; 01] => crate::simd::AlignementByteX1,
	[u8; 02] => crate::simd::AlignementByteX2,
	[u8; 03] => crate::simd::AlignementByteX1,
	[u8; 04] => crate::simd::AlignementByteX4,
	[u8; 05] => crate::simd::AlignementByteX1,
	[u8; 06] => crate::simd::AlignementByteX2,
	[u8; 07] => crate::simd::AlignementByteX1,
	[u8; 08] => crate::simd::AlignementByteX8,
	[u8; 09] => crate::simd::AlignementByteX1,
	[u8; 10] => crate::simd::AlignementByteX2,
	[u8; 11] => crate::simd::AlignementByteX1,
	[u8; 12] => crate::simd::AlignementByteX4,
	[u8; 13] => crate::simd::AlignementByteX1,
	[u8; 14] => crate::simd::AlignementByteX2,
	[u8; 15] => crate::simd::AlignementByteX1,
	[u8; 16] => crate::simd::AlignementByteX16,
	[u8; 17] => crate::simd::AlignementByteX1,
	[u8; 18] => crate::simd::AlignementByteX2,
	[u8; 19] => crate::simd::AlignementByteX1,
	[u8; 20] => crate::simd::AlignementByteX4,
	[u8; 21] => crate::simd::AlignementByteX1,
	[u8; 22] => crate::simd::AlignementByteX2,
	[u8; 23] => crate::simd::AlignementByteX1,
	[u8; 24] => crate::simd::AlignementByteX8,
	[u8; 25] => crate::simd::AlignementByteX1,
	[u8; 26] => crate::simd::AlignementByteX2,
	[u8; 27] => crate::simd::AlignementByteX1,
	[u8; 28] => crate::simd::AlignementByteX4,
	[u8; 29] => crate::simd::AlignementByteX1,
	[u8; 30] => crate::simd::AlignementByteX2,
	[u8; 31] => crate::simd::AlignementByteX1,
	[u8; 32] => crate::simd::AlignementByteX32,
	[u8; 33] => crate::simd::AlignementByteX1,
	[u8; 34] => crate::simd::AlignementByteX2,
	[u8; 35] => crate::simd::AlignementByteX1,
	[u8; 36] => crate::simd::AlignementByteX4,
	[u8; 37] => crate::simd::AlignementByteX1,
	[u8; 38] => crate::simd::AlignementByteX2,
	[u8; 39] => crate::simd::AlignementByteX1,
	[u8; 40] => crate::simd::AlignementByteX8,
	[u8; 41] => crate::simd::AlignementByteX1,
	[u8; 42] => crate::simd::AlignementByteX2,
	[u8; 43] => crate::simd::AlignementByteX1,
	[u8; 44] => crate::simd::AlignementByteX4,
	[u8; 45] => crate::simd::AlignementByteX1,
	[u8; 46] => crate::simd::AlignementByteX2,
	[u8; 47] => crate::simd::AlignementByteX1,
	[u8; 48] => crate::simd::AlignementByteX16,
	[u8; 49] => crate::simd::AlignementByteX1,
	[u8; 50] => crate::simd::AlignementByteX2,
	[u8; 51] => crate::simd::AlignementByteX1,
	[u8; 52] => crate::simd::AlignementByteX4,
	[u8; 53] => crate::simd::AlignementByteX1,
	[u8; 54] => crate::simd::AlignementByteX2,
	[u8; 55] => crate::simd::AlignementByteX1,
	[u8; 56] => crate::simd::AlignementByteX8,
	[u8; 57] => crate::simd::AlignementByteX1,
	[u8; 58] => crate::simd::AlignementByteX2,
	[u8; 59] => crate::simd::AlignementByteX1,
	[u8; 60] => crate::simd::AlignementByteX4,
	[u8; 61] => crate::simd::AlignementByteX1,
	[u8; 62] => crate::simd::AlignementByteX2,
	[u8; 63] => crate::simd::AlignementByteX1,
	[u8; 64] => crate::simd::AlignementByteX64,

	[i8; 01] => crate::simd::AlignementByteX1,
	[i8; 02] => crate::simd::AlignementByteX2,
	[i8; 03] => crate::simd::AlignementByteX1,
	[i8; 04] => crate::simd::AlignementByteX4,
	[i8; 05] => crate::simd::AlignementByteX1,
	[i8; 06] => crate::simd::AlignementByteX2,
	[i8; 07] => crate::simd::AlignementByteX1,
	[i8; 08] => crate::simd::AlignementByteX8,
	[i8; 09] => crate::simd::AlignementByteX1,
	[i8; 10] => crate::simd::AlignementByteX2,
	[i8; 11] => crate::simd::AlignementByteX1,
	[i8; 12] => crate::simd::AlignementByteX4,
	[i8; 13] => crate::simd::AlignementByteX1,
	[i8; 14] => crate::simd::AlignementByteX2,
	[i8; 15] => crate::simd::AlignementByteX1,
	[i8; 16] => crate::simd::AlignementByteX16,
	[i8; 17] => crate::simd::AlignementByteX1,
	[i8; 18] => crate::simd::AlignementByteX2,
	[i8; 19] => crate::simd::AlignementByteX1,
	[i8; 20] => crate::simd::AlignementByteX4,
	[i8; 21] => crate::simd::AlignementByteX1,
	[i8; 22] => crate::simd::AlignementByteX2,
	[i8; 23] => crate::simd::AlignementByteX1,
	[i8; 24] => crate::simd::AlignementByteX8,
	[i8; 25] => crate::simd::AlignementByteX1,
	[i8; 26] => crate::simd::AlignementByteX2,
	[i8; 27] => crate::simd::AlignementByteX1,
	[i8; 28] => crate::simd::AlignementByteX4,
	[i8; 29] => crate::simd::AlignementByteX1,
	[i8; 30] => crate::simd::AlignementByteX2,
	[i8; 31] => crate::simd::AlignementByteX1,
	[i8; 32] => crate::simd::AlignementByteX32,
	[i8; 33] => crate::simd::AlignementByteX1,
	[i8; 34] => crate::simd::AlignementByteX2,
	[i8; 35] => crate::simd::AlignementByteX1,
	[i8; 36] => crate::simd::AlignementByteX4,
	[i8; 37] => crate::simd::AlignementByteX1,
	[i8; 38] => crate::simd::AlignementByteX2,
	[i8; 39] => crate::simd::AlignementByteX1,
	[i8; 40] => crate::simd::AlignementByteX8,
	[i8; 41] => crate::simd::AlignementByteX1,
	[i8; 42] => crate::simd::AlignementByteX2,
	[i8; 43] => crate::simd::AlignementByteX1,
	[i8; 44] => crate::simd::AlignementByteX4,
	[i8; 45] => crate::simd::AlignementByteX1,
	[i8; 46] => crate::simd::AlignementByteX2,
	[i8; 47] => crate::simd::AlignementByteX1,
	[i8; 48] => crate::simd::AlignementByteX16,
	[i8; 49] => crate::simd::AlignementByteX1,
	[i8; 50] => crate::simd::AlignementByteX2,
	[i8; 51] => crate::simd::AlignementByteX1,
	[i8; 52] => crate::simd::AlignementByteX4,
	[i8; 53] => crate::simd::AlignementByteX1,
	[i8; 54] => crate::simd::AlignementByteX2,
	[i8; 55] => crate::simd::AlignementByteX1,
	[i8; 56] => crate::simd::AlignementByteX8,
	[i8; 57] => crate::simd::AlignementByteX1,
	[i8; 58] => crate::simd::AlignementByteX2,
	[i8; 59] => crate::simd::AlignementByteX1,
	[i8; 60] => crate::simd::AlignementByteX4,
	[i8; 61] => crate::simd::AlignementByteX1,
	[i8; 62] => crate::simd::AlignementByteX2,
	[i8; 63] => crate::simd::AlignementByteX1,
	[i8; 64] => crate::simd::AlignementByteX64,

	[u16; 01] => crate::simd::AlignementByteX2,
	[u16; 02] => crate::simd::AlignementByteX4,
	[u16; 03] => crate::simd::AlignementByteX2,
	[u16; 04] => crate::simd::AlignementByteX8,
	[u16; 05] => crate::simd::AlignementByteX2,
	[u16; 06] => crate::simd::AlignementByteX4,
	[u16; 07] => crate::simd::AlignementByteX2,
	[u16; 08] => crate::simd::AlignementByteX16,
	[u16; 09] => crate::simd::AlignementByteX2,
	[u16; 10] => crate::simd::AlignementByteX4,
	[u16; 11] => crate::simd::AlignementByteX2,
	[u16; 12] => crate::simd::AlignementByteX8,
	[u16; 13] => crate::simd::AlignementByteX2,
	[u16; 14] => crate::simd::AlignementByteX4,
	[u16; 15] => crate::simd::AlignementByteX2,
	[u16; 16] => crate::simd::AlignementByteX32,
	[u16; 17] => crate::simd::AlignementByteX2,
	[u16; 18] => crate::simd::AlignementByteX4,
	[u16; 19] => crate::simd::AlignementByteX2,
	[u16; 20] => crate::simd::AlignementByteX8,
	[u16; 21] => crate::simd::AlignementByteX2,
	[u16; 22] => crate::simd::AlignementByteX4,
	[u16; 23] => crate::simd::AlignementByteX2,
	[u16; 24] => crate::simd::AlignementByteX16,
	[u16; 25] => crate::simd::AlignementByteX2,
	[u16; 26] => crate::simd::AlignementByteX4,
	[u16; 27] => crate::simd::AlignementByteX2,
	[u16; 28] => crate::simd::AlignementByteX8,
	[u16; 29] => crate::simd::AlignementByteX2,
	[u16; 30] => crate::simd::AlignementByteX4,
	[u16; 31] => crate::simd::AlignementByteX2,
	[u16; 32] => crate::simd::AlignementByteX64,
	[u16; 33] => crate::simd::AlignementByteX2,
	[u16; 34] => crate::simd::AlignementByteX4,
	[u16; 35] => crate::simd::AlignementByteX2,
	[u16; 36] => crate::simd::AlignementByteX8,
	[u16; 37] => crate::simd::AlignementByteX2,
	[u16; 38] => crate::simd::AlignementByteX4,
	[u16; 39] => crate::simd::AlignementByteX2,
	[u16; 40] => crate::simd::AlignementByteX16,
	[u16; 41] => crate::simd::AlignementByteX2,
	[u16; 42] => crate::simd::AlignementByteX4,
	[u16; 43] => crate::simd::AlignementByteX2,
	[u16; 44] => crate::simd::AlignementByteX8,
	[u16; 45] => crate::simd::AlignementByteX2,
	[u16; 46] => crate::simd::AlignementByteX4,
	[u16; 47] => crate::simd::AlignementByteX2,
	[u16; 48] => crate::simd::AlignementByteX32,
	[u16; 49] => crate::simd::AlignementByteX2,
	[u16; 50] => crate::simd::AlignementByteX4,
	[u16; 51] => crate::simd::AlignementByteX2,
	[u16; 52] => crate::simd::AlignementByteX8,
	[u16; 53] => crate::simd::AlignementByteX2,
	[u16; 54] => crate::simd::AlignementByteX4,
	[u16; 55] => crate::simd::AlignementByteX2,
	[u16; 56] => crate::simd::AlignementByteX16,
	[u16; 57] => crate::simd::AlignementByteX2,
	[u16; 58] => crate::simd::AlignementByteX4,
	[u16; 59] => crate::simd::AlignementByteX2,
	[u16; 60] => crate::simd::AlignementByteX8,
	[u16; 61] => crate::simd::AlignementByteX2,
	[u16; 62] => crate::simd::AlignementByteX4,
	[u16; 63] => crate::simd::AlignementByteX2,
	[u16; 64] => crate::simd::AlignementByteX128,

	[i16; 01] => crate::simd::AlignementByteX2,
	[i16; 02] => crate::simd::AlignementByteX4,
	[i16; 03] => crate::simd::AlignementByteX2,
	[i16; 04] => crate::simd::AlignementByteX8,
	[i16; 05] => crate::simd::AlignementByteX2,
	[i16; 06] => crate::simd::AlignementByteX4,
	[i16; 07] => crate::simd::AlignementByteX2,
	[i16; 08] => crate::simd::AlignementByteX16,
	[i16; 09] => crate::simd::AlignementByteX2,
	[i16; 10] => crate::simd::AlignementByteX4,
	[i16; 11] => crate::simd::AlignementByteX2,
	[i16; 12] => crate::simd::AlignementByteX8,
	[i16; 13] => crate::simd::AlignementByteX2,
	[i16; 14] => crate::simd::AlignementByteX4,
	[i16; 15] => crate::simd::AlignementByteX2,
	[i16; 16] => crate::simd::AlignementByteX32,
	[i16; 17] => crate::simd::AlignementByteX2,
	[i16; 18] => crate::simd::AlignementByteX4,
	[i16; 19] => crate::simd::AlignementByteX2,
	[i16; 20] => crate::simd::AlignementByteX8,
	[i16; 21] => crate::simd::AlignementByteX2,
	[i16; 22] => crate::simd::AlignementByteX4,
	[i16; 23] => crate::simd::AlignementByteX2,
	[i16; 24] => crate::simd::AlignementByteX16,
	[i16; 25] => crate::simd::AlignementByteX2,
	[i16; 26] => crate::simd::AlignementByteX4,
	[i16; 27] => crate::simd::AlignementByteX2,
	[i16; 28] => crate::simd::AlignementByteX8,
	[i16; 29] => crate::simd::AlignementByteX2,
	[i16; 30] => crate::simd::AlignementByteX4,
	[i16; 31] => crate::simd::AlignementByteX2,
	[i16; 32] => crate::simd::AlignementByteX64,
	[i16; 33] => crate::simd::AlignementByteX2,
	[i16; 34] => crate::simd::AlignementByteX4,
	[i16; 35] => crate::simd::AlignementByteX2,
	[i16; 36] => crate::simd::AlignementByteX8,
	[i16; 37] => crate::simd::AlignementByteX2,
	[i16; 38] => crate::simd::AlignementByteX4,
	[i16; 39] => crate::simd::AlignementByteX2,
	[i16; 40] => crate::simd::AlignementByteX16,
	[i16; 41] => crate::simd::AlignementByteX2,
	[i16; 42] => crate::simd::AlignementByteX4,
	[i16; 43] => crate::simd::AlignementByteX2,
	[i16; 44] => crate::simd::AlignementByteX8,
	[i16; 45] => crate::simd::AlignementByteX2,
	[i16; 46] => crate::simd::AlignementByteX4,
	[i16; 47] => crate::simd::AlignementByteX2,
	[i16; 48] => crate::simd::AlignementByteX32,
	[i16; 49] => crate::simd::AlignementByteX2,
	[i16; 50] => crate::simd::AlignementByteX4,
	[i16; 51] => crate::simd::AlignementByteX2,
	[i16; 52] => crate::simd::AlignementByteX8,
	[i16; 53] => crate::simd::AlignementByteX2,
	[i16; 54] => crate::simd::AlignementByteX4,
	[i16; 55] => crate::simd::AlignementByteX2,
	[i16; 56] => crate::simd::AlignementByteX16,
	[i16; 57] => crate::simd::AlignementByteX2,
	[i16; 58] => crate::simd::AlignementByteX4,
	[i16; 59] => crate::simd::AlignementByteX2,
	[i16; 60] => crate::simd::AlignementByteX8,
	[i16; 61] => crate::simd::AlignementByteX2,
	[i16; 62] => crate::simd::AlignementByteX4,
	[i16; 63] => crate::simd::AlignementByteX2,
	[i16; 64] => crate::simd::AlignementByteX128,

	[u32; 01] => crate::simd::AlignementByteX4,
	[u32; 02] => crate::simd::AlignementByteX8,
	[u32; 03] => crate::simd::AlignementByteX4,
	[u32; 04] => crate::simd::AlignementByteX16,
	[u32; 05] => crate::simd::AlignementByteX4,
	[u32; 06] => crate::simd::AlignementByteX8,
	[u32; 07] => crate::simd::AlignementByteX4,
	[u32; 08] => crate::simd::AlignementByteX32,
	[u32; 09] => crate::simd::AlignementByteX4,
	[u32; 10] => crate::simd::AlignementByteX8,
	[u32; 11] => crate::simd::AlignementByteX4,
	[u32; 12] => crate::simd::AlignementByteX16,
	[u32; 13] => crate::simd::AlignementByteX4,
	[u32; 14] => crate::simd::AlignementByteX8,
	[u32; 15] => crate::simd::AlignementByteX4,
	[u32; 16] => crate::simd::AlignementByteX64,
	[u32; 17] => crate::simd::AlignementByteX4,
	[u32; 18] => crate::simd::AlignementByteX8,
	[u32; 19] => crate::simd::AlignementByteX4,
	[u32; 20] => crate::simd::AlignementByteX16,
	[u32; 21] => crate::simd::AlignementByteX4,
	[u32; 22] => crate::simd::AlignementByteX8,
	[u32; 23] => crate::simd::AlignementByteX4,
	[u32; 24] => crate::simd::AlignementByteX32,
	[u32; 25] => crate::simd::AlignementByteX4,
	[u32; 26] => crate::simd::AlignementByteX8,
	[u32; 27] => crate::simd::AlignementByteX4,
	[u32; 28] => crate::simd::AlignementByteX16,
	[u32; 29] => crate::simd::AlignementByteX4,
	[u32; 30] => crate::simd::AlignementByteX8,
	[u32; 31] => crate::simd::AlignementByteX4,
	[u32; 32] => crate::simd::AlignementByteX128,
	[u32; 33] => crate::simd::AlignementByteX4,
	[u32; 34] => crate::simd::AlignementByteX8,
	[u32; 35] => crate::simd::AlignementByteX4,
	[u32; 36] => crate::simd::AlignementByteX16,
	[u32; 37] => crate::simd::AlignementByteX4,
	[u32; 38] => crate::simd::AlignementByteX8,
	[u32; 39] => crate::simd::AlignementByteX4,
	[u32; 40] => crate::simd::AlignementByteX32,
	[u32; 41] => crate::simd::AlignementByteX4,
	[u32; 42] => crate::simd::AlignementByteX8,
	[u32; 43] => crate::simd::AlignementByteX4,
	[u32; 44] => crate::simd::AlignementByteX16,
	[u32; 45] => crate::simd::AlignementByteX4,
	[u32; 46] => crate::simd::AlignementByteX8,
	[u32; 47] => crate::simd::AlignementByteX4,
	[u32; 48] => crate::simd::AlignementByteX64,
	[u32; 49] => crate::simd::AlignementByteX4,
	[u32; 50] => crate::simd::AlignementByteX8,
	[u32; 51] => crate::simd::AlignementByteX4,
	[u32; 52] => crate::simd::AlignementByteX16,
	[u32; 53] => crate::simd::AlignementByteX4,
	[u32; 54] => crate::simd::AlignementByteX8,
	[u32; 55] => crate::simd::AlignementByteX4,
	[u32; 56] => crate::simd::AlignementByteX32,
	[u32; 57] => crate::simd::AlignementByteX4,
	[u32; 58] => crate::simd::AlignementByteX8,
	[u32; 59] => crate::simd::AlignementByteX4,
	[u32; 60] => crate::simd::AlignementByteX16,
	[u32; 61] => crate::simd::AlignementByteX4,
	[u32; 62] => crate::simd::AlignementByteX8,
	[u32; 63] => crate::simd::AlignementByteX4,
	[u32; 64] => crate::simd::AlignementByteX256,

	[i32; 01] => crate::simd::AlignementByteX4,
	[i32; 02] => crate::simd::AlignementByteX8,
	[i32; 03] => crate::simd::AlignementByteX4,
	[i32; 04] => crate::simd::AlignementByteX16,
	[i32; 05] => crate::simd::AlignementByteX4,
	[i32; 06] => crate::simd::AlignementByteX8,
	[i32; 07] => crate::simd::AlignementByteX4,
	[i32; 08] => crate::simd::AlignementByteX32,
	[i32; 09] => crate::simd::AlignementByteX4,
	[i32; 10] => crate::simd::AlignementByteX8,
	[i32; 11] => crate::simd::AlignementByteX4,
	[i32; 12] => crate::simd::AlignementByteX16,
	[i32; 13] => crate::simd::AlignementByteX4,
	[i32; 14] => crate::simd::AlignementByteX8,
	[i32; 15] => crate::simd::AlignementByteX4,
	[i32; 16] => crate::simd::AlignementByteX64,
	[i32; 17] => crate::simd::AlignementByteX4,
	[i32; 18] => crate::simd::AlignementByteX8,
	[i32; 19] => crate::simd::AlignementByteX4,
	[i32; 20] => crate::simd::AlignementByteX16,
	[i32; 21] => crate::simd::AlignementByteX4,
	[i32; 22] => crate::simd::AlignementByteX8,
	[i32; 23] => crate::simd::AlignementByteX4,
	[i32; 24] => crate::simd::AlignementByteX32,
	[i32; 25] => crate::simd::AlignementByteX4,
	[i32; 26] => crate::simd::AlignementByteX8,
	[i32; 27] => crate::simd::AlignementByteX4,
	[i32; 28] => crate::simd::AlignementByteX16,
	[i32; 29] => crate::simd::AlignementByteX4,
	[i32; 30] => crate::simd::AlignementByteX8,
	[i32; 31] => crate::simd::AlignementByteX4,
	[i32; 32] => crate::simd::AlignementByteX128,
	[i32; 33] => crate::simd::AlignementByteX4,
	[i32; 34] => crate::simd::AlignementByteX8,
	[i32; 35] => crate::simd::AlignementByteX4,
	[i32; 36] => crate::simd::AlignementByteX16,
	[i32; 37] => crate::simd::AlignementByteX4,
	[i32; 38] => crate::simd::AlignementByteX8,
	[i32; 39] => crate::simd::AlignementByteX4,
	[i32; 40] => crate::simd::AlignementByteX32,
	[i32; 41] => crate::simd::AlignementByteX4,
	[i32; 42] => crate::simd::AlignementByteX8,
	[i32; 43] => crate::simd::AlignementByteX4,
	[i32; 44] => crate::simd::AlignementByteX16,
	[i32; 45] => crate::simd::AlignementByteX4,
	[i32; 46] => crate::simd::AlignementByteX8,
	[i32; 47] => crate::simd::AlignementByteX4,
	[i32; 48] => crate::simd::AlignementByteX64,
	[i32; 49] => crate::simd::AlignementByteX4,
	[i32; 50] => crate::simd::AlignementByteX8,
	[i32; 51] => crate::simd::AlignementByteX4,
	[i32; 52] => crate::simd::AlignementByteX16,
	[i32; 53] => crate::simd::AlignementByteX4,
	[i32; 54] => crate::simd::AlignementByteX8,
	[i32; 55] => crate::simd::AlignementByteX4,
	[i32; 56] => crate::simd::AlignementByteX32,
	[i32; 57] => crate::simd::AlignementByteX4,
	[i32; 58] => crate::simd::AlignementByteX8,
	[i32; 59] => crate::simd::AlignementByteX4,
	[i32; 60] => crate::simd::AlignementByteX16,
	[i32; 61] => crate::simd::AlignementByteX4,
	[i32; 62] => crate::simd::AlignementByteX8,
	[i32; 63] => crate::simd::AlignementByteX4,
	[i32; 64] => crate::simd::AlignementByteX256,

	[u64; 01] => crate::simd::AlignementByteX8,
	[u64; 02] => crate::simd::AlignementByteX16,
	[u64; 03] => crate::simd::AlignementByteX8,
	[u64; 04] => crate::simd::AlignementByteX32,
	[u64; 05] => crate::simd::AlignementByteX8,
	[u64; 06] => crate::simd::AlignementByteX16,
	[u64; 07] => crate::simd::AlignementByteX8,
	[u64; 08] => crate::simd::AlignementByteX64,
	[u64; 09] => crate::simd::AlignementByteX8,
	[u64; 10] => crate::simd::AlignementByteX16,
	[u64; 11] => crate::simd::AlignementByteX8,
	[u64; 12] => crate::simd::AlignementByteX32,
	[u64; 13] => crate::simd::AlignementByteX8,
	[u64; 14] => crate::simd::AlignementByteX16,
	[u64; 15] => crate::simd::AlignementByteX8,
	[u64; 16] => crate::simd::AlignementByteX128,
	[u64; 17] => crate::simd::AlignementByteX8,
	[u64; 18] => crate::simd::AlignementByteX16,
	[u64; 19] => crate::simd::AlignementByteX8,
	[u64; 20] => crate::simd::AlignementByteX32,
	[u64; 21] => crate::simd::AlignementByteX8,
	[u64; 22] => crate::simd::AlignementByteX16,
	[u64; 23] => crate::simd::AlignementByteX8,
	[u64; 24] => crate::simd::AlignementByteX64,
	[u64; 25] => crate::simd::AlignementByteX8,
	[u64; 26] => crate::simd::AlignementByteX16,
	[u64; 27] => crate::simd::AlignementByteX8,
	[u64; 28] => crate::simd::AlignementByteX32,
	[u64; 29] => crate::simd::AlignementByteX8,
	[u64; 30] => crate::simd::AlignementByteX16,
	[u64; 31] => crate::simd::AlignementByteX8,
	[u64; 32] => crate::simd::AlignementByteX256,
	[u64; 33] => crate::simd::AlignementByteX8,
	[u64; 34] => crate::simd::AlignementByteX16,
	[u64; 35] => crate::simd::AlignementByteX8,
	[u64; 36] => crate::simd::AlignementByteX32,
	[u64; 37] => crate::simd::AlignementByteX8,
	[u64; 38] => crate::simd::AlignementByteX16,
	[u64; 39] => crate::simd::AlignementByteX8,
	[u64; 40] => crate::simd::AlignementByteX64,
	[u64; 41] => crate::simd::AlignementByteX8,
	[u64; 42] => crate::simd::AlignementByteX16,
	[u64; 43] => crate::simd::AlignementByteX8,
	[u64; 44] => crate::simd::AlignementByteX32,
	[u64; 45] => crate::simd::AlignementByteX8,
	[u64; 46] => crate::simd::AlignementByteX16,
	[u64; 47] => crate::simd::AlignementByteX8,
	[u64; 48] => crate::simd::AlignementByteX128,
	[u64; 49] => crate::simd::AlignementByteX8,
	[u64; 50] => crate::simd::AlignementByteX16,
	[u64; 51] => crate::simd::AlignementByteX8,
	[u64; 52] => crate::simd::AlignementByteX32,
	[u64; 53] => crate::simd::AlignementByteX8,
	[u64; 54] => crate::simd::AlignementByteX16,
	[u64; 55] => crate::simd::AlignementByteX8,
	[u64; 56] => crate::simd::AlignementByteX64,
	[u64; 57] => crate::simd::AlignementByteX8,
	[u64; 58] => crate::simd::AlignementByteX16,
	[u64; 59] => crate::simd::AlignementByteX8,
	[u64; 60] => crate::simd::AlignementByteX32,
	[u64; 61] => crate::simd::AlignementByteX8,
	[u64; 62] => crate::simd::AlignementByteX16,
	[u64; 63] => crate::simd::AlignementByteX8,
	[u64; 64] => crate::simd::AlignementByteX512,

	[i64; 01] => crate::simd::AlignementByteX8,
	[i64; 02] => crate::simd::AlignementByteX16,
	[i64; 03] => crate::simd::AlignementByteX8,
	[i64; 04] => crate::simd::AlignementByteX32,
	[i64; 05] => crate::simd::AlignementByteX8,
	[i64; 06] => crate::simd::AlignementByteX16,
	[i64; 07] => crate::simd::AlignementByteX8,
	[i64; 08] => crate::simd::AlignementByteX64,
	[i64; 09] => crate::simd::AlignementByteX8,
	[i64; 10] => crate::simd::AlignementByteX16,
	[i64; 11] => crate::simd::AlignementByteX8,
	[i64; 12] => crate::simd::AlignementByteX32,
	[i64; 13] => crate::simd::AlignementByteX8,
	[i64; 14] => crate::simd::AlignementByteX16,
	[i64; 15] => crate::simd::AlignementByteX8,
	[i64; 16] => crate::simd::AlignementByteX128,
	[i64; 17] => crate::simd::AlignementByteX8,
	[i64; 18] => crate::simd::AlignementByteX16,
	[i64; 19] => crate::simd::AlignementByteX8,
	[i64; 20] => crate::simd::AlignementByteX32,
	[i64; 21] => crate::simd::AlignementByteX8,
	[i64; 22] => crate::simd::AlignementByteX16,
	[i64; 23] => crate::simd::AlignementByteX8,
	[i64; 24] => crate::simd::AlignementByteX64,
	[i64; 25] => crate::simd::AlignementByteX8,
	[i64; 26] => crate::simd::AlignementByteX16,
	[i64; 27] => crate::simd::AlignementByteX8,
	[i64; 28] => crate::simd::AlignementByteX32,
	[i64; 29] => crate::simd::AlignementByteX8,
	[i64; 30] => crate::simd::AlignementByteX16,
	[i64; 31] => crate::simd::AlignementByteX8,
	[i64; 32] => crate::simd::AlignementByteX256,
	[i64; 33] => crate::simd::AlignementByteX8,
	[i64; 34] => crate::simd::AlignementByteX16,
	[i64; 35] => crate::simd::AlignementByteX8,
	[i64; 36] => crate::simd::AlignementByteX32,
	[i64; 37] => crate::simd::AlignementByteX8,
	[i64; 38] => crate::simd::AlignementByteX16,
	[i64; 39] => crate::simd::AlignementByteX8,
	[i64; 40] => crate::simd::AlignementByteX64,
	[i64; 41] => crate::simd::AlignementByteX8,
	[i64; 42] => crate::simd::AlignementByteX16,
	[i64; 43] => crate::simd::AlignementByteX8,
	[i64; 44] => crate::simd::AlignementByteX32,
	[i64; 45] => crate::simd::AlignementByteX8,
	[i64; 46] => crate::simd::AlignementByteX16,
	[i64; 47] => crate::simd::AlignementByteX8,
	[i64; 48] => crate::simd::AlignementByteX128,
	[i64; 49] => crate::simd::AlignementByteX8,
	[i64; 50] => crate::simd::AlignementByteX16,
	[i64; 51] => crate::simd::AlignementByteX8,
	[i64; 52] => crate::simd::AlignementByteX32,
	[i64; 53] => crate::simd::AlignementByteX8,
	[i64; 54] => crate::simd::AlignementByteX16,
	[i64; 55] => crate::simd::AlignementByteX8,
	[i64; 56] => crate::simd::AlignementByteX64,
	[i64; 57] => crate::simd::AlignementByteX8,
	[i64; 58] => crate::simd::AlignementByteX16,
	[i64; 59] => crate::simd::AlignementByteX8,
	[i64; 60] => crate::simd::AlignementByteX32,
	[i64; 61] => crate::simd::AlignementByteX8,
	[i64; 62] => crate::simd::AlignementByteX16,
	[i64; 63] => crate::simd::AlignementByteX8,
	[i64; 64] => crate::simd::AlignementByteX512,

	[u128; 01] => crate::simd::AlignementByteX16,
	[u128; 02] => crate::simd::AlignementByteX32,
	[u128; 03] => crate::simd::AlignementByteX16,
	[u128; 04] => crate::simd::AlignementByteX64,
	[u128; 05] => crate::simd::AlignementByteX16,
	[u128; 06] => crate::simd::AlignementByteX32,
	[u128; 07] => crate::simd::AlignementByteX16,
	[u128; 08] => crate::simd::AlignementByteX128,
	[u128; 09] => crate::simd::AlignementByteX16,
	[u128; 10] => crate::simd::AlignementByteX32,
	[u128; 11] => crate::simd::AlignementByteX16,
	[u128; 12] => crate::simd::AlignementByteX64,
	[u128; 13] => crate::simd::AlignementByteX16,
	[u128; 14] => crate::simd::AlignementByteX32,
	[u128; 15] => crate::simd::AlignementByteX16,
	[u128; 16] => crate::simd::AlignementByteX256,
	[u128; 17] => crate::simd::AlignementByteX16,
	[u128; 18] => crate::simd::AlignementByteX32,
	[u128; 19] => crate::simd::AlignementByteX16,
	[u128; 20] => crate::simd::AlignementByteX64,
	[u128; 21] => crate::simd::AlignementByteX16,
	[u128; 22] => crate::simd::AlignementByteX32,
	[u128; 23] => crate::simd::AlignementByteX16,
	[u128; 24] => crate::simd::AlignementByteX128,
	[u128; 25] => crate::simd::AlignementByteX16,
	[u128; 26] => crate::simd::AlignementByteX32,
	[u128; 27] => crate::simd::AlignementByteX16,
	[u128; 28] => crate::simd::AlignementByteX64,
	[u128; 29] => crate::simd::AlignementByteX16,
	[u128; 30] => crate::simd::AlignementByteX32,
	[u128; 31] => crate::simd::AlignementByteX16,
	[u128; 32] => crate::simd::AlignementByteX512,
	[u128; 33] => crate::simd::AlignementByteX16,
	[u128; 34] => crate::simd::AlignementByteX32,
	[u128; 35] => crate::simd::AlignementByteX16,
	[u128; 36] => crate::simd::AlignementByteX64,
	[u128; 37] => crate::simd::AlignementByteX16,
	[u128; 38] => crate::simd::AlignementByteX32,
	[u128; 39] => crate::simd::AlignementByteX16,
	[u128; 40] => crate::simd::AlignementByteX128,
	[u128; 41] => crate::simd::AlignementByteX16,
	[u128; 42] => crate::simd::AlignementByteX32,
	[u128; 43] => crate::simd::AlignementByteX16,
	[u128; 44] => crate::simd::AlignementByteX64,
	[u128; 45] => crate::simd::AlignementByteX16,
	[u128; 46] => crate::simd::AlignementByteX32,
	[u128; 47] => crate::simd::AlignementByteX16,
	[u128; 48] => crate::simd::AlignementByteX256,
	[u128; 49] => crate::simd::AlignementByteX16,
	[u128; 50] => crate::simd::AlignementByteX32,
	[u128; 51] => crate::simd::AlignementByteX16,
	[u128; 52] => crate::simd::AlignementByteX64,
	[u128; 53] => crate::simd::AlignementByteX16,
	[u128; 54] => crate::simd::AlignementByteX32,
	[u128; 55] => crate::simd::AlignementByteX16,
	[u128; 56] => crate::simd::AlignementByteX128,
	[u128; 57] => crate::simd::AlignementByteX16,
	[u128; 58] => crate::simd::AlignementByteX32,
	[u128; 59] => crate::simd::AlignementByteX16,
	[u128; 60] => crate::simd::AlignementByteX64,
	[u128; 61] => crate::simd::AlignementByteX16,
	[u128; 62] => crate::simd::AlignementByteX32,
	[u128; 63] => crate::simd::AlignementByteX16,
	[u128; 64] => crate::simd::AlignementByteX1024,

	[i128; 01] => crate::simd::AlignementByteX16,
	[i128; 02] => crate::simd::AlignementByteX32,
	[i128; 03] => crate::simd::AlignementByteX16,
	[i128; 04] => crate::simd::AlignementByteX64,
	[i128; 05] => crate::simd::AlignementByteX16,
	[i128; 06] => crate::simd::AlignementByteX32,
	[i128; 07] => crate::simd::AlignementByteX16,
	[i128; 08] => crate::simd::AlignementByteX128,
	[i128; 09] => crate::simd::AlignementByteX16,
	[i128; 10] => crate::simd::AlignementByteX32,
	[i128; 11] => crate::simd::AlignementByteX16,
	[i128; 12] => crate::simd::AlignementByteX64,
	[i128; 13] => crate::simd::AlignementByteX16,
	[i128; 14] => crate::simd::AlignementByteX32,
	[i128; 15] => crate::simd::AlignementByteX16,
	[i128; 16] => crate::simd::AlignementByteX256,
	[i128; 17] => crate::simd::AlignementByteX16,
	[i128; 18] => crate::simd::AlignementByteX32,
	[i128; 19] => crate::simd::AlignementByteX16,
	[i128; 20] => crate::simd::AlignementByteX64,
	[i128; 21] => crate::simd::AlignementByteX16,
	[i128; 22] => crate::simd::AlignementByteX32,
	[i128; 23] => crate::simd::AlignementByteX16,
	[i128; 24] => crate::simd::AlignementByteX128,
	[i128; 25] => crate::simd::AlignementByteX16,
	[i128; 26] => crate::simd::AlignementByteX32,
	[i128; 27] => crate::simd::AlignementByteX16,
	[i128; 28] => crate::simd::AlignementByteX64,
	[i128; 29] => crate::simd::AlignementByteX16,
	[i128; 30] => crate::simd::AlignementByteX32,
	[i128; 31] => crate::simd::AlignementByteX16,
	[i128; 32] => crate::simd::AlignementByteX512,
	[i128; 33] => crate::simd::AlignementByteX16,
	[i128; 34] => crate::simd::AlignementByteX32,
	[i128; 35] => crate::simd::AlignementByteX16,
	[i128; 36] => crate::simd::AlignementByteX64,
	[i128; 37] => crate::simd::AlignementByteX16,
	[i128; 38] => crate::simd::AlignementByteX32,
	[i128; 39] => crate::simd::AlignementByteX16,
	[i128; 40] => crate::simd::AlignementByteX128,
	[i128; 41] => crate::simd::AlignementByteX16,
	[i128; 42] => crate::simd::AlignementByteX32,
	[i128; 43] => crate::simd::AlignementByteX16,
	[i128; 44] => crate::simd::AlignementByteX64,
	[i128; 45] => crate::simd::AlignementByteX16,
	[i128; 46] => crate::simd::AlignementByteX32,
	[i128; 47] => crate::simd::AlignementByteX16,
	[i128; 48] => crate::simd::AlignementByteX256,
	[i128; 49] => crate::simd::AlignementByteX16,
	[i128; 50] => crate::simd::AlignementByteX32,
	[i128; 51] => crate::simd::AlignementByteX16,
	[i128; 52] => crate::simd::AlignementByteX64,
	[i128; 53] => crate::simd::AlignementByteX16,
	[i128; 54] => crate::simd::AlignementByteX32,
	[i128; 55] => crate::simd::AlignementByteX16,
	[i128; 56] => crate::simd::AlignementByteX128,
	[i128; 57] => crate::simd::AlignementByteX16,
	[i128; 58] => crate::simd::AlignementByteX32,
	[i128; 59] => crate::simd::AlignementByteX16,
	[i128; 60] => crate::simd::AlignementByteX64,
	[i128; 61] => crate::simd::AlignementByteX16,
	[i128; 62] => crate::simd::AlignementByteX32,
	[i128; 63] => crate::simd::AlignementByteX16,
	[i128; 64] => crate::simd::AlignementByteX1024,

	[usize; 01] => crate::simd::AlignementSizeX1,
	[usize; 02] => crate::simd::AlignementSizeX2,
	[usize; 03] => crate::simd::AlignementSizeX1,
	[usize; 04] => crate::simd::AlignementSizeX4,
	[usize; 05] => crate::simd::AlignementSizeX1,
	[usize; 06] => crate::simd::AlignementSizeX2,
	[usize; 07] => crate::simd::AlignementSizeX1,
	[usize; 08] => crate::simd::AlignementSizeX8,
	[usize; 09] => crate::simd::AlignementSizeX1,
	[usize; 10] => crate::simd::AlignementSizeX2,
	[usize; 11] => crate::simd::AlignementSizeX1,
	[usize; 12] => crate::simd::AlignementSizeX4,
	[usize; 13] => crate::simd::AlignementSizeX1,
	[usize; 14] => crate::simd::AlignementSizeX2,
	[usize; 15] => crate::simd::AlignementSizeX1,
	[usize; 16] => crate::simd::AlignementSizeX16,
	[usize; 17] => crate::simd::AlignementSizeX1,
	[usize; 18] => crate::simd::AlignementSizeX2,
	[usize; 19] => crate::simd::AlignementSizeX1,
	[usize; 20] => crate::simd::AlignementSizeX4,
	[usize; 21] => crate::simd::AlignementSizeX1,
	[usize; 22] => crate::simd::AlignementSizeX2,
	[usize; 23] => crate::simd::AlignementSizeX1,
	[usize; 24] => crate::simd::AlignementSizeX8,
	[usize; 25] => crate::simd::AlignementSizeX1,
	[usize; 26] => crate::simd::AlignementSizeX2,
	[usize; 27] => crate::simd::AlignementSizeX1,
	[usize; 28] => crate::simd::AlignementSizeX4,
	[usize; 29] => crate::simd::AlignementSizeX1,
	[usize; 30] => crate::simd::AlignementSizeX2,
	[usize; 31] => crate::simd::AlignementSizeX1,
	[usize; 32] => crate::simd::AlignementSizeX32,
	[usize; 33] => crate::simd::AlignementSizeX1,
	[usize; 34] => crate::simd::AlignementSizeX2,
	[usize; 35] => crate::simd::AlignementSizeX1,
	[usize; 36] => crate::simd::AlignementSizeX4,
	[usize; 37] => crate::simd::AlignementSizeX1,
	[usize; 38] => crate::simd::AlignementSizeX2,
	[usize; 39] => crate::simd::AlignementSizeX1,
	[usize; 40] => crate::simd::AlignementSizeX8,
	[usize; 41] => crate::simd::AlignementSizeX1,
	[usize; 42] => crate::simd::AlignementSizeX2,
	[usize; 43] => crate::simd::AlignementSizeX1,
	[usize; 44] => crate::simd::AlignementSizeX4,
	[usize; 45] => crate::simd::AlignementSizeX1,
	[usize; 46] => crate::simd::AlignementSizeX2,
	[usize; 47] => crate::simd::AlignementSizeX1,
	[usize; 48] => crate::simd::AlignementSizeX16,
	[usize; 49] => crate::simd::AlignementSizeX1,
	[usize; 50] => crate::simd::AlignementSizeX2,
	[usize; 51] => crate::simd::AlignementSizeX1,
	[usize; 52] => crate::simd::AlignementSizeX4,
	[usize; 53] => crate::simd::AlignementSizeX1,
	[usize; 54] => crate::simd::AlignementSizeX2,
	[usize; 55] => crate::simd::AlignementSizeX1,
	[usize; 56] => crate::simd::AlignementSizeX8,
	[usize; 57] => crate::simd::AlignementSizeX1,
	[usize; 58] => crate::simd::AlignementSizeX2,
	[usize; 59] => crate::simd::AlignementSizeX1,
	[usize; 60] => crate::simd::AlignementSizeX4,
	[usize; 61] => crate::simd::AlignementSizeX1,
	[usize; 62] => crate::simd::AlignementSizeX2,
	[usize; 63] => crate::simd::AlignementSizeX1,
	[usize; 64] => crate::simd::AlignementSizeX64,

	[isize; 01] => crate::simd::AlignementSizeX1,
	[isize; 02] => crate::simd::AlignementSizeX2,
	[isize; 03] => crate::simd::AlignementSizeX1,
	[isize; 04] => crate::simd::AlignementSizeX4,
	[isize; 05] => crate::simd::AlignementSizeX1,
	[isize; 06] => crate::simd::AlignementSizeX2,
	[isize; 07] => crate::simd::AlignementSizeX1,
	[isize; 08] => crate::simd::AlignementSizeX8,
	[isize; 09] => crate::simd::AlignementSizeX1,
	[isize; 10] => crate::simd::AlignementSizeX2,
	[isize; 11] => crate::simd::AlignementSizeX1,
	[isize; 12] => crate::simd::AlignementSizeX4,
	[isize; 13] => crate::simd::AlignementSizeX1,
	[isize; 14] => crate::simd::AlignementSizeX2,
	[isize; 15] => crate::simd::AlignementSizeX1,
	[isize; 16] => crate::simd::AlignementSizeX16,
	[isize; 17] => crate::simd::AlignementSizeX1,
	[isize; 18] => crate::simd::AlignementSizeX2,
	[isize; 19] => crate::simd::AlignementSizeX1,
	[isize; 20] => crate::simd::AlignementSizeX4,
	[isize; 21] => crate::simd::AlignementSizeX1,
	[isize; 22] => crate::simd::AlignementSizeX2,
	[isize; 23] => crate::simd::AlignementSizeX1,
	[isize; 24] => crate::simd::AlignementSizeX8,
	[isize; 25] => crate::simd::AlignementSizeX1,
	[isize; 26] => crate::simd::AlignementSizeX2,
	[isize; 27] => crate::simd::AlignementSizeX1,
	[isize; 28] => crate::simd::AlignementSizeX4,
	[isize; 29] => crate::simd::AlignementSizeX1,
	[isize; 30] => crate::simd::AlignementSizeX2,
	[isize; 31] => crate::simd::AlignementSizeX1,
	[isize; 32] => crate::simd::AlignementSizeX32,
	[isize; 33] => crate::simd::AlignementSizeX1,
	[isize; 34] => crate::simd::AlignementSizeX2,
	[isize; 35] => crate::simd::AlignementSizeX1,
	[isize; 36] => crate::simd::AlignementSizeX4,
	[isize; 37] => crate::simd::AlignementSizeX1,
	[isize; 38] => crate::simd::AlignementSizeX2,
	[isize; 39] => crate::simd::AlignementSizeX1,
	[isize; 40] => crate::simd::AlignementSizeX8,
	[isize; 41] => crate::simd::AlignementSizeX1,
	[isize; 42] => crate::simd::AlignementSizeX2,
	[isize; 43] => crate::simd::AlignementSizeX1,
	[isize; 44] => crate::simd::AlignementSizeX4,
	[isize; 45] => crate::simd::AlignementSizeX1,
	[isize; 46] => crate::simd::AlignementSizeX2,
	[isize; 47] => crate::simd::AlignementSizeX1,
	[isize; 48] => crate::simd::AlignementSizeX16,
	[isize; 49] => crate::simd::AlignementSizeX1,
	[isize; 50] => crate::simd::AlignementSizeX2,
	[isize; 51] => crate::simd::AlignementSizeX1,
	[isize; 52] => crate::simd::AlignementSizeX4,
	[isize; 53] => crate::simd::AlignementSizeX1,
	[isize; 54] => crate::simd::AlignementSizeX2,
	[isize; 55] => crate::simd::AlignementSizeX1,
	[isize; 56] => crate::simd::AlignementSizeX8,
	[isize; 57] => crate::simd::AlignementSizeX1,
	[isize; 58] => crate::simd::AlignementSizeX2,
	[isize; 59] => crate::simd::AlignementSizeX1,
	[isize; 60] => crate::simd::AlignementSizeX4,
	[isize; 61] => crate::simd::AlignementSizeX1,
	[isize; 62] => crate::simd::AlignementSizeX2,
	[isize; 63] => crate::simd::AlignementSizeX1,
	[isize; 64] => crate::simd::AlignementSizeX64,

	[f32; 01] => crate::simd::AlignementByteX4,
	[f32; 02] => crate::simd::AlignementByteX8,
	[f32; 03] => crate::simd::AlignementByteX4,
	[f32; 04] => crate::simd::AlignementByteX16,
	[f32; 05] => crate::simd::AlignementByteX4,
	[f32; 06] => crate::simd::AlignementByteX8,
	[f32; 07] => crate::simd::AlignementByteX4,
	[f32; 08] => crate::simd::AlignementByteX32,
	[f32; 09] => crate::simd::AlignementByteX4,
	[f32; 10] => crate::simd::AlignementByteX8,
	[f32; 11] => crate::simd::AlignementByteX4,
	[f32; 12] => crate::simd::AlignementByteX16,
	[f32; 13] => crate::simd::AlignementByteX4,
	[f32; 14] => crate::simd::AlignementByteX8,
	[f32; 15] => crate::simd::AlignementByteX4,
	[f32; 16] => crate::simd::AlignementByteX64,
	[f32; 17] => crate::simd::AlignementByteX4,
	[f32; 18] => crate::simd::AlignementByteX8,
	[f32; 19] => crate::simd::AlignementByteX4,
	[f32; 20] => crate::simd::AlignementByteX16,
	[f32; 21] => crate::simd::AlignementByteX4,
	[f32; 22] => crate::simd::AlignementByteX8,
	[f32; 23] => crate::simd::AlignementByteX4,
	[f32; 24] => crate::simd::AlignementByteX32,
	[f32; 25] => crate::simd::AlignementByteX4,
	[f32; 26] => crate::simd::AlignementByteX8,
	[f32; 27] => crate::simd::AlignementByteX4,
	[f32; 28] => crate::simd::AlignementByteX16,
	[f32; 29] => crate::simd::AlignementByteX4,
	[f32; 30] => crate::simd::AlignementByteX8,
	[f32; 31] => crate::simd::AlignementByteX4,
	[f32; 32] => crate::simd::AlignementByteX128,
	[f32; 33] => crate::simd::AlignementByteX4,
	[f32; 34] => crate::simd::AlignementByteX8,
	[f32; 35] => crate::simd::AlignementByteX4,
	[f32; 36] => crate::simd::AlignementByteX16,
	[f32; 37] => crate::simd::AlignementByteX4,
	[f32; 38] => crate::simd::AlignementByteX8,
	[f32; 39] => crate::simd::AlignementByteX4,
	[f32; 40] => crate::simd::AlignementByteX32,
	[f32; 41] => crate::simd::AlignementByteX4,
	[f32; 42] => crate::simd::AlignementByteX8,
	[f32; 43] => crate::simd::AlignementByteX4,
	[f32; 44] => crate::simd::AlignementByteX16,
	[f32; 45] => crate::simd::AlignementByteX4,
	[f32; 46] => crate::simd::AlignementByteX8,
	[f32; 47] => crate::simd::AlignementByteX4,
	[f32; 48] => crate::simd::AlignementByteX64,
	[f32; 49] => crate::simd::AlignementByteX4,
	[f32; 50] => crate::simd::AlignementByteX8,
	[f32; 51] => crate::simd::AlignementByteX4,
	[f32; 52] => crate::simd::AlignementByteX16,
	[f32; 53] => crate::simd::AlignementByteX4,
	[f32; 54] => crate::simd::AlignementByteX8,
	[f32; 55] => crate::simd::AlignementByteX4,
	[f32; 56] => crate::simd::AlignementByteX32,
	[f32; 57] => crate::simd::AlignementByteX4,
	[f32; 58] => crate::simd::AlignementByteX8,
	[f32; 59] => crate::simd::AlignementByteX4,
	[f32; 60] => crate::simd::AlignementByteX16,
	[f32; 61] => crate::simd::AlignementByteX4,
	[f32; 62] => crate::simd::AlignementByteX8,
	[f32; 63] => crate::simd::AlignementByteX4,
	[f32; 64] => crate::simd::AlignementByteX256,

	[f64; 01] => crate::simd::AlignementByteX8,
	[f64; 02] => crate::simd::AlignementByteX16,
	[f64; 03] => crate::simd::AlignementByteX8,
	[f64; 04] => crate::simd::AlignementByteX32,
	[f64; 05] => crate::simd::AlignementByteX8,
	[f64; 06] => crate::simd::AlignementByteX16,
	[f64; 07] => crate::simd::AlignementByteX8,
	[f64; 08] => crate::simd::AlignementByteX64,
	[f64; 09] => crate::simd::AlignementByteX8,
	[f64; 10] => crate::simd::AlignementByteX16,
	[f64; 11] => crate::simd::AlignementByteX8,
	[f64; 12] => crate::simd::AlignementByteX32,
	[f64; 13] => crate::simd::AlignementByteX8,
	[f64; 14] => crate::simd::AlignementByteX16,
	[f64; 15] => crate::simd::AlignementByteX8,
	[f64; 16] => crate::simd::AlignementByteX128,
	[f64; 17] => crate::simd::AlignementByteX8,
	[f64; 18] => crate::simd::AlignementByteX16,
	[f64; 19] => crate::simd::AlignementByteX8,
	[f64; 20] => crate::simd::AlignementByteX32,
	[f64; 21] => crate::simd::AlignementByteX8,
	[f64; 22] => crate::simd::AlignementByteX16,
	[f64; 23] => crate::simd::AlignementByteX8,
	[f64; 24] => crate::simd::AlignementByteX64,
	[f64; 25] => crate::simd::AlignementByteX8,
	[f64; 26] => crate::simd::AlignementByteX16,
	[f64; 27] => crate::simd::AlignementByteX8,
	[f64; 28] => crate::simd::AlignementByteX32,
	[f64; 29] => crate::simd::AlignementByteX8,
	[f64; 30] => crate::simd::AlignementByteX16,
	[f64; 31] => crate::simd::AlignementByteX8,
	[f64; 32] => crate::simd::AlignementByteX256,
	[f64; 33] => crate::simd::AlignementByteX8,
	[f64; 34] => crate::simd::AlignementByteX16,
	[f64; 35] => crate::simd::AlignementByteX8,
	[f64; 36] => crate::simd::AlignementByteX32,
	[f64; 37] => crate::simd::AlignementByteX8,
	[f64; 38] => crate::simd::AlignementByteX16,
	[f64; 39] => crate::simd::AlignementByteX8,
	[f64; 40] => crate::simd::AlignementByteX64,
	[f64; 41] => crate::simd::AlignementByteX8,
	[f64; 42] => crate::simd::AlignementByteX16,
	[f64; 43] => crate::simd::AlignementByteX8,
	[f64; 44] => crate::simd::AlignementByteX32,
	[f64; 45] => crate::simd::AlignementByteX8,
	[f64; 46] => crate::simd::AlignementByteX16,
	[f64; 47] => crate::simd::AlignementByteX8,
	[f64; 48] => crate::simd::AlignementByteX128,
	[f64; 49] => crate::simd::AlignementByteX8,
	[f64; 50] => crate::simd::AlignementByteX16,
	[f64; 51] => crate::simd::AlignementByteX8,
	[f64; 52] => crate::simd::AlignementByteX32,
	[f64; 53] => crate::simd::AlignementByteX8,
	[f64; 54] => crate::simd::AlignementByteX16,
	[f64; 55] => crate::simd::AlignementByteX8,
	[f64; 56] => crate::simd::AlignementByteX64,
	[f64; 57] => crate::simd::AlignementByteX8,
	[f64; 58] => crate::simd::AlignementByteX16,
	[f64; 59] => crate::simd::AlignementByteX8,
	[f64; 60] => crate::simd::AlignementByteX32,
	[f64; 61] => crate::simd::AlignementByteX8,
	[f64; 62] => crate::simd::AlignementByteX16,
	[f64; 63] => crate::simd::AlignementByteX8,
	[f64; 64] => crate::simd::AlignementByteX512,

	[(); 01] => crate::simd::AlignementByteX1,
	[(); 02] => crate::simd::AlignementByteX1,
	[(); 03] => crate::simd::AlignementByteX1,
	[(); 04] => crate::simd::AlignementByteX1,
	[(); 05] => crate::simd::AlignementByteX1,
	[(); 06] => crate::simd::AlignementByteX1,
	[(); 07] => crate::simd::AlignementByteX1,
	[(); 08] => crate::simd::AlignementByteX1,
	[(); 09] => crate::simd::AlignementByteX1,
	[(); 10] => crate::simd::AlignementByteX1,
	[(); 11] => crate::simd::AlignementByteX1,
	[(); 12] => crate::simd::AlignementByteX1,
	[(); 13] => crate::simd::AlignementByteX1,
	[(); 14] => crate::simd::AlignementByteX1,
	[(); 15] => crate::simd::AlignementByteX1,
	[(); 16] => crate::simd::AlignementByteX1,
	[(); 17] => crate::simd::AlignementByteX1,
	[(); 18] => crate::simd::AlignementByteX1,
	[(); 19] => crate::simd::AlignementByteX1,
	[(); 20] => crate::simd::AlignementByteX1,
	[(); 21] => crate::simd::AlignementByteX1,
	[(); 22] => crate::simd::AlignementByteX1,
	[(); 23] => crate::simd::AlignementByteX1,
	[(); 24] => crate::simd::AlignementByteX1,
	[(); 25] => crate::simd::AlignementByteX1,
	[(); 26] => crate::simd::AlignementByteX1,
	[(); 27] => crate::simd::AlignementByteX1,
	[(); 28] => crate::simd::AlignementByteX1,
	[(); 29] => crate::simd::AlignementByteX1,
	[(); 30] => crate::simd::AlignementByteX1,
	[(); 31] => crate::simd::AlignementByteX1,
	[(); 32] => crate::simd::AlignementByteX1,
	[(); 33] => crate::simd::AlignementByteX1,
	[(); 34] => crate::simd::AlignementByteX1,
	[(); 35] => crate::simd::AlignementByteX1,
	[(); 36] => crate::simd::AlignementByteX1,
	[(); 37] => crate::simd::AlignementByteX1,
	[(); 38] => crate::simd::AlignementByteX1,
	[(); 39] => crate::simd::AlignementByteX1,
	[(); 40] => crate::simd::AlignementByteX1,
	[(); 41] => crate::simd::AlignementByteX1,
	[(); 42] => crate::simd::AlignementByteX1,
	[(); 43] => crate::simd::AlignementByteX1,
	[(); 44] => crate::simd::AlignementByteX1,
	[(); 45] => crate::simd::AlignementByteX1,
	[(); 46] => crate::simd::AlignementByteX1,
	[(); 47] => crate::simd::AlignementByteX1,
	[(); 48] => crate::simd::AlignementByteX1,
	[(); 49] => crate::simd::AlignementByteX1,
	[(); 50] => crate::simd::AlignementByteX1,
	[(); 51] => crate::simd::AlignementByteX1,
	[(); 52] => crate::simd::AlignementByteX1,
	[(); 53] => crate::simd::AlignementByteX1,
	[(); 54] => crate::simd::AlignementByteX1,
	[(); 55] => crate::simd::AlignementByteX1,
	[(); 56] => crate::simd::AlignementByteX1,
	[(); 57] => crate::simd::AlignementByteX1,
	[(); 58] => crate::simd::AlignementByteX1,
	[(); 59] => crate::simd::AlignementByteX1,
	[(); 60] => crate::simd::AlignementByteX1,
	[(); 61] => crate::simd::AlignementByteX1,
	[(); 62] => crate::simd::AlignementByteX1,
	[(); 63] => crate::simd::AlignementByteX1,
	[(); 64] => crate::simd::AlignementByteX1,
}

impl_valid_layout_for_const_ptr! {
	[*const _; 01] => crate::simd::AlignementSizeX1,
	[*const _; 02] => crate::simd::AlignementSizeX2,
	[*const _; 03] => crate::simd::AlignementSizeX1,
	[*const _; 04] => crate::simd::AlignementSizeX4,
	[*const _; 05] => crate::simd::AlignementSizeX1,
	[*const _; 06] => crate::simd::AlignementSizeX2,
	[*const _; 07] => crate::simd::AlignementSizeX1,
	[*const _; 08] => crate::simd::AlignementSizeX8,
	[*const _; 09] => crate::simd::AlignementSizeX1,
	[*const _; 10] => crate::simd::AlignementSizeX2,
	[*const _; 11] => crate::simd::AlignementSizeX1,
	[*const _; 12] => crate::simd::AlignementSizeX4,
	[*const _; 13] => crate::simd::AlignementSizeX1,
	[*const _; 14] => crate::simd::AlignementSizeX2,
	[*const _; 15] => crate::simd::AlignementSizeX1,
	[*const _; 16] => crate::simd::AlignementSizeX16,
	[*const _; 17] => crate::simd::AlignementSizeX1,
	[*const _; 18] => crate::simd::AlignementSizeX2,
	[*const _; 19] => crate::simd::AlignementSizeX1,
	[*const _; 20] => crate::simd::AlignementSizeX4,
	[*const _; 21] => crate::simd::AlignementSizeX1,
	[*const _; 22] => crate::simd::AlignementSizeX2,
	[*const _; 23] => crate::simd::AlignementSizeX1,
	[*const _; 24] => crate::simd::AlignementSizeX8,
	[*const _; 25] => crate::simd::AlignementSizeX1,
	[*const _; 26] => crate::simd::AlignementSizeX2,
	[*const _; 27] => crate::simd::AlignementSizeX1,
	[*const _; 28] => crate::simd::AlignementSizeX4,
	[*const _; 29] => crate::simd::AlignementSizeX1,
	[*const _; 30] => crate::simd::AlignementSizeX2,
	[*const _; 31] => crate::simd::AlignementSizeX1,
	[*const _; 32] => crate::simd::AlignementSizeX32,
	[*const _; 33] => crate::simd::AlignementSizeX1,
	[*const _; 34] => crate::simd::AlignementSizeX2,
	[*const _; 35] => crate::simd::AlignementSizeX1,
	[*const _; 36] => crate::simd::AlignementSizeX4,
	[*const _; 37] => crate::simd::AlignementSizeX1,
	[*const _; 38] => crate::simd::AlignementSizeX2,
	[*const _; 39] => crate::simd::AlignementSizeX1,
	[*const _; 40] => crate::simd::AlignementSizeX8,
	[*const _; 41] => crate::simd::AlignementSizeX1,
	[*const _; 42] => crate::simd::AlignementSizeX2,
	[*const _; 43] => crate::simd::AlignementSizeX1,
	[*const _; 44] => crate::simd::AlignementSizeX4,
	[*const _; 45] => crate::simd::AlignementSizeX1,
	[*const _; 46] => crate::simd::AlignementSizeX2,
	[*const _; 47] => crate::simd::AlignementSizeX1,
	[*const _; 48] => crate::simd::AlignementSizeX16,
	[*const _; 49] => crate::simd::AlignementSizeX1,
	[*const _; 50] => crate::simd::AlignementSizeX2,
	[*const _; 51] => crate::simd::AlignementSizeX1,
	[*const _; 52] => crate::simd::AlignementSizeX4,
	[*const _; 53] => crate::simd::AlignementSizeX1,
	[*const _; 54] => crate::simd::AlignementSizeX2,
	[*const _; 55] => crate::simd::AlignementSizeX1,
	[*const _; 56] => crate::simd::AlignementSizeX8,
	[*const _; 57] => crate::simd::AlignementSizeX1,
	[*const _; 58] => crate::simd::AlignementSizeX2,
	[*const _; 59] => crate::simd::AlignementSizeX1,
	[*const _; 60] => crate::simd::AlignementSizeX4,
	[*const _; 61] => crate::simd::AlignementSizeX1,
	[*const _; 62] => crate::simd::AlignementSizeX2,
	[*const _; 63] => crate::simd::AlignementSizeX1,
	[*const _; 64] => crate::simd::AlignementSizeX64,
}

impl_valid_layout_for_mut_ptr! {
	[*mut _; 01] => crate::simd::AlignementSizeX1,
	[*mut _; 02] => crate::simd::AlignementSizeX2,
	[*mut _; 03] => crate::simd::AlignementSizeX1,
	[*mut _; 04] => crate::simd::AlignementSizeX4,
	[*mut _; 05] => crate::simd::AlignementSizeX1,
	[*mut _; 06] => crate::simd::AlignementSizeX2,
	[*mut _; 07] => crate::simd::AlignementSizeX1,
	[*mut _; 08] => crate::simd::AlignementSizeX8,
	[*mut _; 09] => crate::simd::AlignementSizeX1,
	[*mut _; 10] => crate::simd::AlignementSizeX2,
	[*mut _; 11] => crate::simd::AlignementSizeX1,
	[*mut _; 12] => crate::simd::AlignementSizeX4,
	[*mut _; 13] => crate::simd::AlignementSizeX1,
	[*mut _; 14] => crate::simd::AlignementSizeX2,
	[*mut _; 15] => crate::simd::AlignementSizeX1,
	[*mut _; 16] => crate::simd::AlignementSizeX16,
	[*mut _; 17] => crate::simd::AlignementSizeX1,
	[*mut _; 18] => crate::simd::AlignementSizeX2,
	[*mut _; 19] => crate::simd::AlignementSizeX1,
	[*mut _; 20] => crate::simd::AlignementSizeX4,
	[*mut _; 21] => crate::simd::AlignementSizeX1,
	[*mut _; 22] => crate::simd::AlignementSizeX2,
	[*mut _; 23] => crate::simd::AlignementSizeX1,
	[*mut _; 24] => crate::simd::AlignementSizeX8,
	[*mut _; 25] => crate::simd::AlignementSizeX1,
	[*mut _; 26] => crate::simd::AlignementSizeX2,
	[*mut _; 27] => crate::simd::AlignementSizeX1,
	[*mut _; 28] => crate::simd::AlignementSizeX4,
	[*mut _; 29] => crate::simd::AlignementSizeX1,
	[*mut _; 30] => crate::simd::AlignementSizeX2,
	[*mut _; 31] => crate::simd::AlignementSizeX1,
	[*mut _; 32] => crate::simd::AlignementSizeX32,
	[*mut _; 33] => crate::simd::AlignementSizeX1,
	[*mut _; 34] => crate::simd::AlignementSizeX2,
	[*mut _; 35] => crate::simd::AlignementSizeX1,
	[*mut _; 36] => crate::simd::AlignementSizeX4,
	[*mut _; 37] => crate::simd::AlignementSizeX1,
	[*mut _; 38] => crate::simd::AlignementSizeX2,
	[*mut _; 39] => crate::simd::AlignementSizeX1,
	[*mut _; 40] => crate::simd::AlignementSizeX8,
	[*mut _; 41] => crate::simd::AlignementSizeX1,
	[*mut _; 42] => crate::simd::AlignementSizeX2,
	[*mut _; 43] => crate::simd::AlignementSizeX1,
	[*mut _; 44] => crate::simd::AlignementSizeX4,
	[*mut _; 45] => crate::simd::AlignementSizeX1,
	[*mut _; 46] => crate::simd::AlignementSizeX2,
	[*mut _; 47] => crate::simd::AlignementSizeX1,
	[*mut _; 48] => crate::simd::AlignementSizeX16,
	[*mut _; 49] => crate::simd::AlignementSizeX1,
	[*mut _; 50] => crate::simd::AlignementSizeX2,
	[*mut _; 51] => crate::simd::AlignementSizeX1,
	[*mut _; 52] => crate::simd::AlignementSizeX4,
	[*mut _; 53] => crate::simd::AlignementSizeX1,
	[*mut _; 54] => crate::simd::AlignementSizeX2,
	[*mut _; 55] => crate::simd::AlignementSizeX1,
	[*mut _; 56] => crate::simd::AlignementSizeX8,
	[*mut _; 57] => crate::simd::AlignementSizeX1,
	[*mut _; 58] => crate::simd::AlignementSizeX2,
	[*mut _; 59] => crate::simd::AlignementSizeX1,
	[*mut _; 60] => crate::simd::AlignementSizeX4,
	[*mut _; 61] => crate::simd::AlignementSizeX1,
	[*mut _; 62] => crate::simd::AlignementSizeX2,
	[*mut _; 63] => crate::simd::AlignementSizeX1,
	[*mut _; 64] => crate::simd::AlignementSizeX64,
}

#[cfg(feature = "f16")]
impl_valid_layout! {
	[f16; 0x01] => crate::simd::AlignementByteX2,
	[f16; 0x02] => crate::simd::AlignementByteX4,
	[f16; 0x03] => crate::simd::AlignementByteX2,
	[f16; 0x04] => crate::simd::AlignementByteX8,
	[f16; 0x05] => crate::simd::AlignementByteX2,
	[f16; 0x06] => crate::simd::AlignementByteX4,
	[f16; 0x07] => crate::simd::AlignementByteX2,
	[f16; 0x08] => crate::simd::AlignementByteX16,
	[f16; 0x09] => crate::simd::AlignementByteX2,
	[f16; 0x0A] => crate::simd::AlignementByteX4,
	[f16; 0x0B] => crate::simd::AlignementByteX2,
	[f16; 0x0C] => crate::simd::AlignementByteX8,
	[f16; 0x0D] => crate::simd::AlignementByteX2,
	[f16; 0x0E] => crate::simd::AlignementByteX4,
	[f16; 0x0F] => crate::simd::AlignementByteX2,
	[f16; 0x10] => crate::simd::AlignementByteX32,
	[f16; 0x11] => crate::simd::AlignementByteX2,
	[f16; 0x12] => crate::simd::AlignementByteX4,
	[f16; 0x13] => crate::simd::AlignementByteX2,
	[f16; 0x14] => crate::simd::AlignementByteX8,
	[f16; 0x15] => crate::simd::AlignementByteX2,
	[f16; 0x16] => crate::simd::AlignementByteX4,
	[f16; 0x17] => crate::simd::AlignementByteX2,
	[f16; 0x18] => crate::simd::AlignementByteX16,
	[f16; 0x19] => crate::simd::AlignementByteX2,
	[f16; 0x1A] => crate::simd::AlignementByteX4,
	[f16; 0x1B] => crate::simd::AlignementByteX2,
	[f16; 0x1C] => crate::simd::AlignementByteX8,
	[f16; 0x1D] => crate::simd::AlignementByteX2,
	[f16; 0x1E] => crate::simd::AlignementByteX4,
	[f16; 0x1F] => crate::simd::AlignementByteX2,
	[f16; 0x20] => crate::simd::AlignementByteX64,
	[f16; 0x21] => crate::simd::AlignementByteX2,
	[f16; 0x22] => crate::simd::AlignementByteX4,
	[f16; 0x23] => crate::simd::AlignementByteX2,
	[f16; 0x24] => crate::simd::AlignementByteX8,
	[f16; 0x25] => crate::simd::AlignementByteX2,
	[f16; 0x26] => crate::simd::AlignementByteX4,
	[f16; 0x27] => crate::simd::AlignementByteX2,
	[f16; 0x28] => crate::simd::AlignementByteX16,
	[f16; 0x29] => crate::simd::AlignementByteX2,
	[f16; 0x2A] => crate::simd::AlignementByteX4,
	[f16; 0x2B] => crate::simd::AlignementByteX2,
	[f16; 0x2C] => crate::simd::AlignementByteX8,
	[f16; 0x2D] => crate::simd::AlignementByteX2,
	[f16; 0x2E] => crate::simd::AlignementByteX4,
	[f16; 0x2F] => crate::simd::AlignementByteX2,
	[f16; 0x30] => crate::simd::AlignementByteX32,
	[f16; 0x31] => crate::simd::AlignementByteX2,
	[f16; 0x32] => crate::simd::AlignementByteX4,
	[f16; 0x33] => crate::simd::AlignementByteX2,
	[f16; 0x34] => crate::simd::AlignementByteX8,
	[f16; 0x35] => crate::simd::AlignementByteX2,
	[f16; 0x36] => crate::simd::AlignementByteX4,
	[f16; 0x37] => crate::simd::AlignementByteX2,
	[f16; 0x38] => crate::simd::AlignementByteX16,
	[f16; 0x39] => crate::simd::AlignementByteX2,
	[f16; 0x3A] => crate::simd::AlignementByteX4,
	[f16; 0x3B] => crate::simd::AlignementByteX2,
	[f16; 0x3C] => crate::simd::AlignementByteX8,
	[f16; 0x3D] => crate::simd::AlignementByteX2,
	[f16; 0x3E] => crate::simd::AlignementByteX4,
	[f16; 0x3F] => crate::simd::AlignementByteX2,
	[f16; 0x40] => crate::simd::AlignementByteX128,
}

#[cfg(feature = "f128")]
impl_valid_layout! {
	[f128; 0x01] => crate::simd::AlignementByteX16,
	[f128; 0x02] => crate::simd::AlignementByteX32,
	[f128; 0x03] => crate::simd::AlignementByteX16,
	[f128; 0x04] => crate::simd::AlignementByteX64,
	[f128; 0x05] => crate::simd::AlignementByteX16,
	[f128; 0x06] => crate::simd::AlignementByteX32,
	[f128; 0x07] => crate::simd::AlignementByteX16,
	[f128; 0x08] => crate::simd::AlignementByteX128,
	[f128; 0x09] => crate::simd::AlignementByteX16,
	[f128; 0x0A] => crate::simd::AlignementByteX32,
	[f128; 0x0B] => crate::simd::AlignementByteX16,
	[f128; 0x0C] => crate::simd::AlignementByteX64,
	[f128; 0x0D] => crate::simd::AlignementByteX16,
	[f128; 0x0E] => crate::simd::AlignementByteX32,
	[f128; 0x0F] => crate::simd::AlignementByteX16,
	[f128; 0x10] => crate::simd::AlignementByteX256,
	[f128; 0x11] => crate::simd::AlignementByteX16,
	[f128; 0x12] => crate::simd::AlignementByteX32,
	[f128; 0x13] => crate::simd::AlignementByteX16,
	[f128; 0x14] => crate::simd::AlignementByteX64,
	[f128; 0x15] => crate::simd::AlignementByteX16,
	[f128; 0x16] => crate::simd::AlignementByteX32,
	[f128; 0x17] => crate::simd::AlignementByteX16,
	[f128; 0x18] => crate::simd::AlignementByteX128,
	[f128; 0x19] => crate::simd::AlignementByteX16,
	[f128; 0x1A] => crate::simd::AlignementByteX32,
	[f128; 0x1B] => crate::simd::AlignementByteX16,
	[f128; 0x1C] => crate::simd::AlignementByteX64,
	[f128; 0x1D] => crate::simd::AlignementByteX16,
	[f128; 0x1E] => crate::simd::AlignementByteX32,
	[f128; 0x1F] => crate::simd::AlignementByteX16,
	[f128; 0x20] => crate::simd::AlignementByteX512,
	[f128; 0x21] => crate::simd::AlignementByteX16,
	[f128; 0x22] => crate::simd::AlignementByteX32,
	[f128; 0x23] => crate::simd::AlignementByteX16,
	[f128; 0x24] => crate::simd::AlignementByteX64,
	[f128; 0x25] => crate::simd::AlignementByteX16,
	[f128; 0x26] => crate::simd::AlignementByteX32,
	[f128; 0x27] => crate::simd::AlignementByteX16,
	[f128; 0x28] => crate::simd::AlignementByteX128,
	[f128; 0x29] => crate::simd::AlignementByteX16,
	[f128; 0x2A] => crate::simd::AlignementByteX32,
	[f128; 0x2B] => crate::simd::AlignementByteX16,
	[f128; 0x2C] => crate::simd::AlignementByteX64,
	[f128; 0x2D] => crate::simd::AlignementByteX16,
	[f128; 0x2E] => crate::simd::AlignementByteX32,
	[f128; 0x2F] => crate::simd::AlignementByteX16,
	[f128; 0x30] => crate::simd::AlignementByteX256,
	[f128; 0x31] => crate::simd::AlignementByteX16,
	[f128; 0x32] => crate::simd::AlignementByteX32,
	[f128; 0x33] => crate::simd::AlignementByteX16,
	[f128; 0x34] => crate::simd::AlignementByteX64,
	[f128; 0x35] => crate::simd::AlignementByteX16,
	[f128; 0x36] => crate::simd::AlignementByteX32,
	[f128; 0x37] => crate::simd::AlignementByteX16,
	[f128; 0x38] => crate::simd::AlignementByteX128,
	[f128; 0x39] => crate::simd::AlignementByteX16,
	[f128; 0x3A] => crate::simd::AlignementByteX32,
	[f128; 0x3B] => crate::simd::AlignementByteX16,
	[f128; 0x3C] => crate::simd::AlignementByteX64,
	[f128; 0x3D] => crate::simd::AlignementByteX16,
	[f128; 0x3E] => crate::simd::AlignementByteX32,
	[f128; 0x3F] => crate::simd::AlignementByteX16,
	[f128; 0x40] => crate::simd::AlignementByteX1024,
}