Compare commits
2121 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6d44a6222d | ||
|
|
be097cdba8 | ||
|
|
9f6b9850ac | ||
|
|
f9af406341 | ||
|
|
8bf14231b2 | ||
|
|
d2398cf009 | ||
|
|
0d006afb23 | ||
|
|
bf6af1963c | ||
|
|
45d4e2f816 | ||
|
|
46c3d9c571 | ||
|
|
c4458e1b45 | ||
|
|
fbde43524f | ||
|
|
8e10c80c5f | ||
|
|
a8bd36c3d2 | ||
|
|
2e95bb0e29 | ||
|
|
3c40cf1693 | ||
|
|
5cfc22bd36 | ||
|
|
a418c59546 | ||
|
|
a0cd4c0f32 | ||
|
|
d107ef8697 | ||
|
|
cee0f082df | ||
|
|
23d148e5c7 | ||
|
|
eace6906ce | ||
|
|
ac3ac255a2 | ||
|
|
69f46cab55 | ||
|
|
452c35656e | ||
|
|
a24f4d8da4 | ||
|
|
5762b6d218 | ||
|
|
8b5e4af78e | ||
|
|
aad6ef1fc3 | ||
|
|
b54f6186ac | ||
|
|
e2f36c292e | ||
|
|
e9d916571a | ||
|
|
021c1190af | ||
|
|
45cd1114f7 | ||
|
|
d7feeaaa2c | ||
|
|
2b29424efd | ||
|
|
8f89056dc2 | ||
|
|
e8c4fec1b2 | ||
|
|
ac3d9759ed | ||
|
|
922d33e5b9 | ||
|
|
936294e32a | ||
|
|
7e61bdbaa4 | ||
|
|
340bb8198f | ||
|
|
e37c55bae0 | ||
|
|
93545fe74f | ||
|
|
8ed432fe3c | ||
|
|
148b963a60 | ||
|
|
b713ce0249 | ||
|
|
4d5a598599 | ||
|
|
aa8112c847 | ||
|
|
3d52a322ab | ||
|
|
af844d865f | ||
|
|
252fb642d5 | ||
|
|
dcbab17b62 | ||
|
|
881e507ac5 | ||
|
|
18fabd99cc | ||
|
|
afd1f7ed47 | ||
|
|
2ac7aefe2f | ||
|
|
bb9399cc5d | ||
|
|
bc90a2a083 | ||
|
|
1e6de105c8 | ||
|
|
385b7e4808 | ||
|
|
57d7ad9172 | ||
|
|
e67e15a29a | ||
|
|
06ae13fe35 | ||
|
|
dafbc6eb25 | ||
|
|
6f49233ac6 | ||
|
|
bb8eef8d24 | ||
|
|
511990c83b | ||
|
|
9fa55ae777 | ||
|
|
53e41682ba | ||
|
|
3542dcad33 | ||
|
|
9b97edb012 | ||
|
|
1c61038255 | ||
|
|
73cbc13a97 | ||
|
|
adf7c654d4 | ||
|
|
2304dbaba4 | ||
|
|
675590cd44 | ||
|
|
4d38f456ea | ||
|
|
8771ef897a | ||
|
|
1676729c66 | ||
|
|
eee395287f | ||
|
|
419499b252 | ||
|
|
47e3deeeaa | ||
|
|
c4b4192d20 | ||
|
|
64a2b14f26 | ||
|
|
9a0010b186 | ||
|
|
b86aadfa38 | ||
|
|
4d9377923d | ||
|
|
cfc00e743e | ||
|
|
f5cb3fc688 | ||
|
|
acdb859644 | ||
|
|
20f073dcdd | ||
|
|
69e2b712bc | ||
|
|
a18bf7a7bf | ||
|
|
ecf0050a92 | ||
|
|
5c7f2ab011 | ||
|
|
16b7535497 | ||
|
|
80b21cef5a | ||
|
|
07c03f85a8 | ||
|
|
9f9f215305 | ||
|
|
8468b544e8 | ||
|
|
a08137330c | ||
|
|
9a8fdbe0a0 | ||
|
|
6adecdc58a | ||
|
|
88ea2cb757 | ||
|
|
9892684d35 | ||
|
|
5b29b4ffa6 | ||
|
|
6d04de706a | ||
|
|
11803a3a56 | ||
|
|
e8b39960bb | ||
|
|
c1745b2896 | ||
|
|
ef0566df78 | ||
|
|
d54ba76e40 | ||
|
|
1fa5a1959d | ||
|
|
58f669dc8c | ||
|
|
9257669cd4 | ||
|
|
1b0be5c1ce | ||
|
|
e03c951a79 | ||
|
|
e1436873a3 | ||
|
|
37fa6f955d | ||
|
|
afb1652c50 | ||
|
|
bf2bd8e722 | ||
|
|
6a12dce207 | ||
|
|
1530203c80 | ||
|
|
c9863c0a0c | ||
|
|
c8af00c66e | ||
|
|
5aeffab693 | ||
|
|
5b6d26e97b | ||
|
|
22e1d92d3e | ||
|
|
82e8930656 | ||
|
|
e977455f7c | ||
|
|
59a3a27a68 | ||
|
|
21cffe22d4 | ||
|
|
4d48948b52 | ||
|
|
694f424fc7 | ||
|
|
d9fe0d2d6b | ||
|
|
3dcd3612dc | ||
|
|
19ca2415f2 | ||
|
|
1edf8efa42 | ||
|
|
877a1f2a29 | ||
|
|
3532abe0c6 | ||
|
|
e45680cab5 | ||
|
|
09f70bdd91 | ||
|
|
0478446377 | ||
|
|
510357355a | ||
|
|
4b5f8bca5e | ||
|
|
87b843ef08 | ||
|
|
bd926e5ea0 | ||
|
|
3ff05b79b9 | ||
|
|
2e7a48d6bf | ||
|
|
ab328aca33 | ||
|
|
ff93486d0c | ||
|
|
5da013e39c | ||
|
|
20328e976f | ||
|
|
0550198c98 | ||
|
|
eb1e75b2b8 | ||
|
|
93c6ab4952 | ||
|
|
c56663dee8 | ||
|
|
50201e1c30 | ||
|
|
e563b166b2 | ||
|
|
5d1aab72d9 | ||
|
|
1442aa7dc0 | ||
|
|
f9b8808d74 | ||
|
|
5dd53c1986 | ||
|
|
1fd0542bee | ||
|
|
4e647dee9f | ||
|
|
088c1fab4d | ||
|
|
0229fb7c62 | ||
|
|
331b8e892a | ||
|
|
a76910b691 | ||
|
|
4ce6208750 | ||
|
|
1abae06432 | ||
|
|
dbfcebf8d8 | ||
|
|
efdb94486b | ||
| 82a7069344 | |||
|
|
97c0373fa7 | ||
|
|
516945d7d9 | ||
|
|
7bb6393b59 | ||
|
|
175463d75d | ||
|
|
47c309c34a | ||
|
|
75f3e7a4a0 | ||
|
|
828f61e8df | ||
|
|
81e7d8505c | ||
|
|
77836e08a2 | ||
|
|
3e618f8432 | ||
|
|
fdbb329d10 | ||
|
|
4da83feccb | ||
|
|
72ee042ab0 | ||
|
|
01cb0bdb83 | ||
|
|
f69f55c807 | ||
|
|
da9542c0af | ||
|
|
04d44db6cc | ||
|
|
808b9239a3 | ||
|
|
8031783539 | ||
|
|
38b2d62092 | ||
|
|
64e2bfaa23 | ||
|
|
98e36ea6b9 | ||
|
|
f0ec70edd1 | ||
|
|
83a6681955 | ||
|
|
de81c504b1 | ||
|
|
0812b57466 | ||
|
|
274555be21 | ||
|
|
a711fcbbfa | ||
|
|
7d1f47313d | ||
|
|
a3d9cd1c1d | ||
|
|
5924994045 | ||
|
|
ca974de521 | ||
|
|
003bba47cc | ||
|
|
3771e77667 | ||
|
|
fffa89700e | ||
|
|
933999dad1 | ||
|
|
2af94e76a3 | ||
|
|
71d19318e7 | ||
|
|
3ac973c706 | ||
|
|
a7828c261a | ||
|
|
124e942714 | ||
|
|
397a11c107 | ||
|
|
c86f2402d0 | ||
|
|
9e03cf9489 | ||
|
|
b02384e03d | ||
|
|
d28b445329 | ||
|
|
149444723f | ||
|
|
e24398361d | ||
|
|
a1b79ea585 | ||
|
|
f7cbd92e6c | ||
|
|
117c0460d3 | ||
|
|
2f18c5955a | ||
|
|
725267f7c2 | ||
|
|
2dae860de3 | ||
|
|
282e2c714f | ||
|
|
daa3e0bbb4 | ||
|
|
74a5f4d848 | ||
|
|
b7fe958f44 | ||
|
|
52fb044669 | ||
|
|
96a4692f94 | ||
|
|
1777fb25bc | ||
|
|
e81fda9823 | ||
|
|
7e2fae10c9 | ||
|
|
2a0adef583 | ||
|
|
36b6e95aa3 | ||
|
|
bb75f5d297 | ||
|
|
9354ad8278 | ||
|
|
3311ef3262 | ||
|
|
4c1a62326b | ||
|
|
9ede943e07 | ||
|
|
ff38f56040 | ||
|
|
84704ef43e | ||
|
|
77fc9090d5 | ||
|
|
7659229edc | ||
|
|
1cac99c90a | ||
|
|
dfa8ab1dc9 | ||
|
|
f3edff439e | ||
|
|
0cd8710222 | ||
|
|
b24cbecdb2 | ||
|
|
cbd653e1d6 | ||
|
|
005e869abd | ||
|
|
c98b020ce2 | ||
|
|
fb9fcf5632 | ||
|
|
14b532ec85 | ||
|
|
42db515665 | ||
|
|
cf4423bb33 | ||
|
|
1912ec0323 | ||
|
|
852841fd1f | ||
|
|
3e2f8233a8 | ||
|
|
77c5208c77 | ||
|
|
0714832c21 | ||
|
|
70dcdcb73d | ||
|
|
e4c053f047 | ||
|
|
02a1f838e6 | ||
|
|
8c36243136 | ||
|
|
67ec6e73fb | ||
|
|
885c73f343 | ||
|
|
8f9d857932 | ||
|
|
7355a20133 | ||
|
|
dd62a6d2e8 | ||
|
|
f2608df0fb | ||
|
|
40f5e5dfc6 | ||
|
|
89afd4bd33 | ||
|
|
066eaa5e9c | ||
|
|
f68cda738a | ||
|
|
23866b1f81 | ||
|
|
02e5e0ba1f | ||
|
|
9377f32c08 | ||
|
|
80bbf234e0 | ||
|
|
1093b09a98 | ||
|
|
75548b50ff | ||
|
|
47bc13bc59 | ||
|
|
85de022c56 | ||
|
|
1e0addcf73 | ||
|
|
04286e8c3b | ||
|
|
8635275202 | ||
|
|
51df63a44e | ||
|
|
28623544ce | ||
|
|
a56749b654 | ||
|
|
86fe47235e | ||
|
|
2873e19366 | ||
|
|
692c254336 | ||
|
|
902df103c6 | ||
|
|
173d56213b | ||
|
|
0a9b4d092f | ||
|
|
20e19e75fd | ||
|
|
19eaf54bc9 | ||
|
|
ec10e63f49 | ||
|
|
1ea650bb75 | ||
|
|
d3426ce634 | ||
|
|
b613210140 | ||
|
|
da0ea909bc | ||
|
|
7a7df392d1 | ||
|
|
adf059f272 | ||
|
|
2ca5a859e9 | ||
|
|
a4aff36fb3 | ||
|
|
0f63f3eeb7 | ||
|
|
58a552aaf9 | ||
|
|
7e27ab0947 | ||
|
|
dd49eca342 | ||
|
|
7226ad2670 | ||
|
|
9b5d61430f | ||
|
|
90d8544d40 | ||
|
|
aa61e03f24 | ||
|
|
c46a91da13 | ||
|
|
dde5f15b49 | ||
|
|
bd19f5e611 | ||
|
|
6e88df44a2 | ||
|
|
a54ac08885 | ||
|
|
f56ae69edd | ||
|
|
17f057c556 | ||
|
|
f0deef1d79 | ||
|
|
d43ebf562d | ||
|
|
755eeb7be0 | ||
|
|
fdc04101f3 | ||
|
|
4cdf5b6662 | ||
|
|
b097545a5f | ||
|
|
eec825cea2 | ||
|
|
b196dd1d79 | ||
|
|
7c2cc45ad8 | ||
|
|
e2b6dfa608 | ||
|
|
a956958ba9 | ||
|
|
8317dbd1cb | ||
|
|
02d8ca71f9 | ||
|
|
a2c546fea3 | ||
|
|
d6f43a1eac | ||
|
|
a96b6ad83f | ||
|
|
da7baf7dae | ||
|
|
b891ee1f23 | ||
|
|
67b201982b | ||
|
|
7b78b4fff0 | ||
|
|
2006add849 | ||
|
|
9177f5c17b | ||
|
|
a041401256 | ||
|
|
3a3576da60 | ||
|
|
4270f234db | ||
|
|
1954cdc106 | ||
|
|
c42439dff9 | ||
|
|
42a351e099 | ||
|
|
2dcfa486fe | ||
|
|
c9352ef9d6 | ||
|
|
078a7ff198 | ||
|
|
6b87f0dc56 | ||
|
|
b560f46c87 | ||
|
|
a130eac785 | ||
|
|
36c8adf589 | ||
|
|
e266ede6e3 | ||
|
|
0581756453 | ||
|
|
20cc7af8e6 | ||
|
|
27c5c7fb23 | ||
|
|
7e23b3245a | ||
|
|
fd369bcb0b | ||
|
|
a950cb42bd | ||
|
|
fdcac5ecbd | ||
|
|
02b8d88153 | ||
|
|
c42763f8cc | ||
|
|
57e1f6a89f | ||
|
|
7ee02b5e70 | ||
|
|
2e15a404e2 | ||
|
|
8f1e417757 | ||
|
|
8e6c038dd8 | ||
|
|
f5c0c0803f | ||
|
|
0c1d610015 | ||
|
|
de8e612455 | ||
|
|
e08b6149ab | ||
|
|
e8b9942873 | ||
|
|
af1a5751d9 | ||
|
|
065f40a3c5 | ||
|
|
ed70f9981c | ||
|
|
bc3e86c4b7 | ||
|
|
11330cbcc5 | ||
|
|
691090f342 | ||
|
|
e17c4a497f | ||
|
|
40e49fe2f0 | ||
|
|
9836f1b2f9 | ||
|
|
2b589d71fb | ||
|
|
722c6b9567 | ||
|
|
2991e3f66b | ||
|
|
6afcaf4a08 | ||
|
|
cb248898ab | ||
|
|
83a0329c92 | ||
|
|
41b37712ea | ||
|
|
96e5f661bd | ||
|
|
ceeb230c23 | ||
|
|
b644d49365 | ||
|
|
939f51aebb | ||
|
|
12140ead43 | ||
|
|
deb8d0765b | ||
|
|
ec5220405b | ||
|
|
460b3d39ea | ||
|
|
b2221e5644 | ||
|
|
261f13414b | ||
|
|
c18bc08e3c | ||
|
|
05330bbe0d | ||
|
|
110c185886 | ||
|
|
c6b4fe0066 | ||
|
|
4e5a88b288 | ||
|
|
a699d678b2 | ||
|
|
3fefdc1a0b | ||
|
|
e8112f7744 | ||
|
|
c84147f90d | ||
|
|
54bcd1cd51 | ||
|
|
a83fb9289f | ||
|
|
be541ca5e1 | ||
|
|
e24dcd2707 | ||
|
|
696e51be49 | ||
|
|
ad5533fdfb | ||
|
|
18a909f61d | ||
|
|
bc59a630ab | ||
|
|
149bc79486 | ||
|
|
8fc3a707a4 | ||
|
|
f950d763a1 | ||
|
|
6cf8a49bb0 | ||
|
|
7747bf07c7 | ||
|
|
00966b7258 | ||
|
|
2fefd4ea8e | ||
|
|
b3f4abbc5a | ||
|
|
3794a32d89 | ||
|
|
3d528161c8 | ||
|
|
d94b032e92 | ||
|
|
0e8673f534 | ||
|
|
09588c795c | ||
|
|
68fe391de0 | ||
|
|
30ed91b7b9 | ||
|
|
a1d7604162 | ||
|
|
0249344a47 | ||
|
|
f33af8f071 | ||
|
|
cf99afc525 | ||
|
|
3896de3078 | ||
|
|
0300ec4ef7 | ||
|
|
89793bdfa7 | ||
|
|
dffa6dcaf9 | ||
|
|
ad4627ea3b | ||
|
|
34684725aa | ||
|
|
9bf1681990 | ||
|
|
952d865bd2 | ||
|
|
9c1c1d478d | ||
|
|
dcd88ae568 | ||
|
|
c587be78d7 | ||
|
|
85e427e4b2 | ||
|
|
4eaf3c665e | ||
|
|
ed2e4a7f13 | ||
|
|
fb99808008 | ||
|
|
eecb669074 | ||
|
|
d7c770fb7f | ||
|
|
353c59e6d5 | ||
|
|
796687f156 | ||
|
|
dfd604834b | ||
|
|
5d2a77cd9a | ||
|
|
39c0d8bd2c | ||
|
|
08c768ad82 | ||
|
|
564629f704 | ||
|
|
353c19468d | ||
|
|
33889e1974 | ||
|
|
590880158a | ||
|
|
d3135f7682 | ||
|
|
4ec83133e9 | ||
|
|
cfb9bf59c1 | ||
|
|
59e91f4b25 | ||
|
|
426f54026b | ||
|
|
b875f79dd8 | ||
|
|
406baf4b12 | ||
|
|
b26b72f540 | ||
|
|
46af3a320c | ||
|
|
29f531bec9 | ||
|
|
c61fbe77c8 | ||
|
|
09c17acf02 | ||
|
|
1d55705fa4 | ||
|
|
d3a099c14f | ||
|
|
96e715d5a3 | ||
|
|
8ab90a0b32 | ||
|
|
71388b980b | ||
|
|
77d1d5839a | ||
|
|
2a54c2ff19 | ||
|
|
08d6876d20 | ||
|
|
19e5663869 | ||
|
|
53523ef5d0 | ||
|
|
f3ba72cf5a | ||
|
|
4168b01e7a | ||
|
|
a5a012e859 | ||
|
|
8cb00519cd | ||
|
|
e5bc092408 | ||
|
|
51efd553ae | ||
|
|
91c3206b45 | ||
|
|
b521510cd4 | ||
|
|
e89e3735f3 | ||
|
|
cb785b9c6b | ||
|
|
008b0ec5e5 | ||
|
|
65e518e8e8 | ||
|
|
6869bc9ff8 | ||
|
|
0d7359ca9b | ||
|
|
c77698d69e | ||
|
|
7afa220f92 | ||
|
|
c715d512cb | ||
|
|
b24e475717 | ||
|
|
d2cdfb9490 | ||
|
|
c13166ee85 | ||
|
|
cebac8c662 | ||
|
|
9bb7ff68cc | ||
|
|
e04ab39036 | ||
|
|
3534f8a3ed | ||
|
|
082072bd4f | ||
|
|
bfb88b2d0d | ||
|
|
73be14027d | ||
|
|
fe314e60bb | ||
|
|
09992f8acc | ||
|
|
4d75382452 | ||
|
|
684d9532c5 | ||
|
|
e3d638a49e | ||
|
|
a7d215759e | ||
|
|
3c7310f8cc | ||
|
|
4acd8920d8 | ||
|
|
bd8b94bd0e | ||
|
|
6b5e403e5d | ||
|
|
a53becc034 | ||
|
|
0fb26b0369 | ||
|
|
2551946a51 | ||
|
|
e97feb96e4 | ||
|
|
d03e9d0b83 | ||
|
|
77ffffc7cc | ||
|
|
a55dc4a3bc | ||
|
|
08dc840247 | ||
|
|
5ebdc8c46c | ||
|
|
674932e503 | ||
|
|
325bae7fc0 | ||
|
|
a78e61acf9 | ||
|
|
63f4778827 | ||
|
|
70ef9bc75c | ||
|
|
77eefebe65 | ||
|
|
002fbb0af0 | ||
|
|
f951bf8aeb | ||
|
|
01842a6ead | ||
|
|
65c27e8e66 | ||
|
|
92d2aa1b48 | ||
|
|
5760ba949f | ||
|
|
e712f87a66 | ||
|
|
f0260555d6 | ||
|
|
a0bf620fbf | ||
|
|
2561be2e34 | ||
|
|
a343758141 | ||
|
|
f49d42729a | ||
|
|
83dcfd6205 | ||
|
|
8346e011c9 | ||
|
|
91d93b6395 | ||
|
|
c452d10953 | ||
|
|
2d1efba8c5 | ||
|
|
8a3a6a98aa | ||
|
|
49d8723408 | ||
|
|
10c9fa0e08 | ||
|
|
8a55e6b6c4 | ||
|
|
0bdb367ee4 | ||
|
|
9471e3da35 | ||
|
|
7fc89f64b4 | ||
|
|
969bcb6a59 | ||
|
|
1de6f9a267 | ||
|
|
d6067db062 | ||
|
|
5ff01bd820 | ||
|
|
544d7d9982 | ||
|
|
66b4bd19c0 | ||
|
|
2cdffc97f0 | ||
|
|
83a4bb6e69 | ||
|
|
eeb8629bea | ||
|
|
ee038df7e2 | ||
|
|
bbe4a9fa99 | ||
|
|
98009a2f66 | ||
|
|
5479c0f9ac | ||
|
|
1c93cf52d8 | ||
|
|
c59ee3157f | ||
|
|
9ed955e5ca | ||
|
|
d2f9646d98 | ||
|
|
234d94e42b | ||
|
|
8e93ec6d24 | ||
|
|
e02caa7e29 | ||
|
|
6504c57176 | ||
|
|
e494ce7604 | ||
|
|
c1a5ff34f3 | ||
|
|
9024f27d8f | ||
|
|
3568cd4b8f | ||
|
|
3af9731600 | ||
|
|
c1fd459f14 | ||
|
|
c8a066f408 | ||
|
|
11a60e8779 | ||
|
|
f890de6294 | ||
|
|
ad5b90ab10 | ||
|
|
79702c144d | ||
|
|
8081e3cbc7 | ||
|
|
c6b3d06535 | ||
|
|
6df26a37d1 | ||
|
|
25012ab3d1 | ||
|
|
17e46a3b97 | ||
|
|
f2a174b294 | ||
|
|
f95ec229f8 | ||
|
|
914993123c | ||
|
|
df198ea60e | ||
|
|
21bf3b8066 | ||
|
|
30d01c8fea | ||
|
|
97dc5f6eb5 | ||
|
|
8509e7111d | ||
|
|
a132190cad | ||
|
|
4eb7b28700 | ||
|
|
7062c8a886 | ||
|
|
0942bf73c9 | ||
|
|
ed7328119f | ||
|
|
8f3e1ea0f0 | ||
|
|
d4bf44024a | ||
|
|
3f6eef22e4 | ||
|
|
df167af0b6 | ||
|
|
a587dd08f8 | ||
|
|
ce65ca4345 | ||
|
|
f7b090d707 | ||
|
|
6cf5305e47 | ||
|
|
f80fd7e1a6 | ||
|
|
2a733051bb | ||
|
|
811766e1cf | ||
|
|
9c5b852f9b | ||
|
|
94879506ea | ||
|
|
1690b35770 | ||
|
|
22b4c9e1a9 | ||
|
|
c563521d44 | ||
|
|
83bdbb2abb | ||
|
|
c905ceb23c | ||
|
|
8a95bac593 | ||
|
|
87b7b31557 | ||
|
|
096763de98 | ||
|
|
76d4b1b823 | ||
|
|
808d1b84a8 | ||
|
|
72039f2349 | ||
|
|
f98f5e0bcd | ||
|
|
07bb8681e9 | ||
|
|
371d3f12a2 | ||
|
|
ee98d87008 | ||
|
|
6aeb6bcc84 | ||
|
|
d97928bf52 | ||
|
|
01c1f41520 | ||
|
|
b24e9b6347 | ||
|
|
f0dcdd7931 | ||
|
|
069c83d58c | ||
|
|
86b9280963 | ||
|
|
d0dceae736 | ||
|
|
912e7dc54b | ||
|
|
6cd14f051d | ||
|
|
895aea0b63 | ||
|
|
0a6851cc6d | ||
|
|
1bce0ed046 | ||
|
|
7f70c27e9d | ||
|
|
a3c9bfef30 | ||
|
|
d49c601d62 | ||
|
|
e2a2e6c14f | ||
|
|
da2b615efb | ||
|
|
fc034ca94f | ||
|
|
09c7d5aebc | ||
|
|
84876fec58 | ||
|
|
1d33822020 | ||
|
|
a0e195120d | ||
|
|
3b2e25ed87 | ||
|
|
8b734380f9 | ||
|
|
c8ded2f9c9 | ||
|
|
4cb5fed10b | ||
|
|
361217bda2 | ||
|
|
d949180ab0 | ||
|
|
ed2a5081e1 | ||
|
|
dfb3231959 | ||
|
|
4a76523b92 | ||
|
|
c1508c98f4 | ||
|
|
2192d404d5 | ||
|
|
e4c437f23b | ||
|
|
6329f4e47a | ||
|
|
d6f048c456 | ||
|
|
7b97f6792f | ||
|
|
b65582e834 | ||
|
|
bfedf40c92 | ||
|
|
c507e0b763 | ||
|
|
05c5c99a95 | ||
|
|
e5d6fe18b9 | ||
|
|
372e9709ad | ||
|
|
2d7b55aa0a | ||
|
|
135cb529de | ||
|
|
ec3ed92f48 | ||
|
|
bea447a637 | ||
|
|
75c8c4442d | ||
|
|
79a3dfcfd8 | ||
|
|
cde3dd365e | ||
|
|
7b00bef6bf | ||
|
|
0ef2e2520a | ||
|
|
7d0a74456b | ||
|
|
40cbf525f7 | ||
|
|
e5dac0a0b3 | ||
|
|
ad17108bdd | ||
|
|
e9d1e5e533 | ||
|
|
07691db3ae | ||
|
|
6534f2ef4f | ||
|
|
53b87fa78a | ||
|
|
15a0b30d8e | ||
|
|
22beaf5afc | ||
|
|
51be575745 | ||
|
|
d004ef2e5d | ||
|
|
fd838584bf | ||
|
|
d193ba9843 | ||
|
|
9336a87452 | ||
|
|
6a3659c4e0 | ||
|
|
98a37dfb23 | ||
|
|
127cd06ba1 | ||
|
|
b5be01a597 | ||
|
|
023e4b9fed | ||
|
|
1e94221190 | ||
|
|
b15d6b2a34 | ||
|
|
fdd11f6cee | ||
|
|
4d6d6977b0 | ||
|
|
82ec56e47e | ||
|
|
6f30c8c098 | ||
|
|
1e09157b53 | ||
|
|
f6bf24b2f3 | ||
|
|
efa4f76c8b | ||
|
|
1df926b24e | ||
|
|
682cdeceaa | ||
|
|
186126c2a4 | ||
|
|
0536c25578 | ||
|
|
0915d24e6b | ||
|
|
01b3905688 | ||
|
|
6a9726e495 | ||
|
|
16ac034a32 | ||
|
|
411e9ca4ad | ||
|
|
f3ab092f67 | ||
|
|
cacd5366a6 | ||
|
|
55eea3b045 | ||
|
|
8b88274781 | ||
|
|
ed5a5e2293 | ||
|
|
0d4a94f32f | ||
|
|
b0f80ef0d5 | ||
|
|
df7d6d263e | ||
|
|
da7fcfd158 | ||
|
|
e851d89113 | ||
|
|
2a701a92c4 | ||
|
|
fc302f00a9 | ||
|
|
a3104a4a78 | ||
|
|
7f006287ae | ||
|
|
2e244c90b3 | ||
|
|
5af7ae1dc4 | ||
|
|
6d6cf59847 | ||
|
|
f42725c39b | ||
|
|
d1fd864da7 | ||
|
|
a5ecffa461 | ||
|
|
d7a5b12f94 | ||
|
|
569802160e | ||
|
|
834202bf98 | ||
|
|
ea45062d82 | ||
|
|
784be05a1a | ||
|
|
e376fab186 | ||
|
|
d621f4322b | ||
|
|
8e1aa72c69 | ||
|
|
526191bfaf | ||
|
|
73403d897c | ||
|
|
75cecef63c | ||
|
|
a0c44e806b | ||
|
|
3df19b765d | ||
|
|
76335bc7ba | ||
|
|
601ac82041 | ||
|
|
1789a35ab9 | ||
|
|
2fbf53c1ce | ||
|
|
c3ce3a67ad | ||
|
|
e16ddad49f | ||
|
|
cb616cb797 | ||
|
|
941b2f0d5e | ||
|
|
9ed599b4e3 | ||
|
|
01ad6c0b02 | ||
|
|
5518a0aff2 | ||
|
|
4ee91bb8a8 | ||
|
|
5e153b5382 | ||
|
|
2fe7b06f3d | ||
|
|
6115cf2240 | ||
|
|
78902db68b | ||
|
|
598db831f3 | ||
|
|
c23768ab2c | ||
|
|
4e590fadb5 | ||
|
|
65e4926c5b | ||
|
|
d4ebfa8763 | ||
|
|
66204b7806 | ||
|
|
5125788e33 | ||
|
|
ac2333ee63 | ||
|
|
a28f2e0dd2 | ||
|
|
2454459ef5 | ||
|
|
95fe86e3db | ||
|
|
a1e02f33ad | ||
|
|
3dc47b8161 | ||
|
|
a62ce87f1f | ||
|
|
b352564b36 | ||
|
|
ebcdfebaa6 | ||
|
|
bbd50248f2 | ||
|
|
fdf13fb819 | ||
|
|
41e9c1bac1 | ||
|
|
5907b3e383 | ||
|
|
15351f206f | ||
|
|
8701d8579d | ||
|
|
96f095987f | ||
|
|
692827baa7 | ||
|
|
52721d3a7e | ||
|
|
bb53f4f15a | ||
|
|
16991f920b | ||
|
|
f1b3a90ef6 | ||
|
|
dc1f698545 | ||
|
|
a36ef84deb | ||
|
|
69be6ba8ee | ||
|
|
fdb37743fa | ||
|
|
a733692444 | ||
|
|
b58cf6dab6 | ||
|
|
616b23c815 | ||
|
|
c41b989ab8 | ||
|
|
5d8f8cdca5 | ||
|
|
a41f812bdb | ||
|
|
a92b144260 | ||
|
|
c79bf18044 | ||
|
|
86c265aec8 | ||
|
|
c4df9bf56f | ||
|
|
61a53a5875 | ||
|
|
0b440d9e29 | ||
|
|
224423ac27 | ||
|
|
cfbbd97075 | ||
|
|
ac52e00564 | ||
|
|
1d2c3af906 | ||
|
|
272bad3f12 | ||
|
|
fd60012c21 | ||
|
|
01e08c92b3 | ||
|
|
53a36eacfa | ||
|
|
d1a4bdb1f3 | ||
|
|
f7c11acb7f | ||
|
|
806eee8e99 | ||
|
|
8d42500699 | ||
|
|
0b8ddb4478 | ||
|
|
993dc2ae77 | ||
|
|
7ef5938450 | ||
|
|
b1e5081826 | ||
|
|
269e548770 | ||
|
|
4916e26be4 | ||
|
|
468ed7ada5 | ||
|
|
05d36fce9c | ||
|
|
49f687f7c6 | ||
|
|
b9ec7c5675 | ||
|
|
dde0adcb36 | ||
|
|
bb3ef76434 | ||
|
|
ada72c7aa9 | ||
|
|
c64b885c82 | ||
|
|
a3842cbafd | ||
|
|
a1c802cbba | ||
|
|
9f441c7f8f | ||
|
|
36f1f4f9fe | ||
|
|
7a2624c3e4 | ||
|
|
c7b32eb99a | ||
|
|
933fd5110d | ||
|
|
86bb09a0ff | ||
|
|
210ef5af8e | ||
|
|
f317acb2cd | ||
|
|
acb0a87158 | ||
|
|
43e3734d3b | ||
|
|
9bf10b1018 | ||
|
|
7350cb2fc7 | ||
|
|
d82b3e2fb1 | ||
|
|
83dcd9f038 | ||
|
|
ebdd9e8719 | ||
|
|
d5c5824c80 | ||
|
|
de92925897 | ||
|
|
456d7e5f5f | ||
|
|
1bbec59e07 | ||
|
|
0f35a1f37a | ||
|
|
3eb729b442 | ||
|
|
c4cd592f0e | ||
|
|
b0e89ee499 | ||
|
|
5e7406bdd9 | ||
|
|
c82c3585c8 | ||
|
|
f87156e33c | ||
|
|
2ed9288246 | ||
|
|
ba7f40c430 | ||
|
|
bdbedff910 | ||
|
|
ea6706b6f4 | ||
|
|
1d1f6a0421 | ||
|
|
b02932f96e | ||
|
|
4e85bf1185 | ||
|
|
99961f22dc | ||
|
|
33e77f127d | ||
|
|
7efc2a0626 | ||
|
|
51a40f9a66 | ||
|
|
cf90cb7218 | ||
|
|
5467582444 | ||
|
|
71da169c67 | ||
|
|
6cb7906394 | ||
|
|
51673bcb31 | ||
|
|
38703dc9c2 | ||
|
|
baaec94fe4 | ||
|
|
cd8d8add91 | ||
|
|
68050852fa | ||
|
|
fd8383545a | ||
|
|
4870595352 | ||
|
|
1d86eae526 | ||
|
|
0f246257be | ||
|
|
6ba9f7474f | ||
|
|
bdb90a07bb | ||
|
|
dcbc52ec85 | ||
|
|
b9a95f2dd9 | ||
|
|
29f41896ed | ||
|
|
79bc5891c1 | ||
|
|
1e805df81d | ||
|
|
754ea118bc | ||
|
|
1cc5d4e758 | ||
|
|
60b6e74468 | ||
|
|
09e1f37cb6 | ||
|
|
c2a7542df5 | ||
|
|
c0aa4a1a42 | ||
|
|
25266d0804 | ||
|
|
1f2f9f05c2 | ||
|
|
04366576ea | ||
|
|
15f55b2805 | ||
|
|
42aa1ea115 | ||
|
|
87fd502fb6 | ||
|
|
a032fd01e8 | ||
|
|
1e7009a9d9 | ||
|
|
8f58e2d779 | ||
|
|
664941bf14 | ||
|
|
ef7fa76001 | ||
|
|
f215d98043 | ||
|
|
418105589a | ||
|
|
cc4d38ed57 | ||
|
|
bdbd060cc7 | ||
|
|
ef6fbbdab6 | ||
|
|
dd81a2147d | ||
|
|
a0a847f2e4 | ||
|
|
cd3dcc225b | ||
|
|
f615648d7b | ||
|
|
351e4f07ce | ||
|
|
736d14fd5f | ||
|
|
0ec01e58b4 | ||
|
|
f5c27dd11a | ||
|
|
e03095f167 | ||
|
|
d86678778a | ||
|
|
4782bededa | ||
|
|
d6e87da47b | ||
|
|
3b09262c12 | ||
|
|
e14fcd60cb | ||
|
|
4afe4bdfe7 | ||
|
|
aecebf38ac | ||
|
|
0e2b9ac777 | ||
|
|
be71195bba | ||
|
|
01f20c7f48 | ||
|
|
8c86043178 | ||
|
|
5913140b6b | ||
|
|
affd8f8b59 | ||
|
|
a2dd0c387d | ||
|
|
d722f0cc62 | ||
|
|
5269cbea20 | ||
|
|
0c74ce1156 | ||
|
|
55e7c099ca | ||
|
|
d64d5cfc0a | ||
|
|
9a54ff72df | ||
|
|
1ad905c71e | ||
|
|
f8b914fcf3 | ||
|
|
2a728f6e5f | ||
|
|
380ca26855 | ||
|
|
abc30f7948 | ||
|
|
4b2d7a9c67 | ||
|
|
f3147de7a2 | ||
|
|
b9d3527e0e | ||
|
|
f697e0a326 | ||
|
|
5dc251747b | ||
|
|
806aeab2a7 | ||
|
|
b3ae69d80b | ||
|
|
db181b173f | ||
|
|
cfd5b81850 | ||
|
|
1f61076ffb | ||
|
|
619260d94d | ||
|
|
95e83afa98 | ||
|
|
5a142dfa56 | ||
|
|
e4ac063297 | ||
|
|
13b917148e | ||
|
|
90a945b38c | ||
|
|
7956eee1ab | ||
|
|
c5945467ac | ||
|
|
7a5d0cdf45 | ||
|
|
0492b71319 | ||
|
|
68fcbb5c0d | ||
|
|
ea393b2bca | ||
|
|
e09465fc49 | ||
|
|
2f43749c2b | ||
|
|
8f28c58759 | ||
|
|
7686165c82 | ||
|
|
6336f08c21 | ||
|
|
e77fcf1730 | ||
|
|
8672f2696f | ||
|
|
538f1bbcb3 | ||
|
|
497c0d3783 | ||
|
|
64c328a717 | ||
|
|
e182c17187 | ||
|
|
0e6dc64a6f | ||
|
|
cd9f6001af | ||
|
|
6023108650 | ||
|
|
cfbe9a6f61 | ||
|
|
805e1bffbd | ||
|
|
7da9fa6fe2 | ||
|
|
ccc7f9987d | ||
|
|
9fa723ee50 | ||
|
|
2a0c44fff3 | ||
|
|
224d4de747 | ||
|
|
59f5053bed | ||
|
|
feeb25908b | ||
|
|
2be3b1d2bf | ||
|
|
cfe71cb67a | ||
|
|
84ab03a875 | ||
|
|
4cb2d6bc3e | ||
|
|
f388b57553 | ||
|
|
d2b5105f54 | ||
|
|
f0b1eec809 | ||
|
|
d8375696f6 | ||
|
|
b58d8aa05f | ||
|
|
091a98f524 | ||
|
|
dbe9a5114e | ||
|
|
dc9d76b630 | ||
|
|
d11f42c2b2 | ||
|
|
6d37ae95ed | ||
|
|
8f8294a809 | ||
|
|
2c8b201d05 | ||
|
|
ab84ba39d0 | ||
|
|
dc214e041e | ||
|
|
6f85a67987 | ||
|
|
983d6dcd9e | ||
|
|
506f24cac2 | ||
|
|
db940a2c81 | ||
|
|
e1bf350b4d | ||
|
|
d5c1d24964 | ||
|
|
b67d1810be | ||
|
|
f83a4b444c | ||
|
|
1f653b7f8e | ||
|
|
f3ebfcae38 | ||
|
|
19691c0b17 | ||
|
|
e5fd45003e | ||
|
|
e06052f201 | ||
|
|
2b90e2c284 | ||
|
|
25416d8121 | ||
|
|
0395b35cee | ||
|
|
5d14590ed1 | ||
|
|
370be12652 | ||
|
|
010ca69864 | ||
|
|
85f065a511 | ||
|
|
d1908c9f66 | ||
|
|
05763f43b3 | ||
|
|
264acfdf3c | ||
|
|
97d69e3352 | ||
|
|
a9a21c5988 | ||
|
|
5529febab0 | ||
|
|
111a2dcf3a | ||
|
|
a38b636045 | ||
|
|
760241ce50 | ||
|
|
46a10401f0 | ||
|
|
f011f13933 | ||
|
|
4c36da1047 | ||
|
|
1965465ced | ||
|
|
50e34a063c | ||
|
|
c4f97d3365 | ||
|
|
ffb9891695 | ||
|
|
62a6d83da1 | ||
|
|
2118566931 | ||
|
|
7aa6064638 | ||
|
|
054fe96bcd | ||
|
|
6734271eb0 | ||
|
|
31dcb0dde7 | ||
|
|
6e0c3950b8 | ||
|
|
0c091feb5a | ||
|
|
9e24727062 | ||
|
|
8e5f7f5fe8 | ||
|
|
93c6e31cf1 | ||
|
|
aaacfc0d0a | ||
|
|
56fdada577 | ||
|
|
3611487952 | ||
|
|
1efdb137d1 | ||
|
|
23be9cae34 | ||
|
|
9fb44e8e1f | ||
|
|
23c25c5eaf | ||
|
|
175d95b591 | ||
|
|
6237dc0ab8 | ||
|
|
e00b9d6192 | ||
|
|
343547d4a4 | ||
|
|
501e6cf2f3 | ||
|
|
e229202cb8 | ||
|
|
375619820e | ||
|
|
d305ba7f2d | ||
|
|
3d5ff91441 | ||
|
|
88e0f81eef | ||
|
|
c2f585e435 | ||
|
|
f1126e854c | ||
|
|
a48e5af69d | ||
|
|
159e55dfd9 | ||
|
|
fd2c1d8605 | ||
|
|
a2279e7e20 | ||
|
|
16c3cd3d19 | ||
|
|
c35f668932 | ||
|
|
107e3ba3cd | ||
|
|
738395f9bc | ||
|
|
34671b1d19 | ||
|
|
6836cc473c | ||
|
|
81e5320973 | ||
|
|
29d2e19c3e | ||
|
|
2914ea9e33 | ||
|
|
5e64d9745b | ||
|
|
61dca19107 | ||
|
|
ea8808f87b | ||
|
|
d92b5416e8 | ||
|
|
7e87f93e06 | ||
|
|
eb5e4ac495 | ||
|
|
80e1c244b6 | ||
|
|
5672ee4ed7 | ||
|
|
fdf1918b39 | ||
|
|
1d2199b71c | ||
|
|
7536a2f8cf | ||
|
|
a783f3a369 | ||
|
|
4b07da7090 | ||
|
|
5af13f35f9 | ||
|
|
594271f8db | ||
|
|
2264fca03e | ||
|
|
21171fd71b | ||
|
|
bbf4c25e2d | ||
|
|
c0e84e3ee0 | ||
|
|
0932b0d9b3 | ||
|
|
1a492d5156 | ||
|
|
5a4cc24c0e | ||
|
|
f8dd4b13d6 | ||
|
|
057f0fec33 | ||
|
|
feec4b0614 | ||
|
|
f4d3d29f92 | ||
|
|
f5553bfefc | ||
|
|
df589eecd6 | ||
|
|
8d2acff197 | ||
|
|
89dd2b7ac2 | ||
|
|
cca57042df | ||
|
|
3940a1be18 | ||
|
|
e41e75a486 | ||
|
|
a2ff3a13fe | ||
|
|
ca21cad2bf | ||
|
|
332eafeb7f | ||
|
|
c05a20fc8c | ||
|
|
7884d84315 | ||
|
|
b781ef464d | ||
|
|
7f03cfe161 | ||
|
|
c09ba8796c | ||
|
|
1bbfcb95ab | ||
|
|
3deda15e21 | ||
|
|
4741c04254 | ||
|
|
303e1a062c | ||
|
|
a338eaccc8 | ||
|
|
9dbad2d188 | ||
|
|
17066cc12e | ||
|
|
81e2034d4a | ||
|
|
742fe65f3e | ||
|
|
bf0d436087 | ||
|
|
04b801655c | ||
|
|
173db6eea6 | ||
|
|
21a5769afe | ||
|
|
4eff0f4ea1 | ||
|
|
7a99cd069a | ||
|
|
77516af118 | ||
|
|
4f0aa7d639 | ||
|
|
3b9ec4e4df | ||
|
|
d522f925b7 | ||
|
|
9d4a6d67aa | ||
|
|
7efca2e6f5 | ||
|
|
75263e160e | ||
|
|
d0dc622638 | ||
|
|
50db993119 | ||
|
|
76b85cd665 | ||
|
|
435d8ae536 | ||
|
|
50c6b6cc66 | ||
|
|
d0f04824f1 | ||
|
|
7cdb30ee95 | ||
|
|
f6d9ac481b | ||
|
|
a360f2bf6c | ||
|
|
908f722107 | ||
|
|
b25e58b0ac | ||
|
|
353eec73ca | ||
|
|
cf9684ce75 | ||
|
|
ede47d49eb | ||
|
|
cf75cad899 | ||
|
|
4334dbb9a5 | ||
|
|
ef39725055 | ||
|
|
2831d6e9b8 | ||
|
|
e878a6633f | ||
|
|
56845082bc | ||
|
|
861b784454 | ||
|
|
be9b490f84 | ||
|
|
49c9975484 | ||
|
|
7b863aa8ac | ||
|
|
4bb5d17edc | ||
|
|
db4fea6689 | ||
|
|
6aeab0f323 | ||
|
|
05cf44933d | ||
|
|
6a6e2cd64f | ||
|
|
f30aa25cbf | ||
|
|
cfae70ec8e | ||
|
|
3aa533519d | ||
|
|
3a3704be05 | ||
|
|
a14e98fcac | ||
|
|
ad4a8e7665 | ||
|
|
1e65d41a65 | ||
|
|
705cd64080 | ||
|
|
311797f686 | ||
|
|
8bd0687713 | ||
|
|
04cafd8137 | ||
|
|
29df0ca39d | ||
|
|
570c75cb74 | ||
|
|
432fb7054d | ||
|
|
d19d3342c2 | ||
|
|
c12183b608 | ||
|
|
ee786e5c3c | ||
|
|
af57ccbe27 | ||
|
|
ea4bd2b879 | ||
|
|
9c95f38a7c | ||
|
|
f1f28af188 | ||
|
|
d29871977f | ||
|
|
aee6f14bce | ||
|
|
dd75302563 | ||
|
|
e3840817d7 | ||
|
|
32ce8238a8 | ||
|
|
5c79370e9c | ||
|
|
8a37fe2176 | ||
|
|
8c41a8e761 | ||
|
|
8d30092704 | ||
|
|
a98fa56ae9 | ||
|
|
9e3ec98937 | ||
|
|
bb38931c71 | ||
|
|
91c0552cfc | ||
|
|
876071b50b | ||
|
|
9e7b2fb894 | ||
|
|
799c5bb955 | ||
|
|
d5ef5da594 | ||
|
|
c465b34d32 | ||
|
|
72c4b80d31 | ||
|
|
62e3d67605 | ||
|
|
4ac37eb484 | ||
|
|
f378b0adce | ||
|
|
2b40815a22 | ||
|
|
ea499203fe | ||
|
|
f28868e8fd | ||
|
|
d61d85abd2 | ||
|
|
27e3216285 | ||
|
|
e3e6df17ed | ||
|
|
724995e892 | ||
|
|
3b25205833 | ||
|
|
d63d8ae1c0 | ||
|
|
d57c0cc3bf | ||
|
|
4c18da1ef3 | ||
|
|
bbb96e112c | ||
|
|
2d10c52b3c | ||
|
|
f0176eec4a | ||
|
|
6c55d854cf | ||
|
|
5806c386eb | ||
|
|
e48d7bbb99 | ||
|
|
a2438357e1 | ||
|
|
0cd361219c | ||
|
|
224fe49be2 | ||
|
|
f9e50a5830 | ||
|
|
2f1abd919a | ||
|
|
7aecf90d2e | ||
|
|
b2e970d157 | ||
|
|
cfb2827b0a | ||
|
|
0cecdca6a2 | ||
|
|
ddaca72864 | ||
|
|
b3d3e93636 | ||
|
|
e94f3c4e25 | ||
|
|
8c39ab2659 | ||
|
|
792fd9c4a3 | ||
|
|
153e231774 | ||
|
|
2f6dbaa0ea | ||
|
|
6a5094872f | ||
|
|
47f7ed1c4c | ||
|
|
6926e6e705 | ||
|
|
2e22f7e5a5 | ||
|
|
2e6ce11eb2 | ||
|
|
df10e998ee | ||
|
|
62fe4a0ba8 | ||
|
|
7e7d67d8ee | ||
|
|
d785dc49aa | ||
|
|
2129cc5c54 | ||
|
|
5cd1d42a35 | ||
|
|
87d5db057b | ||
|
|
30247fbb6a | ||
|
|
8167456c58 | ||
|
|
790633a2a0 | ||
|
|
8b795fe2ac | ||
|
|
69f4281774 | ||
|
|
c6ea181e75 | ||
|
|
92b69215e6 | ||
|
|
52f9b283a7 | ||
|
|
a51edc978f | ||
|
|
4c90c1ff63 | ||
|
|
1b8f0d8b56 | ||
|
|
968c969e2a | ||
|
|
4c9d41730e | ||
|
|
2f599b655b | ||
|
|
a69b86003c | ||
|
|
7adf15682c | ||
|
|
d6467dcf71 | ||
|
|
21606339af | ||
|
|
78ff2a148a | ||
|
|
e2303840de | ||
|
|
d5f7963331 | ||
|
|
f82c26eb04 | ||
|
|
b20b6d7da9 | ||
|
|
819ef52104 | ||
|
|
e9bf8014bd | ||
|
|
fcf2ce0ffe | ||
|
|
c2635f9b02 | ||
|
|
65208a7fa2 | ||
|
|
f6bb56f8c7 | ||
|
|
7e07df06a4 | ||
|
|
8ff49966bc | ||
|
|
1373df4c34 | ||
|
|
68617c9fb0 | ||
|
|
ca4898c0f3 | ||
|
|
c53423f8aa | ||
|
|
0961c1975a | ||
|
|
55c6a784a5 | ||
|
|
fc55814faa | ||
|
|
6eecc4af99 | ||
|
|
a0670e748e | ||
|
|
394d287778 | ||
|
|
f49aa960a9 | ||
|
|
f01366e8b3 | ||
|
|
35403d41ce | ||
|
|
da57d6df32 | ||
|
|
493822ac3b | ||
|
|
0686954802 | ||
|
|
5d548cc651 | ||
|
|
16bb5c05f1 | ||
|
|
d95e8bc5f8 | ||
|
|
8afe6210e9 | ||
|
|
60a5552d41 | ||
|
|
509fe33d10 | ||
|
|
9ab8d065b6 | ||
|
|
e9bee08f88 | ||
|
|
2371a63bd4 | ||
|
|
7007684984 | ||
|
|
ace9b3de64 | ||
|
|
049ff45430 | ||
|
|
f2bf1390a2 | ||
|
|
2ccd023c6a | ||
|
|
97560cd915 | ||
|
|
7814a2bd4a | ||
|
|
f91782c6d1 | ||
|
|
799fedf612 | ||
|
|
f81b2531cb | ||
|
|
d19e1709b3 | ||
|
|
ade85471e2 | ||
|
|
d94252496e | ||
|
|
259f3458a1 | ||
|
|
5789036b86 | ||
|
|
7d0de54ad4 | ||
|
|
e974d4c429 | ||
|
|
ede76f4fe3 | ||
|
|
d31352ee85 | ||
|
|
05fd20dc10 | ||
|
|
ea7bdeb67d | ||
|
|
7e9b23e6dc | ||
|
|
c7dc451a2a | ||
|
|
786e238a7f | ||
|
|
47f2463b5c | ||
|
|
9fd3aeb808 | ||
|
|
fdd97244fd | ||
|
|
c03a04a589 | ||
|
|
011a468381 | ||
|
|
e9e3a29946 | ||
|
|
f58cbef165 | ||
|
|
d4468affb7 | ||
|
|
bd8baefaaa | ||
|
|
ee6f7fee29 | ||
|
|
16c1198858 | ||
|
|
fcdc5c6b3c | ||
|
|
0bef271e75 | ||
|
|
382d201781 | ||
|
|
609b84611d | ||
|
|
aad4598367 | ||
|
|
bc18e93825 | ||
|
|
1472dc3ddb | ||
|
|
41d7787b69 | ||
|
|
bf25650974 | ||
|
|
f3b328ee8c | ||
|
|
159cd528b1 | ||
|
|
68e26a2cee | ||
|
|
871f6343f4 | ||
|
|
934df5bd44 | ||
|
|
b465037a65 | ||
|
|
eba153f88f | ||
|
|
dae4c18aa7 | ||
|
|
d5f173d28f | ||
|
|
ddf14323ea | ||
|
|
0ce54a1416 | ||
|
|
6ae0825e7f | ||
|
|
6e139d124b | ||
|
|
d794f4cd2a | ||
|
|
7e52a096db | ||
|
|
32069d2330 | ||
|
|
a861b7d160 | ||
|
|
61de59e121 | ||
|
|
e58976542b | ||
|
|
5667ab7dcd | ||
|
|
5589edf45c | ||
|
|
0d09c6aed8 | ||
|
|
0ce56f9305 | ||
|
|
58bc713c17 | ||
|
|
d19fdf09ae | ||
|
|
2e30bf23aa | ||
|
|
0b15ba8334 | ||
|
|
f023cdad7c | ||
|
|
06396ddd7d | ||
|
|
e73777333d | ||
|
|
586a19e3db | ||
|
|
c30cc4dbbf | ||
|
|
1f95c50d9a | ||
|
|
6e78c007df | ||
|
|
507dc1f2e7 | ||
|
|
84039a57e4 | ||
|
|
7aaea20e7e | ||
|
|
f6b1fa9e29 | ||
|
|
e5e6ceda6a | ||
|
|
040c6eaaa0 | ||
|
|
a5c6e51f03 | ||
|
|
192b5d24cb | ||
|
|
df4fe87163 | ||
|
|
accde7fe2d | ||
|
|
0be1e74902 | ||
|
|
c0f40a5fe6 | ||
|
|
ed174b7386 | ||
|
|
15bec20b00 | ||
|
|
f5d9d739d7 | ||
|
|
2f9e498c6f | ||
|
|
9c028b2078 | ||
|
|
8028e46f01 | ||
|
|
c47b46fc8d | ||
|
|
c1285a1bbe | ||
|
|
f476463cd2 | ||
|
|
d4d3a9dcc9 | ||
|
|
c090e38340 | ||
|
|
98eea963de | ||
|
|
eb010ce65d | ||
|
|
a8e8927c49 | ||
|
|
c234d4790e | ||
|
|
bb2accba9b | ||
|
|
dc88864c97 | ||
|
|
66e5920dc3 | ||
|
|
a2eb91c422 | ||
|
|
1eeafc3967 | ||
|
|
a8e964eadd | ||
|
|
ba71b96fe6 | ||
|
|
31a59c229c | ||
|
|
cdeea3b094 | ||
|
|
50a29f7c21 | ||
|
|
1e20a62126 | ||
|
|
fc105f2681 | ||
|
|
a9a4fd3200 | ||
|
|
24bfd7bddd | ||
|
|
14d8a1c10d | ||
|
|
dd796154be | ||
|
|
c619b85f67 | ||
|
|
c3d10dbda1 | ||
|
|
5b4885fe89 | ||
|
|
66986dd248 | ||
|
|
ecca829bcb | ||
|
|
b87105c921 | ||
|
|
653c851e62 | ||
|
|
30376a82b2 | ||
|
|
5d98abd570 | ||
|
|
72149ae7e4 | ||
|
|
cb41f0e58d | ||
|
|
ad38fc1147 | ||
|
|
7b8cb881df | ||
|
|
f9798108f8 | ||
|
|
5533f77054 | ||
|
|
1beda818e1 | ||
|
|
e5b476209a | ||
|
|
8ad23d7beb | ||
|
|
e3fe3acce0 | ||
|
|
a38a691487 | ||
|
|
c56b30f565 | ||
|
|
80ba9f060d | ||
|
|
7c25390c95 | ||
|
|
a5fb28070f | ||
|
|
a4feb97cdf | ||
|
|
b33efa3739 | ||
|
|
dc4fa83dd7 | ||
|
|
4fd0cb7618 | ||
|
|
773863150a | ||
|
|
ca90efe88e | ||
|
|
def1359187 | ||
|
|
18b8738069 | ||
|
|
093e10b66e | ||
|
|
680fa880d6 | ||
|
|
d0edd37f69 | ||
|
|
e05b1e0e07 | ||
|
|
36295d712f | ||
|
|
8d0671157c | ||
|
|
845c906e6a | ||
|
|
3bfde76cff | ||
|
|
26984852bd | ||
|
|
c39c46c0d1 | ||
|
|
d15dd78abd | ||
|
|
bf09dd87b6 | ||
|
|
f7ee3b4ca5 | ||
|
|
885477e2df | ||
|
|
1097b0ec77 | ||
|
|
91c4e28c51 | ||
|
|
f47cf93b47 | ||
|
|
9c652cc650 | ||
|
|
fe14e33945 | ||
|
|
5276ce8e63 | ||
|
|
a97e5e119a | ||
|
|
495e60d641 | ||
|
|
ea902ffe8f | ||
|
|
caa0de545e | ||
|
|
1150fc13dc | ||
|
|
95756299af | ||
|
|
bf8e347b1b | ||
|
|
7381431e68 | ||
|
|
1bc3bfc04b | ||
|
|
480242b78a | ||
|
|
44fe9c52e1 | ||
|
|
934ebbe900 | ||
|
|
414b144257 | ||
|
|
4a0f38bb76 | ||
|
|
33aab2c1bb | ||
|
|
b2733a36f8 | ||
|
|
761f36ff93 | ||
|
|
a804de13c8 | ||
|
|
d17f492017 | ||
|
|
2438f61f1c | ||
|
|
424f260f85 | ||
|
|
8082660118 | ||
|
|
eadbee2041 | ||
|
|
12c10139e3 | ||
|
|
0da6633909 | ||
|
|
1294ebe1f5 | ||
|
|
c020a30296 | ||
|
|
27be4f3140 | ||
|
|
7bb2d13a09 | ||
|
|
3c5927fb87 | ||
|
|
dbd3529d1f | ||
|
|
f17a05bfb7 | ||
|
|
91b1896184 | ||
|
|
3a41e4430e | ||
|
|
c09b973ec2 | ||
|
|
0f38f68696 | ||
|
|
0ffc6b5cc3 | ||
|
|
913393fd3b | ||
|
|
ee6432537e | ||
|
|
ef7080aed1 | ||
|
|
9918a5fbe3 | ||
|
|
3c3abaf390 | ||
|
|
5d6f7b44c1 | ||
|
|
a442b165f1 | ||
|
|
bfe2005167 | ||
|
|
1843ecf51b | ||
|
|
e807020679 | ||
|
|
00e944f718 | ||
|
|
3e67ef5c9f | ||
|
|
c905056562 | ||
|
|
95e5fac412 | ||
|
|
4bc72c48b7 | ||
|
|
f6d13e9d6f | ||
|
|
e0b53ad3c9 | ||
|
|
2828cd2983 | ||
|
|
5aa9c0b4ab | ||
|
|
a095263462 | ||
|
|
d8c4838c7d | ||
|
|
9f20a51555 | ||
|
|
fccac48a55 | ||
|
|
97914d93a9 | ||
|
|
d81783375c | ||
|
|
71384a383e | ||
|
|
db8020ac0d | ||
|
|
9979741bff | ||
|
|
407745a5e9 | ||
|
|
54a403d4ff | ||
|
|
5a2bea2931 | ||
|
|
8cde0c91c6 | ||
|
|
b009aca38a | ||
|
|
08e5daa7d5 | ||
|
|
f519e781c6 | ||
|
|
c47ce31071 | ||
|
|
f8678c48ff | ||
|
|
ec874a9b2b | ||
|
|
0135b46659 | ||
|
|
f87424ab63 | ||
|
|
9ca69c51e7 | ||
|
|
e3575cdad4 | ||
|
|
398672eb30 | ||
|
|
e17f12dd64 | ||
|
|
de30a704b1 | ||
|
|
da07251000 | ||
|
|
496903c6a8 | ||
|
|
e3fe9a9df5 | ||
|
|
b8fce705ad | ||
|
|
2a880897b0 | ||
|
|
570660bb46 | ||
|
|
9e051e365b | ||
|
|
95aeb09b9b | ||
|
|
714e0c4761 | ||
|
|
7aefea614f | ||
|
|
3bdb3b574e | ||
|
|
dd5c7588d1 | ||
|
|
322be2698d | ||
|
|
bb5b82cab9 | ||
|
|
0cc4938419 | ||
|
|
12187586d1 | ||
|
|
961b463fad | ||
|
|
7aeedc0912 | ||
|
|
e524f43a6f | ||
|
|
7c662db8d9 | ||
|
|
a04bc1ed14 | ||
|
|
dfa69e3c30 | ||
|
|
555b66c255 | ||
|
|
dbd2eb7c7f | ||
|
|
15b85df3dd | ||
|
|
54888c6f46 | ||
|
|
51e334af44 | ||
|
|
7b4063d558 | ||
|
|
5649242025 | ||
|
|
5b3c4691e6 | ||
|
|
453c16d8ac | ||
|
|
669ac92af0 | ||
|
|
3bd9f38017 | ||
|
|
7c82079d2c | ||
|
|
ceb431507d | ||
|
|
989639efba | ||
|
|
980f2915fa | ||
|
|
ee6e25bc13 | ||
|
|
2b3bda43e3 | ||
|
|
3622fe08db | ||
|
|
9c3ebe0216 | ||
|
|
e08f7ba889 | ||
|
|
ee173d5127 | ||
|
|
4ea7470417 | ||
|
|
a84402d796 | ||
|
|
1799455e05 | ||
|
|
759d1d9aef | ||
|
|
132b18e2b3 | ||
|
|
9086452ff9 | ||
|
|
74972531b5 | ||
|
|
3e8394776a | ||
|
|
9b79ce1cd3 | ||
|
|
28dd9d478d | ||
|
|
03156e5899 | ||
|
|
3063f0a5ed | ||
|
|
e6d7ac8c9b | ||
|
|
a886374df4 | ||
|
|
c28b227d0b | ||
|
|
8de5e8bcd1 | ||
|
|
bd1689ae89 | ||
|
|
7ef8546826 | ||
|
|
b0b9c3c2dc | ||
|
|
18770721ac | ||
|
|
aa2a31612f | ||
|
|
75d1b113aa | ||
|
|
968d1ecf17 | ||
|
|
40764650af | ||
|
|
b9e896d7b0 | ||
|
|
2d855745f9 | ||
|
|
a3703745eb | ||
|
|
9d1fb98fa8 | ||
|
|
84a544f96c | ||
|
|
7b5d139fd3 | ||
|
|
7b8a968f14 | ||
|
|
476faef97a | ||
|
|
b4b90af4e0 | ||
|
|
4eb778fc3e | ||
|
|
1c2facaf6b | ||
|
|
f1aadfa77b | ||
|
|
db2d5b49c6 | ||
|
|
166dffb088 | ||
|
|
72bb6bb143 | ||
|
|
3e59c15025 | ||
|
|
c114474190 | ||
|
|
798162e509 | ||
|
|
34c21affa2 | ||
|
|
1f0b77b3b8 | ||
|
|
a201d80253 | ||
|
|
ec36ac8b21 | ||
|
|
e2b954c273 | ||
|
|
7bdeda82ae | ||
|
|
9dbe684854 | ||
|
|
fb16633ecb | ||
|
|
62d27fcfb6 | ||
|
|
7935e83b1d | ||
|
|
c2e66d9bab | ||
|
|
5c8bd443d9 | ||
|
|
ec63411905 | ||
|
|
5816997ae7 | ||
|
|
9de452f9a6 | ||
|
|
13f04e3012 | ||
|
|
d481acc7db | ||
|
|
298a65ff4b | ||
|
|
b936bbd2f1 | ||
|
|
23f414b927 | ||
|
|
6ba843ee0f | ||
|
|
cff7ecee07 | ||
|
|
f02ee7a9f5 | ||
|
|
6c11e9bb07 | ||
|
|
d089b3df7a | ||
|
|
149ecdfe1b | ||
|
|
b3225a755a | ||
|
|
b5659e0233 | ||
|
|
0ff9a4d21c | ||
|
|
0e5fa87ac9 | ||
|
|
9b08687766 | ||
|
|
b7da1b2d45 | ||
|
|
5d0dad9acd | ||
|
|
da2ca447c8 | ||
|
|
8a863381d1 | ||
|
|
254a35fd88 | ||
|
|
c8f90a7e7e | ||
|
|
5c34c01179 | ||
|
|
af20fdbce7 | ||
|
|
bb98620c10 | ||
|
|
a6bf68ccf9 | ||
|
|
d979dd9b58 | ||
|
|
5103053977 | ||
|
|
c5c23db627 | ||
|
|
7a2e0d9810 | ||
|
|
41336acb0b | ||
|
|
abfee12735 | ||
|
|
24c432608f | ||
|
|
3f680abbe2 | ||
|
|
8ce880ca75 | ||
|
|
22b20f20b6 | ||
|
|
7f5560689a | ||
|
|
cffa22a658 | ||
|
|
527c55aa56 | ||
|
|
125b85d737 | ||
|
|
d84b386f60 | ||
|
|
483eb8e057 | ||
|
|
7140bb64e1 | ||
|
|
1fc877fd94 | ||
|
|
628f490c59 | ||
|
|
98106b09d5 | ||
|
|
2309c81a78 | ||
|
|
2a6ba41020 | ||
|
|
6dd6604638 | ||
|
|
f0fa129e9b | ||
|
|
7b323f84ca | ||
|
|
c6fb968a3d | ||
|
|
fd4a607bb2 | ||
|
|
18bcb2e990 | ||
|
|
6a903fc4c0 | ||
|
|
009c95b8ec | ||
|
|
5f4a40e6aa | ||
|
|
b1f37b4ead | ||
|
|
d016caaccb | ||
|
|
281a9a60f0 | ||
|
|
1ae969e529 | ||
|
|
ca1e61b851 | ||
|
|
6ff64895cf | ||
|
|
235fcc5ba6 | ||
|
|
3a276be135 | ||
|
|
0a1def7833 | ||
|
|
e16d3d162a | ||
|
|
acf2e8fe64 | ||
|
|
d606811f55 | ||
|
|
bc7761d8e0 | ||
|
|
a95ba0d10d | ||
|
|
908b431abe | ||
|
|
b8329351b1 | ||
|
|
81bf05bf6c | ||
|
|
0e15205521 | ||
|
|
37fbf5b0d3 | ||
|
|
e32530b6a3 | ||
|
|
06129d7e3d | ||
|
|
488f68069b | ||
|
|
3d7ae63c6f | ||
|
|
4e61af404e | ||
|
|
6ba6b98b72 | ||
|
|
186577225f | ||
|
|
8211cef77c | ||
|
|
069fcf1c95 | ||
|
|
75a13a456b | ||
|
|
2c385e58f9 | ||
|
|
9b5a463111 | ||
|
|
eca12b74b8 | ||
|
|
5aff1d5d6f | ||
|
|
6d47b4f39e | ||
|
|
15a030ef3d | ||
|
|
f398ac3ee4 | ||
|
|
ef56e42a2a | ||
|
|
3be682bac9 | ||
|
|
b94787afd7 | ||
|
|
2ac769eab9 | ||
|
|
dacc5e624e | ||
|
|
1534cd2f88 | ||
|
|
7a85dc6935 | ||
|
|
73f77f3080 | ||
|
|
49b3986417 | ||
|
|
f9171bf542 | ||
|
|
260c5aed86 | ||
|
|
411f9c60b1 | ||
|
|
177b1b6bf9 | ||
|
|
2d2a6ed1a4 | ||
|
|
4adcd560ce | ||
|
|
350ead9cb2 | ||
|
|
ddd2cd7330 | ||
|
|
264f5f4544 | ||
|
|
8fc5b5a087 | ||
|
|
ad0be78577 | ||
|
|
5e0e7b2cb4 | ||
|
|
8669e3d46b | ||
|
|
5ac5cd9de7 | ||
|
|
3cb6b6bd90 | ||
|
|
3f57468c8b | ||
|
|
52a9d3f037 | ||
|
|
1ff3ebffa3 | ||
|
|
0736365fa4 | ||
|
|
d1fcb99848 | ||
|
|
a480ae6e37 | ||
|
|
5f9b4cba6d | ||
|
|
852e1ed23c | ||
|
|
72f2f68938 | ||
|
|
8216ce6789 | ||
|
|
cea8a2f500 | ||
|
|
b55a3cefa4 | ||
|
|
bc78b02c04 | ||
|
|
09b46198ff | ||
|
|
a600d41880 | ||
|
|
4854c96bc5 | ||
|
|
96a0479db2 | ||
|
|
089577a71d | ||
|
|
fbdc515418 | ||
|
|
cadf32d745 | ||
|
|
642f5df0ab | ||
|
|
31c49ad64d | ||
|
|
29314b64bd | ||
|
|
3259532080 | ||
|
|
de9306096e | ||
|
|
8a5fb4c248 | ||
|
|
2beb21c4e4 | ||
|
|
960932a4bf | ||
|
|
84fe5d4681 | ||
|
|
3a4a710894 | ||
|
|
189fc964f7 | ||
|
|
af40e3f54c | ||
|
|
150515f44d | ||
|
|
6fb45807ab | ||
|
|
c3f637a54c | ||
|
|
96ebf9396f | ||
|
|
cf65ab8601 | ||
|
|
fc185a6f71 | ||
|
|
0134cb0214 | ||
|
|
29945fb8b3 | ||
|
|
ce3679aa45 | ||
|
|
da063ebd96 | ||
|
|
0e7897a9a2 | ||
|
|
d1f99eabb7 | ||
|
|
c6844072ce | ||
|
|
7bebb24838 | ||
|
|
d3ddb48075 | ||
|
|
06412e04f9 | ||
|
|
d279a23c93 | ||
|
|
af9a2c7c50 | ||
|
|
fee5aad699 | ||
|
|
f203334878 | ||
|
|
a51ff3a903 | ||
|
|
b9b0e53197 | ||
|
|
7a595f2e6c | ||
|
|
3d8aa97165 | ||
|
|
59d6b7bbb9 | ||
|
|
f21a3ed540 | ||
|
|
98b10d94bf | ||
|
|
2551598013 | ||
|
|
d14272ab68 | ||
|
|
a04a98ff3e | ||
|
|
4f900e68d3 | ||
|
|
f4a9e0530a | ||
|
|
9fffffb07b | ||
|
|
b83b3883ba | ||
|
|
641ecc260f | ||
|
|
d34a1ccb0e | ||
|
|
18c1007a34 | ||
|
|
f8b8f50b63 | ||
|
|
796b420092 | ||
|
|
7d4c8d7054 | ||
|
|
2092481265 | ||
|
|
75f7a8913e | ||
|
|
8a6de78e07 | ||
|
|
e13a182990 | ||
|
|
a95fdb0635 | ||
|
|
fc1feebdc0 | ||
|
|
00982f75e9 | ||
|
|
e4225ca5f7 | ||
|
|
6de45c826c | ||
|
|
1071ca6129 | ||
|
|
8a7730672f | ||
|
|
37a1028b6e | ||
|
|
aa6422d792 | ||
|
|
fd6d5f1609 | ||
|
|
24b1a0027f | ||
|
|
a6c2e44ae7 | ||
|
|
2dcdaa7668 | ||
|
|
fac0c6f25d | ||
|
|
9e0338b82e | ||
|
|
e006281d79 | ||
|
|
1f29b75f08 | ||
|
|
6ce8440987 | ||
|
|
ccb6e1627e | ||
|
|
b9e78593bb | ||
|
|
9ff15e24f8 | ||
|
|
1e0d68e6fb | ||
|
|
b590195222 | ||
|
|
34c00ecf57 | ||
|
|
6f0cfdb820 | ||
|
|
e18ef71d98 | ||
|
|
0e71e6ee0f | ||
|
|
9e88356282 | ||
|
|
9be2f76741 | ||
|
|
171102ea7c | ||
|
|
00e1c0082c | ||
|
|
1184b1d560 | ||
|
|
2242d3c3aa | ||
|
|
bfe3558efe | ||
|
|
79a4da14ad | ||
|
|
e125ead2b1 | ||
|
|
76584ad0c6 | ||
|
|
90c73d8768 | ||
|
|
515d6430c0 | ||
|
|
0f4173c5d8 | ||
|
|
7f9076c771 | ||
|
|
fb0ecdbe1a | ||
|
|
d892d3bbe7 | ||
|
|
c54af9774d | ||
|
|
1fe6a34f69 | ||
|
|
6362b82497 | ||
|
|
cf26f8c19b | ||
|
|
15ff0db794 | ||
|
|
96d3c4f54f | ||
|
|
6fad1d48e4 | ||
|
|
d6f2772583 | ||
|
|
c434a9a573 | ||
|
|
5df5937bd2 | ||
|
|
e3fa18242b | ||
|
|
eb7cfe9de6 | ||
|
|
71e99c8690 | ||
|
|
7611b80f43 | ||
|
|
8204763328 | ||
|
|
2034ca82b4 | ||
|
|
db08d4c3d6 | ||
|
|
97946e2a41 | ||
|
|
ac42503266 | ||
|
|
0063f642d1 | ||
|
|
dc7d354ee4 | ||
|
|
1795472eb7 | ||
|
|
d2427e6490 | ||
|
|
408d8df86c | ||
|
|
7d5538c32b | ||
|
|
193c529b8c | ||
|
|
7001bde84c | ||
|
|
5a4249fa25 | ||
|
|
6dbdac4b60 | ||
|
|
699b6cdf01 | ||
|
|
ec36b82d05 | ||
|
|
3150458f2f | ||
|
|
382f87abac | ||
|
|
bc64664a0c | ||
|
|
c708962386 | ||
|
|
0ca0e88463 | ||
|
|
5fc25ee8e4 | ||
|
|
66a93ebfbf | ||
|
|
4173a2bc24 | ||
|
|
ee048d6569 | ||
|
|
2d4c439652 | ||
|
|
827fa4d837 | ||
|
|
86ebd4b975 | ||
|
|
e63ff4f1c1 | ||
|
|
df4f11f42f | ||
|
|
b9f07b7ac2 | ||
|
|
ff79b87fa0 | ||
|
|
37f36da391 | ||
|
|
f58fbb1004 | ||
|
|
029fe6c9ab | ||
|
|
e5750f8c7f | ||
|
|
aa83cbb697 | ||
|
|
483933d88d | ||
|
|
3692fb039d | ||
|
|
51beb71480 | ||
|
|
46b9e061e0 | ||
|
|
6664679c8c | ||
|
|
540b52931a | ||
|
|
b2879825d7 | ||
|
|
a6d72fea06 | ||
|
|
ea4a25287e | ||
|
|
44cdafd9d4 | ||
|
|
0d022eb1d6 | ||
|
|
f63338195d | ||
|
|
2ba68f9f4c | ||
|
|
2b2efa24d0 | ||
|
|
05b5e49bc0 | ||
|
|
b5c117d051 | ||
|
|
986a71234b | ||
|
|
caad5c4960 | ||
|
|
6aa9c63f63 | ||
|
|
ac587744e3 | ||
|
|
f7361970b3 | ||
|
|
da4081fe21 | ||
|
|
7ba175cd8b | ||
|
|
45212e3b33 | ||
|
|
d8b133d733 | ||
|
|
ba7bfe949e | ||
|
|
b6277a4b1c | ||
|
|
6cc8845802 | ||
|
|
0bde5ce369 | ||
|
|
c5d4122684 | ||
|
|
b93fd4bb73 | ||
|
|
1b3cc66334 | ||
|
|
e56ba4cee1 | ||
|
|
b15e205438 | ||
|
|
1db6018140 | ||
|
|
4b72b0560d | ||
|
|
56c0a66ce3 | ||
|
|
2ce033f415 | ||
|
|
961d556570 | ||
|
|
1c1ea2baa7 | ||
|
|
98941cf27c | ||
|
|
27bd0971bb | ||
|
|
07acb1ccc9 | ||
|
|
56cb0b5ca0 | ||
|
|
8501bb04ad | ||
|
|
4ed567d12e | ||
|
|
437f81aa9a | ||
|
|
a8116dcc27 | ||
|
|
138afd5cbf | ||
|
|
a3f7a48d9c | ||
|
|
9f8d1a9ff3 | ||
|
|
e1f1f16183 | ||
|
|
183d5f4a53 | ||
|
|
2e4937b695 | ||
|
|
0e08cd63e2 | ||
|
|
43a09f7efc | ||
|
|
c2086efb41 | ||
|
|
2a7fdd56c6 | ||
|
|
d368fd435f | ||
|
|
03cda80a63 | ||
|
|
66ff56c58f | ||
|
|
96bb81b6ef | ||
|
|
916b645fc1 | ||
|
|
88aec4a1ee | ||
|
|
b82d6422ac | ||
|
|
e8e305b67c | ||
|
|
5e63baae8d | ||
|
|
d128ec39df | ||
|
|
629e2e7844 | ||
|
|
96c60bcca5 | ||
|
|
f62f35e346 | ||
|
|
87562b50fc | ||
|
|
8b0dbca32d | ||
|
|
13dc34f779 | ||
|
|
610ce544d5 | ||
|
|
c71e8a30cd | ||
|
|
7f32c799a9 | ||
|
|
21af264e3a | ||
|
|
50822530d3 | ||
|
|
5fa5fba3ce | ||
|
|
9f8de83d93 | ||
|
|
bf568ec62a | ||
|
|
a6ae5a77da | ||
|
|
2ee1f7898b | ||
|
|
dd84ccda5d | ||
|
|
95745f77da | ||
|
|
4e4722a65e | ||
|
|
93a4403271 | ||
|
|
6f6182a5f3 | ||
|
|
2d43db1d76 | ||
|
|
b57ac48773 | ||
|
|
143688e266 | ||
|
|
ccfa168284 | ||
|
|
c822a0b59f | ||
|
|
ec4e67fb0e | ||
|
|
9ac6d28614 | ||
|
|
ff0a15bb7a | ||
|
|
8bf04c3a69 | ||
|
|
fc956fc110 | ||
|
|
c34e9c73ab | ||
|
|
032204ffe7 | ||
|
|
d41a5105cd | ||
|
|
38e233845e | ||
|
|
c313e3f509 | ||
|
|
b0ee911c23 | ||
|
|
7462b0e5b9 | ||
|
|
7efd7bc3b8 | ||
|
|
fa6546ba74 | ||
|
|
fc8791c133 | ||
|
|
b87c3d5371 | ||
|
|
b973e0a3e3 | ||
|
|
0c091f8b09 | ||
|
|
616c82e446 | ||
|
|
e44b55b072 | ||
|
|
734a5cd6d1 | ||
|
|
849b4e3495 | ||
|
|
ca6951ff79 | ||
|
|
fbd99319d1 | ||
|
|
6d52daba37 | ||
|
|
0bda8435e0 | ||
|
|
aecf4571ba | ||
|
|
1aeee80344 | ||
|
|
7babff0bc6 | ||
|
|
ddf9c40bc1 | ||
|
|
c7b68ce0f8 | ||
|
|
555805e0d5 | ||
|
|
b755c46d70 |
@@ -1,7 +1,7 @@
|
||||
image: freebsd/latest
|
||||
secrets:
|
||||
- 51bfddf5-86a6-4e01-8576-358c72a4a0a4
|
||||
- 5cfede76-914e-4071-893e-e5e2e6ae3cea
|
||||
- 512ed797-0927-475a-83fd-bc997792860c
|
||||
sources:
|
||||
- https://github.com/ziglang/zig
|
||||
tasks:
|
||||
|
||||
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -9,3 +9,4 @@ lib/libc/** linguist-vendored
|
||||
lib/libcxx/** linguist-vendored
|
||||
lib/libcxxabi/** linguist-vendored
|
||||
lib/libunwind/** linguist-vendored
|
||||
lib/tsan/** linguist-vendored
|
||||
|
||||
40
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
40
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
name: Bug Report
|
||||
description: File a bug report
|
||||
labels: ["bug"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
A bug is when something works differently than it is expected to.
|
||||
## Remember to search before filing a new report
|
||||
Please search for this bug in the issue tracker, and use a bug report title that
|
||||
would have made your bug report turn up in the search results for your search query.
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: Zig Version
|
||||
description: "The output of `zig version`"
|
||||
placeholder: "0.9.0-dev.1275+ac52e0056"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: repro
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: What exactly can someone else do, in order to observe the problem that you observed?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: expected
|
||||
attributes:
|
||||
label: Expected Behavior
|
||||
description: What did you expect to happen?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: actual
|
||||
attributes:
|
||||
label: Actual Behavior
|
||||
description: What happened instead? Be sure to include all error messages if any.
|
||||
validations:
|
||||
required: true
|
||||
16
.github/ISSUE_TEMPLATE/proposal.yml
vendored
Normal file
16
.github/ISSUE_TEMPLATE/proposal.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
name: Language Proposal
|
||||
description: Propose to improve the Zig language
|
||||
labels: ["proposal"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for your interest in improving the Zig language. However, we are
|
||||
not accepting new proposals to change the language at this time.
|
||||
- type: checkboxes
|
||||
id: trash
|
||||
attributes:
|
||||
label: Please do not file a proposal to change the language
|
||||
options:
|
||||
- label: "I understand, thank you. I will not submit a new proposal at this time"
|
||||
required: true
|
||||
20
.github/ISSUE_TEMPLATE/question.yml
vendored
Normal file
20
.github/ISSUE_TEMPLATE/question.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
name: Question
|
||||
description: Ask a Zig-related question
|
||||
labels: ["question"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Welcome! There are a bunch of great places to ask Zig-related questions.
|
||||
Please take a look at
|
||||
[The Community Wiki Page](https://github.com/ziglang/zig/wiki/Community) and
|
||||
find a comfy place to ask questions. You will find plenty of helpful people in
|
||||
these spaces. However, this issue tracker is not for questions. It is for
|
||||
more actionable items such as bug reports and enhancements.
|
||||
- type: checkboxes
|
||||
id: trash
|
||||
attributes:
|
||||
label: Please do not open a question issue on the bug tracker
|
||||
options:
|
||||
- label: "I understand, thank you. I will take my question to one of the community spaces instead"
|
||||
required: true
|
||||
101
CMakeLists.txt
101
CMakeLists.txt
@@ -25,8 +25,8 @@ project(zig C CXX)
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
|
||||
|
||||
set(ZIG_VERSION_MAJOR 0)
|
||||
set(ZIG_VERSION_MINOR 8)
|
||||
set(ZIG_VERSION_PATCH 0)
|
||||
set(ZIG_VERSION_MINOR 9)
|
||||
set(ZIG_VERSION_PATCH 1)
|
||||
set(ZIG_VERSION "" CACHE STRING "Override Zig version string. Default is to find out with git.")
|
||||
|
||||
if("${ZIG_VERSION}" STREQUAL "")
|
||||
@@ -91,7 +91,12 @@ set(ZIG_TARGET_MCPU "baseline" CACHE STRING "-mcpu parameter to output binaries
|
||||
set(ZIG_EXECUTABLE "" CACHE STRING "(when cross compiling) path to already-built zig binary")
|
||||
set(ZIG_SINGLE_THREADED off CACHE BOOL "limit the zig compiler to use only 1 thread")
|
||||
set(ZIG_OMIT_STAGE2 off CACHE BOOL "omit the stage2 backend from stage1")
|
||||
set(ZIG_ENABLE_LOGGING off CACHE BOOL "enable logging")
|
||||
|
||||
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
|
||||
set(ZIG_ENABLE_LOGGING ON CACHE BOOL "enable logging")
|
||||
else()
|
||||
set(ZIG_ENABLE_LOGGING OFF CACHE BOOL "enable logging")
|
||||
endif()
|
||||
|
||||
if("${ZIG_TARGET_TRIPLE}" STREQUAL "native")
|
||||
set(ZIG_USE_LLVM_CONFIG ON CACHE BOOL "use llvm-config to find LLVM libraries")
|
||||
@@ -99,9 +104,9 @@ else()
|
||||
set(ZIG_USE_LLVM_CONFIG OFF CACHE BOOL "use llvm-config to find LLVM libraries")
|
||||
endif()
|
||||
|
||||
find_package(llvm)
|
||||
find_package(clang)
|
||||
find_package(lld)
|
||||
find_package(llvm 13)
|
||||
find_package(clang 13)
|
||||
find_package(lld 13)
|
||||
|
||||
if(ZIG_STATIC_ZLIB)
|
||||
list(REMOVE_ITEM LLVM_LIBRARIES "-lz")
|
||||
@@ -111,7 +116,10 @@ endif()
|
||||
|
||||
if(APPLE AND ZIG_STATIC)
|
||||
list(REMOVE_ITEM LLVM_LIBRARIES "-lcurses")
|
||||
find_library(CURSES NAMES libcurses.a curses libcurses libncurses.a ncurses libncurses)
|
||||
find_library(CURSES NAMES libcurses.a libncurses.a
|
||||
PATHS
|
||||
/usr/local/opt/ncurses/lib
|
||||
/opt/homebrew/opt/ncurses/lib)
|
||||
list(APPEND LLVM_LIBRARIES "${CURSES}")
|
||||
endif()
|
||||
|
||||
@@ -358,7 +366,9 @@ set(ZIG_STAGE2_SOURCES
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/crypto/siphash.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/debug.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/dwarf.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/dwarf_bits.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/dwarf/AT.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/dwarf/OP.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/dwarf/TAG.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/elf.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/event.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/event/batch.zig"
|
||||
@@ -419,18 +429,13 @@ set(ZIG_STAGE2_SOURCES
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/meta/trait.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/multi_array_list.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/bits.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/bits/linux.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/bits/linux/errno-generic.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/bits/linux/netlink.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/bits/linux/prctl.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/bits/linux/securebits.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/bits/linux/x86_64.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/linux.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/linux/errno/generic.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/linux/x86_64.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/linux.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/linux/io_uring.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/linux/x86_64.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/windows.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/windows/bits.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/windows/ntstatus.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/os/windows/win32error.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/Progress.zig"
|
||||
@@ -441,9 +446,11 @@ set(ZIG_STAGE2_SOURCES
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/addXf3.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/atomics.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/bswap.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/clear_cache.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/clzsi2.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/cmp.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/compareXf2.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/count0bits.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/divdf3.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/divsf3.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/divtf3.zig"
|
||||
@@ -488,11 +495,13 @@ set(ZIG_STAGE2_SOURCES
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/modti3.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/mulXf3.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/muldi3.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/mulodi4.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/muloti4.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/mulo.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/multi3.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/negXf2.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/popcountdi2.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/negXi2.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/os_version_check.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/parity.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/popcount.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/shift.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/stack_probe.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/special/compiler_rt/truncXfYf2.zig"
|
||||
@@ -520,76 +529,85 @@ set(ZIG_STAGE2_SOURCES
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/target/x86.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/Thread.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/Thread/AutoResetEvent.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/Thread/Futex.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/Thread/Mutex.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/Thread/ResetEvent.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/Thread/StaticResetEvent.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/time.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/unicode.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig/ast.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig/cross_target.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig/Ast.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig/CrossTarget.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig/parse.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig/render.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig/string_literal.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig/system.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig/system/NativePaths.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig/system/NativeTargetInfo.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig/system/x86.zig"
|
||||
"${CMAKE_SOURCE_DIR}/lib/std/zig/tokenizer.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/Air.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/AstGen.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/Cache.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/Compilation.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/DepTokenizer.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/Liveness.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/Module.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/Package.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/RangeSet.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/Sema.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/ThreadPool.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/TypedValue.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/WaitGroup.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/AstGen.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/Zir.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/arch/aarch64/bits.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/arch/arm/bits.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/arch/riscv64/bits.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/arch/x86_64/bits.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/arch/wasm/CodeGen.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/clang.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/clang_options.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/clang_options_data.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/codegen.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/codegen/aarch64.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/codegen/arm.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/codegen/c.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/codegen/llvm.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/codegen/llvm/bindings.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/codegen/riscv64.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/codegen/wasm.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/codegen/x86_64.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/glibc.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/introspect.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/air.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/libc_installation.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/libcxx.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/libtsan.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/libunwind.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/C.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/C/zig.h"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/Coff.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/Elf.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/Archive.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/Atom.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/CodeSignature.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/DebugSymbols.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/Dylib.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/Object.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/Symbol.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/Trie.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/Zld.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/bind.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/commands.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/reloc.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/reloc/aarch64.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/MachO/reloc/x86_64.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/Plan9.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/Plan9/aout.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/Wasm.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/C/zig.h"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/msdos-stub.bin"
|
||||
"${CMAKE_SOURCE_DIR}/src/liveness.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/tapi.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/tapi/Tokenizer.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/tapi/parse.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/tapi/parse/test.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/link/tapi/yaml.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/main.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/mingw.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/musl.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/print_air.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/print_env.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/print_targets.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/print_zir.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/stage1.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/target.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/tracy.zig"
|
||||
@@ -599,8 +617,6 @@ set(ZIG_STAGE2_SOURCES
|
||||
"${CMAKE_SOURCE_DIR}/src/value.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/wasi_libc.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/windows_sdk.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/Zir.zig"
|
||||
"${CMAKE_SOURCE_DIR}/src/Sema.zig"
|
||||
)
|
||||
|
||||
if(MSVC)
|
||||
@@ -771,7 +787,7 @@ else()
|
||||
set(ZIG1_RELEASE_ARG -OReleaseFast --strip)
|
||||
endif()
|
||||
if(ZIG_SINGLE_THREADED)
|
||||
set(ZIG1_SINGLE_THREADED_ARG "--single-threaded")
|
||||
set(ZIG1_SINGLE_THREADED_ARG "-fsingle-threaded")
|
||||
else()
|
||||
set(ZIG1_SINGLE_THREADED_ARG "")
|
||||
endif()
|
||||
@@ -781,8 +797,9 @@ set(BUILD_ZIG1_ARGS
|
||||
-target "${ZIG_TARGET_TRIPLE}"
|
||||
"-mcpu=${ZIG_TARGET_MCPU}"
|
||||
--name zig1
|
||||
--override-lib-dir "${CMAKE_SOURCE_DIR}/lib"
|
||||
--zig-lib-dir "${CMAKE_SOURCE_DIR}/lib"
|
||||
"-femit-bin=${ZIG1_OBJECT}"
|
||||
-fcompiler-rt
|
||||
"${ZIG1_RELEASE_ARG}"
|
||||
"${ZIG1_SINGLE_THREADED_ARG}"
|
||||
-lc
|
||||
@@ -835,7 +852,7 @@ set(ZIG_SKIP_INSTALL_LIB_FILES off CACHE BOOL
|
||||
|
||||
if(NOT ZIG_SKIP_INSTALL_LIB_FILES)
|
||||
set(ZIG_INSTALL_ARGS "build"
|
||||
--override-lib-dir "${CMAKE_SOURCE_DIR}/lib"
|
||||
--zig-lib-dir "${CMAKE_SOURCE_DIR}/lib"
|
||||
"-Dlib-files-only"
|
||||
--prefix "${CMAKE_INSTALL_PREFIX}"
|
||||
"-Dconfig_h=${ZIG_CONFIG_H_OUT}"
|
||||
|
||||
@@ -9,7 +9,7 @@ a link. There is no concept of "official" or "unofficial", however, each
|
||||
gathering place has its own moderators and rules.
|
||||
|
||||
This is Andrew Kelley speaking. At least for now, I'm the moderator of the
|
||||
ziglang organization GitHub repositories and the #zig IRC channel on Freenode.
|
||||
ziglang organization GitHub repositories and the #zig IRC channel on Libera.chat.
|
||||
**This document contains the rules that govern these two spaces only**.
|
||||
|
||||
The rules here are strict. This space is for focused, on topic, technical work
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
One of the best ways you can contribute to Zig is to start using it for a
|
||||
personal project. Here are some great examples:
|
||||
|
||||
* [Oxid](https://github.com/dbandstra/oxid) - arcade style game
|
||||
* [TM35-Metronome](https://github.com/TM35-Metronome) - tools for modifying and randomizing Pokémon games
|
||||
* [River](https://github.com/ifreund/river/) - a dynamic tiling wayland compositor
|
||||
|
||||
@@ -105,9 +104,17 @@ When making changes to the compiler source code, the most helpful test step to
|
||||
run is `test-behavior`. When editing documentation it is `docs`. You can find
|
||||
this information and more in the `--help` menu.
|
||||
|
||||
#### Testing Changes to std lib
|
||||
|
||||
To quickly test a change to a file in the standard library, you can run zig test and specify a custom lib directory with the follow command-line argument.
|
||||
|
||||
```bash
|
||||
./build/zig test lib/std/fmt.zig --zig-lib-dir lib --main-pkg-path lib/std
|
||||
```
|
||||
|
||||
#### Testing Non-Native Architectures with QEMU
|
||||
|
||||
The Linux CI server additionally has qemu installed and sets `-Denable-qemu`.
|
||||
The Linux CI server additionally has qemu installed and sets `-fqemu`.
|
||||
This provides test coverage for, e.g. aarch64 even on x86_64 machines. It's
|
||||
recommended for Linux users to install qemu and enable this testing option
|
||||
when editing the standard library or anything related to a non-native
|
||||
@@ -116,7 +123,7 @@ architecture.
|
||||
##### glibc
|
||||
|
||||
Testing foreign architectures with dynamically linked glibc is one step trickier.
|
||||
This requires enabling `-Denable-foreign-glibc=/path/to/glibc/multi/install/glibcs`.
|
||||
This requires enabling `--glibc-runtimes /path/to/glibc/multi/install/glibcs`.
|
||||
This path is obtained by building glibc for multiple architectures. This
|
||||
process for me took an entire day to complete and takes up 65 GiB on my hard
|
||||
drive. The CI server does not provide this test coverage. Instructions for
|
||||
@@ -128,7 +135,7 @@ It's understood that most contributors will not have these tests enabled.
|
||||
|
||||
#### Testing Windows from a Linux Machine with Wine
|
||||
|
||||
When developing on Linux, another option is available to you: `-Denable-wine`.
|
||||
When developing on Linux, another option is available to you: `-fwine`.
|
||||
This will enable running behavior tests and std lib tests with Wine. It's
|
||||
recommended for Linux users to install Wine and enable this testing option
|
||||
when editing the standard library or anything Windows-related.
|
||||
@@ -136,7 +143,7 @@ when editing the standard library or anything Windows-related.
|
||||
#### Testing WebAssembly using wasmtime
|
||||
|
||||
If you have [wasmtime](https://wasmtime.dev/) installed, take advantage of the
|
||||
`-Denable-wasmtime` flag which will enable running WASI behavior tests and std
|
||||
`-fwasmtime` flag which will enable running WASI behavior tests and std
|
||||
lib tests. It's recommended for all users to install wasmtime and enable this
|
||||
testing option when editing the standard library and especially anything
|
||||
WebAssembly-related.
|
||||
|
||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
The MIT License (Expat)
|
||||
|
||||
Copyright (c) 2015-2021, Zig contributors
|
||||
Copyright (c) 2015-2022, Zig contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||

|
||||

|
||||
|
||||
A general-purpose programming language and toolchain for maintaining
|
||||
**robust**, **optimal**, and **reusable** software.
|
||||
|
||||
265
build.zig
265
build.zig
@@ -3,7 +3,6 @@ const builtin = std.builtin;
|
||||
const Builder = std.build.Builder;
|
||||
const tests = @import("test/tests.zig");
|
||||
const BufMap = std.BufMap;
|
||||
const warn = std.debug.warn;
|
||||
const mem = std.mem;
|
||||
const ArrayList = std.ArrayList;
|
||||
const io = std.io;
|
||||
@@ -11,14 +10,17 @@ const fs = std.fs;
|
||||
const InstallDirectoryOptions = std.build.InstallDirectoryOptions;
|
||||
const assert = std.debug.assert;
|
||||
|
||||
const zig_version = std.builtin.Version{ .major = 0, .minor = 8, .patch = 0 };
|
||||
const zig_version = std.builtin.Version{ .major = 0, .minor = 9, .patch = 1 };
|
||||
|
||||
pub fn build(b: *Builder) !void {
|
||||
b.setPreferredReleaseMode(.ReleaseFast);
|
||||
const mode = b.standardReleaseOptions();
|
||||
const target = b.standardTargetOptions(.{});
|
||||
const single_threaded = b.option(bool, "single-threaded", "Build artifacts that run in single threaded mode");
|
||||
const use_zig_libcxx = b.option(bool, "use-zig-libcxx", "If libc++ is needed, use zig's bundled version, don't try to integrate with the system") orelse false;
|
||||
|
||||
var docgen_exe = b.addExecutable("docgen", "doc/docgen.zig");
|
||||
docgen_exe.single_threaded = single_threaded;
|
||||
|
||||
const rel_zig_exe = try fs.path.relative(b.allocator, b.build_root, b.zig_exe);
|
||||
const langref_out_path = fs.path.join(
|
||||
@@ -40,7 +42,8 @@ pub fn build(b: *Builder) !void {
|
||||
|
||||
var test_stage2 = b.addTest("src/test.zig");
|
||||
test_stage2.setBuildMode(mode);
|
||||
test_stage2.addPackagePath("stage2_tests", "test/stage2/test.zig");
|
||||
test_stage2.addPackagePath("test_cases", "test/cases.zig");
|
||||
test_stage2.single_threaded = single_threaded;
|
||||
|
||||
const fmt_build_zig = b.addFmt(&[_][]const u8{"build.zig"});
|
||||
|
||||
@@ -61,12 +64,33 @@ pub fn build(b: *Builder) !void {
|
||||
const omit_stage2 = b.option(bool, "omit-stage2", "Do not include stage2 behind a feature flag inside stage1") orelse false;
|
||||
const static_llvm = b.option(bool, "static-llvm", "Disable integration with system-installed LLVM, Clang, LLD, and libc++") orelse false;
|
||||
const enable_llvm = b.option(bool, "enable-llvm", "Build self-hosted compiler with LLVM backend enabled") orelse (is_stage1 or static_llvm);
|
||||
const llvm_has_m68k = b.option(
|
||||
bool,
|
||||
"llvm-has-m68k",
|
||||
"Whether LLVM has the experimental target m68k enabled",
|
||||
) orelse false;
|
||||
const llvm_has_csky = b.option(
|
||||
bool,
|
||||
"llvm-has-csky",
|
||||
"Whether LLVM has the experimental target csky enabled",
|
||||
) orelse false;
|
||||
const llvm_has_ve = b.option(
|
||||
bool,
|
||||
"llvm-has-ve",
|
||||
"Whether LLVM has the experimental target ve enabled",
|
||||
) orelse false;
|
||||
const llvm_has_arc = b.option(
|
||||
bool,
|
||||
"llvm-has-arc",
|
||||
"Whether LLVM has the experimental target arc enabled",
|
||||
) orelse false;
|
||||
const enable_macos_sdk = b.option(bool, "enable-macos-sdk", "Run tests requiring presence of macOS SDK and frameworks") orelse false;
|
||||
const config_h_path_option = b.option([]const u8, "config_h", "Path to the generated config.h");
|
||||
|
||||
if (!skip_install_lib_files) {
|
||||
b.installDirectory(InstallDirectoryOptions{
|
||||
.source_dir = "lib",
|
||||
.install_dir = .Lib,
|
||||
.install_dir = .lib,
|
||||
.install_subdir = "zig",
|
||||
.exclude_extensions = &[_][]const u8{
|
||||
"README.md",
|
||||
@@ -85,6 +109,8 @@ pub fn build(b: *Builder) !void {
|
||||
return;
|
||||
|
||||
const tracy = b.option([]const u8, "tracy", "Enable Tracy integration. Supply path to Tracy source");
|
||||
const tracy_callstack = b.option(bool, "tracy-callstack", "Include callstack information with Tracy data. Does nothing if -Dtracy is not provided") orelse false;
|
||||
const tracy_allocation = b.option(bool, "tracy-allocation", "Include allocation information with Tracy data. Does nothing if -Dtracy is not provided") orelse false;
|
||||
const link_libc = b.option(bool, "force-link-libc", "Force self-hosted compiler to link libc") orelse enable_llvm;
|
||||
const strip = b.option(bool, "strip", "Omit debug information") orelse false;
|
||||
|
||||
@@ -101,23 +127,44 @@ pub fn build(b: *Builder) !void {
|
||||
exe.install();
|
||||
exe.setBuildMode(mode);
|
||||
exe.setTarget(target);
|
||||
toolchain_step.dependOn(&exe.step);
|
||||
if (!skip_stage2_tests) {
|
||||
toolchain_step.dependOn(&exe.step);
|
||||
}
|
||||
b.default_step.dependOn(&exe.step);
|
||||
exe.single_threaded = single_threaded;
|
||||
|
||||
if (target.isWindows() and target.getAbi() == .gnu) {
|
||||
// LTO is currently broken on mingw, this can be removed when it's fixed.
|
||||
exe.want_lto = false;
|
||||
test_stage2.want_lto = false;
|
||||
}
|
||||
|
||||
const exe_options = b.addOptions();
|
||||
exe.addOptions("build_options", exe_options);
|
||||
|
||||
exe_options.addOption(u32, "mem_leak_frames", mem_leak_frames);
|
||||
exe_options.addOption(bool, "skip_non_native", skip_non_native);
|
||||
exe_options.addOption(bool, "have_llvm", enable_llvm);
|
||||
exe_options.addOption(bool, "llvm_has_m68k", llvm_has_m68k);
|
||||
exe_options.addOption(bool, "llvm_has_csky", llvm_has_csky);
|
||||
exe_options.addOption(bool, "llvm_has_ve", llvm_has_ve);
|
||||
exe_options.addOption(bool, "llvm_has_arc", llvm_has_arc);
|
||||
|
||||
exe.addBuildOption(u32, "mem_leak_frames", mem_leak_frames);
|
||||
exe.addBuildOption(bool, "skip_non_native", skip_non_native);
|
||||
exe.addBuildOption(bool, "have_llvm", enable_llvm);
|
||||
if (enable_llvm) {
|
||||
const cmake_cfg = if (static_llvm) null else findAndParseConfigH(b, config_h_path_option);
|
||||
|
||||
if (is_stage1) {
|
||||
exe.addIncludeDir("src");
|
||||
exe.addIncludeDir("deps/SoftFloat-3e/source/include");
|
||||
|
||||
test_stage2.addIncludeDir("src");
|
||||
test_stage2.addIncludeDir("deps/SoftFloat-3e/source/include");
|
||||
// This is intentionally a dummy path. stage1.zig tries to @import("compiler_rt") in case
|
||||
// of being built by cmake. But when built by zig it's gonna get a compiler_rt so that
|
||||
// is pointless.
|
||||
exe.addPackagePath("compiler_rt", "src/empty.zig");
|
||||
exe.defineCMacro("ZIG_LINK_MODE=Static");
|
||||
exe.defineCMacro("ZIG_LINK_MODE", "Static");
|
||||
test_stage2.defineCMacro("ZIG_LINK_MODE", "Static");
|
||||
|
||||
const softfloat = b.addStaticLibrary("softfloat", null);
|
||||
softfloat.setBuildMode(.ReleaseFast);
|
||||
@@ -126,10 +173,16 @@ pub fn build(b: *Builder) !void {
|
||||
softfloat.addIncludeDir("deps/SoftFloat-3e/source/8086");
|
||||
softfloat.addIncludeDir("deps/SoftFloat-3e/source/include");
|
||||
softfloat.addCSourceFiles(&softfloat_sources, &[_][]const u8{ "-std=c99", "-O3" });
|
||||
softfloat.single_threaded = single_threaded;
|
||||
|
||||
exe.linkLibrary(softfloat);
|
||||
test_stage2.linkLibrary(softfloat);
|
||||
|
||||
exe.addCSourceFiles(&stage1_sources, &exe_cflags);
|
||||
exe.addCSourceFiles(&optimized_c_sources, &[_][]const u8{ "-std=c99", "-O3" });
|
||||
|
||||
test_stage2.addCSourceFiles(&stage1_sources, &exe_cflags);
|
||||
test_stage2.addCSourceFiles(&optimized_c_sources, &[_][]const u8{ "-std=c99", "-O3" });
|
||||
}
|
||||
if (cmake_cfg) |cfg| {
|
||||
// Inside this code path, we have to coordinate with system packaged LLVM, Clang, and LLD.
|
||||
@@ -139,8 +192,8 @@ pub fn build(b: *Builder) !void {
|
||||
b.addSearchPrefix(cfg.cmake_prefix_path);
|
||||
}
|
||||
|
||||
try addCmakeCfgOptionsToExe(b, cfg, tracy, exe);
|
||||
try addCmakeCfgOptionsToExe(b, cfg, tracy, test_stage2);
|
||||
try addCmakeCfgOptionsToExe(b, cfg, exe, use_zig_libcxx);
|
||||
try addCmakeCfgOptionsToExe(b, cfg, test_stage2, use_zig_libcxx);
|
||||
} else {
|
||||
// Here we are -Denable-llvm but no cmake integration.
|
||||
try addStaticLlvmOptionsToExe(exe);
|
||||
@@ -153,6 +206,7 @@ pub fn build(b: *Builder) !void {
|
||||
}
|
||||
|
||||
const enable_logging = b.option(bool, "log", "Whether to enable logging") orelse false;
|
||||
const enable_link_snapshots = b.option(bool, "link-snapshot", "Whether to enable linker state snapshots") orelse false;
|
||||
|
||||
const opt_version_string = b.option([]const u8, "version-string", "Override Zig version string. Default is to find out with git.");
|
||||
const version = if (opt_version_string) |version| version else v: {
|
||||
@@ -168,7 +222,7 @@ pub fn build(b: *Builder) !void {
|
||||
|
||||
switch (mem.count(u8, git_describe, "-")) {
|
||||
0 => {
|
||||
// Tagged release version (e.g. 0.8.0).
|
||||
// Tagged release version (e.g. 0.9.0).
|
||||
if (!mem.eql(u8, git_describe, version_string)) {
|
||||
std.debug.print("Zig version '{s}' does not match Git tag '{s}'\n", .{ version_string, git_describe });
|
||||
std.process.exit(1);
|
||||
@@ -176,8 +230,8 @@ pub fn build(b: *Builder) !void {
|
||||
break :v version_string;
|
||||
},
|
||||
2 => {
|
||||
// Untagged development build (e.g. 0.8.0-684-gbbe2cca1a).
|
||||
var it = mem.split(git_describe, "-");
|
||||
// Untagged development build (e.g. 0.9.0-dev.2025+ecf0050a9).
|
||||
var it = mem.split(u8, git_describe, "-");
|
||||
const tagged_ancestor = it.next() orelse unreachable;
|
||||
const commit_height = it.next() orelse unreachable;
|
||||
const commit_id = it.next() orelse unreachable;
|
||||
@@ -203,47 +257,68 @@ pub fn build(b: *Builder) !void {
|
||||
},
|
||||
}
|
||||
};
|
||||
exe.addBuildOption([:0]const u8, "version", try b.allocator.dupeZ(u8, version));
|
||||
exe_options.addOption([:0]const u8, "version", try b.allocator.dupeZ(u8, version));
|
||||
|
||||
const semver = try std.SemanticVersion.parse(version);
|
||||
exe.addBuildOption(std.SemanticVersion, "semver", semver);
|
||||
exe_options.addOption(std.SemanticVersion, "semver", semver);
|
||||
|
||||
exe.addBuildOption(bool, "enable_logging", enable_logging);
|
||||
exe.addBuildOption(bool, "enable_tracy", tracy != null);
|
||||
exe.addBuildOption(bool, "is_stage1", is_stage1);
|
||||
exe.addBuildOption(bool, "omit_stage2", omit_stage2);
|
||||
exe_options.addOption(bool, "enable_logging", enable_logging);
|
||||
exe_options.addOption(bool, "enable_link_snapshots", enable_link_snapshots);
|
||||
exe_options.addOption(bool, "enable_tracy", tracy != null);
|
||||
exe_options.addOption(bool, "enable_tracy_callstack", tracy_callstack);
|
||||
exe_options.addOption(bool, "enable_tracy_allocation", tracy_allocation);
|
||||
exe_options.addOption(bool, "is_stage1", is_stage1);
|
||||
exe_options.addOption(bool, "omit_stage2", omit_stage2);
|
||||
if (tracy) |tracy_path| {
|
||||
const client_cpp = fs.path.join(
|
||||
b.allocator,
|
||||
&[_][]const u8{ tracy_path, "TracyClient.cpp" },
|
||||
) catch unreachable;
|
||||
|
||||
// On mingw, we need to opt into windows 7+ to get some features required by tracy.
|
||||
const tracy_c_flags: []const []const u8 = if (target.isWindows() and target.getAbi() == .gnu)
|
||||
&[_][]const u8{ "-DTRACY_ENABLE=1", "-fno-sanitize=undefined", "-D_WIN32_WINNT=0x601" }
|
||||
else
|
||||
&[_][]const u8{ "-DTRACY_ENABLE=1", "-fno-sanitize=undefined" };
|
||||
|
||||
exe.addIncludeDir(tracy_path);
|
||||
exe.addCSourceFile(client_cpp, &[_][]const u8{ "-DTRACY_ENABLE=1", "-fno-sanitize=undefined" });
|
||||
exe.addCSourceFile(client_cpp, tracy_c_flags);
|
||||
if (!enable_llvm) {
|
||||
exe.linkSystemLibraryName("c++");
|
||||
}
|
||||
exe.linkLibC();
|
||||
|
||||
if (target.isWindows()) {
|
||||
exe.linkSystemLibrary("dbghelp");
|
||||
exe.linkSystemLibrary("ws2_32");
|
||||
}
|
||||
}
|
||||
|
||||
const test_filter = b.option([]const u8, "test-filter", "Skip tests that do not match filter");
|
||||
|
||||
const is_wine_enabled = b.option(bool, "enable-wine", "Use Wine to run cross compiled Windows tests") orelse false;
|
||||
const is_qemu_enabled = b.option(bool, "enable-qemu", "Use QEMU to run cross compiled foreign architecture tests") orelse false;
|
||||
const is_wasmtime_enabled = b.option(bool, "enable-wasmtime", "Use Wasmtime to enable and run WASI libstd tests") orelse false;
|
||||
const is_darling_enabled = b.option(bool, "enable-darling", "[Experimental] Use Darling to run cross compiled macOS tests") orelse false;
|
||||
const glibc_multi_dir = b.option([]const u8, "enable-foreign-glibc", "Provide directory with glibc installations to run cross compiled tests that link glibc");
|
||||
const test_stage2_options = b.addOptions();
|
||||
test_stage2.addOptions("build_options", test_stage2_options);
|
||||
|
||||
test_stage2.addBuildOption(bool, "skip_non_native", skip_non_native);
|
||||
test_stage2.addBuildOption(bool, "is_stage1", is_stage1);
|
||||
test_stage2.addBuildOption(bool, "omit_stage2", omit_stage2);
|
||||
test_stage2.addBuildOption(bool, "have_llvm", enable_llvm);
|
||||
test_stage2.addBuildOption(bool, "enable_qemu", is_qemu_enabled);
|
||||
test_stage2.addBuildOption(bool, "enable_wine", is_wine_enabled);
|
||||
test_stage2.addBuildOption(bool, "enable_wasmtime", is_wasmtime_enabled);
|
||||
test_stage2.addBuildOption(u32, "mem_leak_frames", mem_leak_frames * 2);
|
||||
test_stage2.addBuildOption(bool, "enable_darling", is_darling_enabled);
|
||||
test_stage2.addBuildOption(?[]const u8, "glibc_multi_install_dir", glibc_multi_dir);
|
||||
test_stage2.addBuildOption([]const u8, "version", version);
|
||||
test_stage2_options.addOption(bool, "enable_logging", enable_logging);
|
||||
test_stage2_options.addOption(bool, "enable_link_snapshots", enable_link_snapshots);
|
||||
test_stage2_options.addOption(bool, "skip_non_native", skip_non_native);
|
||||
test_stage2_options.addOption(bool, "skip_compile_errors", skip_compile_errors);
|
||||
test_stage2_options.addOption(bool, "is_stage1", is_stage1);
|
||||
test_stage2_options.addOption(bool, "omit_stage2", omit_stage2);
|
||||
test_stage2_options.addOption(bool, "have_llvm", enable_llvm);
|
||||
test_stage2_options.addOption(bool, "llvm_has_m68k", llvm_has_m68k);
|
||||
test_stage2_options.addOption(bool, "llvm_has_csky", llvm_has_csky);
|
||||
test_stage2_options.addOption(bool, "llvm_has_ve", llvm_has_ve);
|
||||
test_stage2_options.addOption(bool, "llvm_has_arc", llvm_has_arc);
|
||||
test_stage2_options.addOption(bool, "enable_qemu", b.enable_qemu);
|
||||
test_stage2_options.addOption(bool, "enable_wine", b.enable_wine);
|
||||
test_stage2_options.addOption(bool, "enable_wasmtime", b.enable_wasmtime);
|
||||
test_stage2_options.addOption(bool, "enable_rosetta", b.enable_rosetta);
|
||||
test_stage2_options.addOption(bool, "enable_darling", b.enable_darling);
|
||||
test_stage2_options.addOption(u32, "mem_leak_frames", mem_leak_frames * 2);
|
||||
test_stage2_options.addOption(?[]const u8, "glibc_runtimes_dir", b.glibc_runtimes_dir);
|
||||
test_stage2_options.addOption([:0]const u8, "version", try b.allocator.dupeZ(u8, version));
|
||||
test_stage2_options.addOption(std.SemanticVersion, "semver", semver);
|
||||
|
||||
const test_stage2_step = b.step("test-stage2", "Run the stage2 compiler tests");
|
||||
test_stage2_step.dependOn(&test_stage2.step);
|
||||
@@ -283,14 +358,9 @@ pub fn build(b: *Builder) !void {
|
||||
"behavior",
|
||||
"Run the behavior tests",
|
||||
modes,
|
||||
false,
|
||||
false, // skip_single_threaded
|
||||
skip_non_native,
|
||||
skip_libc,
|
||||
is_wine_enabled,
|
||||
is_qemu_enabled,
|
||||
is_wasmtime_enabled,
|
||||
is_darling_enabled,
|
||||
glibc_multi_dir,
|
||||
));
|
||||
|
||||
toolchain_step.dependOn(tests.addPkgTests(
|
||||
@@ -300,14 +370,9 @@ pub fn build(b: *Builder) !void {
|
||||
"compiler-rt",
|
||||
"Run the compiler_rt tests",
|
||||
modes,
|
||||
true,
|
||||
true, // skip_single_threaded
|
||||
skip_non_native,
|
||||
true,
|
||||
is_wine_enabled,
|
||||
is_qemu_enabled,
|
||||
is_wasmtime_enabled,
|
||||
is_darling_enabled,
|
||||
glibc_multi_dir,
|
||||
true, // skip_libc
|
||||
));
|
||||
|
||||
toolchain_step.dependOn(tests.addPkgTests(
|
||||
@@ -317,18 +382,13 @@ pub fn build(b: *Builder) !void {
|
||||
"minilibc",
|
||||
"Run the mini libc tests",
|
||||
modes,
|
||||
true,
|
||||
true, // skip_single_threaded
|
||||
skip_non_native,
|
||||
true,
|
||||
is_wine_enabled,
|
||||
is_qemu_enabled,
|
||||
is_wasmtime_enabled,
|
||||
is_darling_enabled,
|
||||
glibc_multi_dir,
|
||||
true, // skip_libc
|
||||
));
|
||||
|
||||
toolchain_step.dependOn(tests.addCompareOutputTests(b, test_filter, modes));
|
||||
toolchain_step.dependOn(tests.addStandaloneTests(b, test_filter, modes, skip_non_native, target));
|
||||
toolchain_step.dependOn(tests.addStandaloneTests(b, test_filter, modes, skip_non_native, enable_macos_sdk, target));
|
||||
toolchain_step.dependOn(tests.addStackTraceTests(b, test_filter, modes));
|
||||
toolchain_step.dependOn(tests.addCliTests(b, test_filter, modes));
|
||||
toolchain_step.dependOn(tests.addAssembleAndLinkTests(b, test_filter, modes));
|
||||
@@ -339,9 +399,6 @@ pub fn build(b: *Builder) !void {
|
||||
}
|
||||
// tests for this feature are disabled until we have the self-hosted compiler available
|
||||
// toolchain_step.dependOn(tests.addGenHTests(b, test_filter));
|
||||
if (!skip_compile_errors) {
|
||||
toolchain_step.dependOn(tests.addCompileErrorTests(b, test_filter, modes));
|
||||
}
|
||||
|
||||
const std_step = tests.addPkgTests(
|
||||
b,
|
||||
@@ -353,11 +410,6 @@ pub fn build(b: *Builder) !void {
|
||||
false,
|
||||
skip_non_native,
|
||||
skip_libc,
|
||||
is_wine_enabled,
|
||||
is_qemu_enabled,
|
||||
is_wasmtime_enabled,
|
||||
is_darling_enabled,
|
||||
glibc_multi_dir,
|
||||
);
|
||||
|
||||
const test_step = b.step("test", "Run all the tests");
|
||||
@@ -383,8 +435,8 @@ const exe_cflags = [_][]const u8{
|
||||
fn addCmakeCfgOptionsToExe(
|
||||
b: *Builder,
|
||||
cfg: CMakeConfig,
|
||||
tracy: ?[]const u8,
|
||||
exe: *std.build.LibExeObjStep,
|
||||
use_zig_libcxx: bool,
|
||||
) !void {
|
||||
exe.addObjectFile(fs.path.join(b.allocator, &[_][]const u8{
|
||||
cfg.cmake_binary_dir,
|
||||
@@ -397,28 +449,32 @@ fn addCmakeCfgOptionsToExe(
|
||||
addCMakeLibraryList(exe, cfg.lld_libraries);
|
||||
addCMakeLibraryList(exe, cfg.llvm_libraries);
|
||||
|
||||
const need_cpp_includes = tracy != null;
|
||||
if (use_zig_libcxx) {
|
||||
exe.linkLibCpp();
|
||||
} else {
|
||||
const need_cpp_includes = true;
|
||||
|
||||
// System -lc++ must be used because in this code path we are attempting to link
|
||||
// against system-provided LLVM, Clang, LLD.
|
||||
if (exe.target.getOsTag() == .linux) {
|
||||
// First we try to static link against gcc libstdc++. If that doesn't work,
|
||||
// we fall back to -lc++ and cross our fingers.
|
||||
addCxxKnownPath(b, cfg, exe, "libstdc++.a", "", need_cpp_includes) catch |err| switch (err) {
|
||||
error.RequiredLibraryNotFound => {
|
||||
exe.linkSystemLibrary("c++");
|
||||
},
|
||||
else => |e| return e,
|
||||
};
|
||||
exe.linkSystemLibrary("unwind");
|
||||
} else if (exe.target.isFreeBSD()) {
|
||||
try addCxxKnownPath(b, cfg, exe, "libc++.a", null, need_cpp_includes);
|
||||
exe.linkSystemLibrary("pthread");
|
||||
} else if (exe.target.getOsTag() == .openbsd) {
|
||||
try addCxxKnownPath(b, cfg, exe, "libc++.a", null, need_cpp_includes);
|
||||
try addCxxKnownPath(b, cfg, exe, "libc++abi.a", null, need_cpp_includes);
|
||||
} else if (exe.target.isDarwin()) {
|
||||
exe.linkSystemLibrary("c++");
|
||||
// System -lc++ must be used because in this code path we are attempting to link
|
||||
// against system-provided LLVM, Clang, LLD.
|
||||
if (exe.target.getOsTag() == .linux) {
|
||||
// First we try to static link against gcc libstdc++. If that doesn't work,
|
||||
// we fall back to -lc++ and cross our fingers.
|
||||
addCxxKnownPath(b, cfg, exe, "libstdc++.a", "", need_cpp_includes) catch |err| switch (err) {
|
||||
error.RequiredLibraryNotFound => {
|
||||
exe.linkSystemLibrary("c++");
|
||||
},
|
||||
else => |e| return e,
|
||||
};
|
||||
exe.linkSystemLibrary("unwind");
|
||||
} else if (exe.target.isFreeBSD()) {
|
||||
try addCxxKnownPath(b, cfg, exe, "libc++.a", null, need_cpp_includes);
|
||||
exe.linkSystemLibrary("pthread");
|
||||
} else if (exe.target.getOsTag() == .openbsd) {
|
||||
try addCxxKnownPath(b, cfg, exe, "libc++.a", null, need_cpp_includes);
|
||||
try addCxxKnownPath(b, cfg, exe, "libc++abi.a", null, need_cpp_includes);
|
||||
} else if (exe.target.isDarwin()) {
|
||||
exe.linkSystemLibrary("c++");
|
||||
}
|
||||
}
|
||||
|
||||
if (cfg.dia_guids_lib.len != 0) {
|
||||
@@ -449,12 +505,15 @@ fn addStaticLlvmOptionsToExe(
|
||||
exe.linkSystemLibrary(lib_name);
|
||||
}
|
||||
|
||||
exe.linkSystemLibrary("z");
|
||||
|
||||
// This means we rely on clang-or-zig-built LLVM, Clang, LLD libraries.
|
||||
exe.linkSystemLibrary("c++");
|
||||
|
||||
if (exe.target.getOs().tag == .windows) {
|
||||
exe.linkSystemLibrary("version");
|
||||
exe.linkSystemLibrary("uuid");
|
||||
exe.linkSystemLibrary("ole32");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -470,12 +529,12 @@ fn addCxxKnownPath(
|
||||
ctx.cxx_compiler,
|
||||
b.fmt("-print-file-name={s}", .{objname}),
|
||||
});
|
||||
const path_unpadded = mem.tokenize(path_padded, "\r\n").next().?;
|
||||
const path_unpadded = mem.tokenize(u8, path_padded, "\r\n").next().?;
|
||||
if (mem.eql(u8, path_unpadded, objname)) {
|
||||
if (errtxt) |msg| {
|
||||
warn("{s}", .{msg});
|
||||
std.debug.print("{s}", .{msg});
|
||||
} else {
|
||||
warn("Unable to determine path to {s}\n", .{objname});
|
||||
std.debug.print("Unable to determine path to {s}\n", .{objname});
|
||||
}
|
||||
return error.RequiredLibraryNotFound;
|
||||
}
|
||||
@@ -486,14 +545,14 @@ fn addCxxKnownPath(
|
||||
if (need_cpp_includes) {
|
||||
// I used these temporarily for testing something but we obviously need a
|
||||
// more general purpose solution here.
|
||||
//exe.addIncludeDir("/nix/store/b3zsk4ihlpiimv3vff86bb5bxghgdzb9-gcc-9.2.0/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../../include/c++/9.2.0");
|
||||
//exe.addIncludeDir("/nix/store/b3zsk4ihlpiimv3vff86bb5bxghgdzb9-gcc-9.2.0/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../../include/c++/9.2.0/x86_64-unknown-linux-gnu");
|
||||
//exe.addIncludeDir("/nix/store/b3zsk4ihlpiimv3vff86bb5bxghgdzb9-gcc-9.2.0/lib/gcc/x86_64-unknown-linux-gnu/9.2.0/../../../../include/c++/9.2.0/backward");
|
||||
//exe.addIncludeDir("/nix/store/fvf3qjqa5qpcjjkq37pb6ypnk1mzhf5h-gcc-9.3.0/lib/gcc/x86_64-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0");
|
||||
//exe.addIncludeDir("/nix/store/fvf3qjqa5qpcjjkq37pb6ypnk1mzhf5h-gcc-9.3.0/lib/gcc/x86_64-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/x86_64-unknown-linux-gnu");
|
||||
//exe.addIncludeDir("/nix/store/fvf3qjqa5qpcjjkq37pb6ypnk1mzhf5h-gcc-9.3.0/lib/gcc/x86_64-unknown-linux-gnu/9.3.0/../../../../include/c++/9.3.0/backward");
|
||||
}
|
||||
}
|
||||
|
||||
fn addCMakeLibraryList(exe: *std.build.LibExeObjStep, list: []const u8) void {
|
||||
var it = mem.tokenize(list, ";");
|
||||
var it = mem.tokenize(u8, list, ";");
|
||||
while (it.next()) |lib| {
|
||||
if (mem.startsWith(u8, lib, "-l")) {
|
||||
exe.linkSystemLibrary(lib["-l".len..]);
|
||||
@@ -587,11 +646,11 @@ fn findAndParseConfigH(b: *Builder, config_h_path_option: ?[]const u8) ?CMakeCon
|
||||
},
|
||||
};
|
||||
|
||||
var lines_it = mem.tokenize(config_h_text, "\r\n");
|
||||
var lines_it = mem.tokenize(u8, config_h_text, "\r\n");
|
||||
while (lines_it.next()) |line| {
|
||||
inline for (mappings) |mapping| {
|
||||
if (mem.startsWith(u8, line, mapping.prefix)) {
|
||||
var it = mem.split(line, "\"");
|
||||
var it = mem.split(u8, line, "\"");
|
||||
_ = it.next().?; // skip the stuff before the quote
|
||||
const quoted = it.next().?; // the stuff inside the quote
|
||||
@field(ctx, mapping.field) = toNativePathSep(b, quoted);
|
||||
@@ -602,7 +661,7 @@ fn findAndParseConfigH(b: *Builder, config_h_path_option: ?[]const u8) ?CMakeCon
|
||||
}
|
||||
|
||||
fn toNativePathSep(b: *Builder, s: []const u8) []u8 {
|
||||
const duplicated = mem.dupe(b.allocator, u8, s) catch unreachable;
|
||||
const duplicated = b.allocator.dupe(u8, s) catch unreachable;
|
||||
for (duplicated) |*byte| switch (byte.*) {
|
||||
'/' => byte.* = fs.path.sep,
|
||||
else => {},
|
||||
@@ -769,6 +828,7 @@ const zig_cpp_sources = [_][]const u8{
|
||||
// These are planned to stay even when we are self-hosted.
|
||||
"src/zig_llvm.cpp",
|
||||
"src/zig_clang.cpp",
|
||||
"src/zig_llvm-ar.cpp",
|
||||
"src/zig_clang_driver.cpp",
|
||||
"src/zig_clang_cc1_main.cpp",
|
||||
"src/zig_clang_cc1as_main.cpp",
|
||||
@@ -837,6 +897,7 @@ const llvm_libs = [_][]const u8{
|
||||
"LLVMWebAssemblyAsmParser",
|
||||
"LLVMWebAssemblyCodeGen",
|
||||
"LLVMWebAssemblyDesc",
|
||||
"LLVMWebAssemblyUtils",
|
||||
"LLVMWebAssemblyInfo",
|
||||
"LLVMSystemZDisassembler",
|
||||
"LLVMSystemZAsmParser",
|
||||
@@ -912,11 +973,12 @@ const llvm_libs = [_][]const u8{
|
||||
"LLVMOrcJIT",
|
||||
"LLVMMCJIT",
|
||||
"LLVMJITLink",
|
||||
"LLVMOrcTargetProcess",
|
||||
"LLVMOrcShared",
|
||||
"LLVMInterpreter",
|
||||
"LLVMExecutionEngine",
|
||||
"LLVMRuntimeDyld",
|
||||
"LLVMOrcTargetProcess",
|
||||
"LLVMOrcShared",
|
||||
"LLVMDWP",
|
||||
"LLVMSymbolize",
|
||||
"LLVMDebugInfoPDB",
|
||||
"LLVMDebugInfoGSYM",
|
||||
@@ -929,7 +991,6 @@ const llvm_libs = [_][]const u8{
|
||||
"LLVMCFGuard",
|
||||
"LLVMCoroutines",
|
||||
"LLVMObjCARCOpts",
|
||||
"LLVMHelloNew",
|
||||
"LLVMipo",
|
||||
"LLVMVectorize",
|
||||
"LLVMLinker",
|
||||
@@ -941,6 +1002,7 @@ const llvm_libs = [_][]const u8{
|
||||
"LLVMGlobalISel",
|
||||
"LLVMMIRParser",
|
||||
"LLVMAsmPrinter",
|
||||
"LLVMDebugInfoMSF",
|
||||
"LLVMDebugInfoDWARF",
|
||||
"LLVMSelectionDAG",
|
||||
"LLVMCodeGen",
|
||||
@@ -962,7 +1024,6 @@ const llvm_libs = [_][]const u8{
|
||||
"LLVMMCParser",
|
||||
"LLVMMC",
|
||||
"LLVMDebugInfoCodeView",
|
||||
"LLVMDebugInfoMSF",
|
||||
"LLVMBitReader",
|
||||
"LLVMCore",
|
||||
"LLVMRemarks",
|
||||
|
||||
@@ -1,125 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
sudo apt-get update -q
|
||||
sudo apt-get install -y cmake s3cmd tidy
|
||||
|
||||
ZIGDIR="$(pwd)"
|
||||
ARCH="$(uname -m)"
|
||||
TARGET="$ARCH-linux-musl"
|
||||
CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2703+c12704a33"
|
||||
PREFIX="$HOME/$CACHE_BASENAME"
|
||||
MCPU="baseline"
|
||||
JOBS="-j$(nproc)"
|
||||
|
||||
rm -rf $PREFIX
|
||||
cd $HOME
|
||||
|
||||
wget -nv "https://ziglang.org/deps/$CACHE_BASENAME.tar.xz"
|
||||
tar xf "$CACHE_BASENAME.tar.xz"
|
||||
|
||||
QEMUBASE="qemu-linux-x86_64-5.2.0.1"
|
||||
wget -nv "https://ziglang.org/deps/$QEMUBASE.tar.xz"
|
||||
tar xf "$QEMUBASE.tar.xz"
|
||||
export PATH="$(pwd)/$QEMUBASE/bin:$PATH"
|
||||
|
||||
# Bump to v0.23 once this issue is resolved:
|
||||
# https://github.com/ziglang/zig/issues/8742
|
||||
WASMTIME="wasmtime-v0.22.1-x86_64-linux"
|
||||
wget -nv "https://github.com/bytecodealliance/wasmtime/releases/download/v0.22.1/$WASMTIME.tar.xz"
|
||||
tar xf "$WASMTIME.tar.xz"
|
||||
export PATH="$(pwd)/$WASMTIME:$PATH"
|
||||
|
||||
ZIG="$PREFIX/bin/zig"
|
||||
export CC="$ZIG cc -target $TARGET -mcpu=$MCPU"
|
||||
export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU"
|
||||
|
||||
cd $ZIGDIR
|
||||
|
||||
# Make the `zig version` number consistent.
|
||||
# This will affect the cmake command below.
|
||||
git config core.abbrev 9
|
||||
git fetch --unshallow || true
|
||||
git fetch --tags
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. \
|
||||
-DCMAKE_INSTALL_PREFIX="$(pwd)/release" \
|
||||
-DCMAKE_PREFIX_PATH="$PREFIX" \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DZIG_TARGET_TRIPLE="$TARGET" \
|
||||
-DZIG_TARGET_MCPU="$MCPU" \
|
||||
-DZIG_STATIC=ON
|
||||
|
||||
# Now cmake will use zig as the C/C++ compiler. We reset the environment variables
|
||||
# so that installation and testing do not get affected by them.
|
||||
unset CC
|
||||
unset CXX
|
||||
|
||||
make $JOBS install
|
||||
|
||||
# Here we rebuild zig but this time using the Zig binary we just now produced to
|
||||
# build zig1.o rather than relying on the one built with stage0. See
|
||||
# https://github.com/ziglang/zig/issues/6830 for more details.
|
||||
cmake .. -DZIG_EXECUTABLE="$(pwd)/release/bin/zig"
|
||||
make $JOBS install
|
||||
|
||||
for step in test-toolchain test-std docs; do
|
||||
release/bin/zig build $step -Denable-qemu -Denable-wasmtime
|
||||
done
|
||||
|
||||
# Look for HTML errors.
|
||||
tidy -qe ../zig-cache/langref.html
|
||||
|
||||
if [ "${BUILD_REASON}" != "PullRequest" ]; then
|
||||
# Produce the experimental std lib documentation.
|
||||
mkdir -p release/docs/std
|
||||
release/bin/zig test ../lib/std/std.zig \
|
||||
--override-lib-dir ../lib \
|
||||
-femit-docs=release/docs/std \
|
||||
-fno-emit-bin
|
||||
|
||||
mv ../LICENSE release/
|
||||
mv ../zig-cache/langref.html release/docs/
|
||||
|
||||
# Remove the unnecessary bin dir in $prefix/bin/zig
|
||||
mv release/bin/zig release/
|
||||
rmdir release/bin
|
||||
|
||||
# Remove the unnecessary zig dir in $prefix/lib/zig/std/std.zig
|
||||
mv release/lib/zig release/lib2
|
||||
rmdir release/lib
|
||||
mv release/lib2 release/lib
|
||||
|
||||
VERSION=$(release/zig version)
|
||||
DIRNAME="zig-linux-$ARCH-$VERSION"
|
||||
TARBALL="$DIRNAME.tar.xz"
|
||||
mv release "$DIRNAME"
|
||||
tar cfJ "$TARBALL" "$DIRNAME"
|
||||
|
||||
mv "$DOWNLOADSECUREFILE_SECUREFILEPATH" "$HOME/.s3cfg"
|
||||
s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "$TARBALL" s3://ziglang.org/builds/
|
||||
|
||||
SHASUM=$(sha256sum $TARBALL | cut '-d ' -f1)
|
||||
BYTESIZE=$(wc -c < $TARBALL)
|
||||
|
||||
JSONFILE="linux-$GITBRANCH.json"
|
||||
touch $JSONFILE
|
||||
echo "{\"tarball\": \"$TARBALL\"," >>$JSONFILE
|
||||
echo "\"shasum\": \"$SHASUM\"," >>$JSONFILE
|
||||
echo "\"size\": \"$BYTESIZE\"}" >>$JSONFILE
|
||||
|
||||
s3cmd put -P --add-header="Cache-Control: max-age=0, must-revalidate" "$JSONFILE" "s3://ziglang.org/builds/$JSONFILE"
|
||||
s3cmd put -P "$JSONFILE" "s3://ziglang.org/builds/$ARCH-linux-$VERSION.json"
|
||||
|
||||
# `set -x` causes these variables to be mangled.
|
||||
# See https://developercommunity.visualstudio.com/content/problem/375679/pipeline-variable-incorrectly-inserts-single-quote.html
|
||||
set +x
|
||||
echo "##vso[task.setvariable variable=tarball;isOutput=true]$TARBALL"
|
||||
echo "##vso[task.setvariable variable=shasum;isOutput=true]$SHASUM"
|
||||
echo "##vso[task.setvariable variable=bytesize;isOutput=true]$BYTESIZE"
|
||||
echo "##vso[task.setvariable variable=version;isOutput=true]$VERSION"
|
||||
fi
|
||||
@@ -3,20 +3,20 @@
|
||||
set -x
|
||||
set -e
|
||||
|
||||
brew update && brew install s3cmd
|
||||
brew update && brew install ncurses s3cmd
|
||||
|
||||
ZIGDIR="$(pwd)"
|
||||
|
||||
HOST_ARCH="x86_64"
|
||||
HOST_TARGET="$HOST_ARCH-macos-gnu"
|
||||
HOST_MCPU="baseline"
|
||||
HOST_CACHE_BASENAME="zig+llvm+lld+clang-$HOST_TARGET-0.8.0-dev.2703+c12704a33"
|
||||
HOST_CACHE_BASENAME="zig+llvm+lld+clang-$HOST_TARGET-0.9.0-dev.1249+210ef5af8"
|
||||
HOST_PREFIX="$HOME/$HOST_CACHE_BASENAME"
|
||||
|
||||
ARCH="aarch64"
|
||||
TARGET="$ARCH-macos-gnu"
|
||||
MCPU="apple_a14"
|
||||
CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2703+c12704a33"
|
||||
CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.9.0-dev.1249+210ef5af8"
|
||||
PREFIX="$HOME/$CACHE_BASENAME"
|
||||
|
||||
JOBS="-j2"
|
||||
@@ -50,10 +50,11 @@ cd build.host
|
||||
cmake .. \
|
||||
-DCMAKE_INSTALL_PREFIX="$(pwd)/release" \
|
||||
-DCMAKE_PREFIX_PATH="$HOST_PREFIX" \
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DZIG_TARGET_TRIPLE="$HOST_TARGET" \
|
||||
-DZIG_TARGET_MCPU="$HOST_MCPU" \
|
||||
-DZIG_STATIC=ON
|
||||
-DZIG_STATIC=ON \
|
||||
-DZIG_OMIT_STAGE2=ON
|
||||
|
||||
unset CC
|
||||
unset CXX
|
||||
@@ -94,7 +95,7 @@ if [ "${BUILD_REASON}" != "PullRequest" ]; then
|
||||
# Produce the experimental std lib documentation.
|
||||
mkdir -p release/docs/std
|
||||
$ZIG test ../lib/std/std.zig \
|
||||
--override-lib-dir ../lib \
|
||||
--zig-lib-dir ../lib \
|
||||
-femit-docs=release/docs/std \
|
||||
-fno-emit-bin
|
||||
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
set -x
|
||||
set -e
|
||||
|
||||
brew update && brew install s3cmd
|
||||
brew update && brew install ncurses s3cmd
|
||||
|
||||
ZIGDIR="$(pwd)"
|
||||
ARCH="x86_64"
|
||||
TARGET="$ARCH-macos-gnu"
|
||||
MCPU="baseline"
|
||||
CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2703+c12704a33"
|
||||
CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.9.0-dev.1249+210ef5af8"
|
||||
PREFIX="$HOME/$CACHE_BASENAME"
|
||||
JOBS="-j2"
|
||||
|
||||
@@ -39,7 +39,8 @@ cmake .. \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DZIG_TARGET_TRIPLE="$TARGET" \
|
||||
-DZIG_TARGET_MCPU="$MCPU" \
|
||||
-DZIG_STATIC=ON
|
||||
-DZIG_STATIC=ON \
|
||||
-DZIG_OMIT_STAGE2=ON
|
||||
|
||||
# Now cmake will use zig as the C/C++ compiler. We reset the environment variables
|
||||
# so that installation and testing do not get affected by them.
|
||||
@@ -54,9 +55,12 @@ make $JOBS install
|
||||
cmake .. -DZIG_EXECUTABLE="$(pwd)/release/bin/zig"
|
||||
make $JOBS install
|
||||
|
||||
for step in test-toolchain test-std docs; do
|
||||
release/bin/zig build $step
|
||||
done
|
||||
# TODO figure out why this causes a segmentation fault
|
||||
# release/bin/zig test ../test/behavior.zig -fno-stage1 -fLLVM -I ../test
|
||||
|
||||
release/bin/zig build test-toolchain -Denable-macos-sdk
|
||||
release/bin/zig build test-std
|
||||
release/bin/zig build docs
|
||||
|
||||
if [ "${BUILD_REASON}" != "PullRequest" ]; then
|
||||
mv ../LICENSE release/
|
||||
@@ -91,4 +95,5 @@ if [ "${BUILD_REASON}" != "PullRequest" ]; then
|
||||
echo "##vso[task.setvariable variable=tarball;isOutput=true]$TARBALL"
|
||||
echo "##vso[task.setvariable variable=shasum;isOutput=true]$SHASUM"
|
||||
echo "##vso[task.setvariable variable=bytesize;isOutput=true]$BYTESIZE"
|
||||
echo "##vso[task.setvariable variable=version;isOutput=true]$VERSION"
|
||||
fi
|
||||
|
||||
@@ -21,26 +21,14 @@ jobs:
|
||||
- script: ci/azure/macos_arm64_script
|
||||
name: main
|
||||
displayName: 'Build'
|
||||
- job: BuildLinux
|
||||
pool:
|
||||
vmImage: 'ubuntu-18.04'
|
||||
timeoutInMinutes: 360
|
||||
steps:
|
||||
- task: DownloadSecureFile@1
|
||||
inputs:
|
||||
secureFile: s3cfg
|
||||
- script: ci/azure/linux_script
|
||||
name: main
|
||||
displayName: 'Build and test'
|
||||
- job: BuildWindows
|
||||
pool:
|
||||
vmImage: 'windows-2019'
|
||||
timeoutInMinutes: 360
|
||||
steps:
|
||||
- powershell: |
|
||||
(New-Object Net.WebClient).DownloadFile("https://github.com/msys2/msys2-installer/releases/download/2021-02-28/msys2-base-x86_64-20210228.sfx.exe", "sfx.exe")
|
||||
(New-Object Net.WebClient).DownloadFile("https://github.com/msys2/msys2-installer/releases/download/2022-01-28/msys2-base-x86_64-20220128.sfx.exe", "sfx.exe")
|
||||
.\sfx.exe -y -o\
|
||||
del sfx.exe
|
||||
displayName: Download/Extract/Install MSYS2
|
||||
- script: |
|
||||
@REM install updated filesystem package first without dependency checking
|
||||
@@ -61,7 +49,6 @@ jobs:
|
||||
dependsOn:
|
||||
- BuildMacOS
|
||||
- BuildMacOS_arm64
|
||||
- BuildLinux
|
||||
- BuildWindows
|
||||
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
|
||||
strategy:
|
||||
@@ -69,7 +56,7 @@ jobs:
|
||||
pool:
|
||||
vmImage: 'ubuntu-18.04'
|
||||
variables:
|
||||
version: $[ dependencies.BuildLinux.outputs['main.version'] ]
|
||||
version: $[ dependencies.BuildMacOS.outputs['main.version'] ]
|
||||
steps:
|
||||
- task: DownloadSecureFile@1
|
||||
inputs:
|
||||
|
||||
@@ -6,6 +6,11 @@ set -e
|
||||
pacman -Suy --needed --noconfirm
|
||||
pacman -S --needed --noconfirm wget p7zip python3-pip tar xz
|
||||
|
||||
TARBALL="llvm+clang+lld-13.0.0-x86_64-windows-msvc-release-mt.tar.xz"
|
||||
|
||||
pip install s3cmd
|
||||
wget -nv "https://ziglang.org/deps/llvm%2bclang%2blld-12.0.1-rc1-x86_64-windows-msvc-release-mt.tar.xz"
|
||||
tar xf llvm+clang+lld-12.0.1-rc1-x86_64-windows-msvc-release-mt.tar.xz
|
||||
wget -nv "https://ziglang.org/deps/$TARBALL"
|
||||
# If the first extraction fails, re-try it once; this can happen if the tarball
|
||||
# contains symlinks that are in the table of contents before the files that
|
||||
# they point to.
|
||||
tar -xf $TARBALL || tar --overwrite -xf $TARBALL
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@echo on
|
||||
SET "SRCROOT=%cd%"
|
||||
SET "PREVPATH=%PATH%"
|
||||
SET "PREVMSYSEM=%MSYSTEM%"
|
||||
SET "PREVMSYSTEM=%MSYSTEM%"
|
||||
|
||||
set "PATH=%CD:~0,2%\msys64\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem"
|
||||
SET "MSYSTEM=MINGW64"
|
||||
@@ -11,7 +11,7 @@ SET "MSYSTEM=%PREVMSYSTEM%"
|
||||
|
||||
SET "ZIGBUILDDIR=%SRCROOT%\build"
|
||||
SET "ZIGINSTALLDIR=%ZIGBUILDDIR%\dist"
|
||||
SET "ZIGPREFIXPATH=%SRCROOT%\llvm+clang+lld-12.0.1-rc1-x86_64-windows-msvc-release-mt"
|
||||
SET "ZIGPREFIXPATH=%SRCROOT%\llvm+clang+lld-13.0.0-x86_64-windows-msvc-release-mt"
|
||||
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
|
||||
|
||||
@@ -26,6 +26,10 @@ cd %ZIGBUILDDIR%
|
||||
cmake.exe .. -Thost=x64 -G"Visual Studio 16 2019" -A x64 "-DCMAKE_INSTALL_PREFIX=%ZIGINSTALLDIR%" "-DCMAKE_PREFIX_PATH=%ZIGPREFIXPATH%" -DCMAKE_BUILD_TYPE=Release -DZIG_OMIT_STAGE2=ON || exit /b
|
||||
msbuild /maxcpucount /p:Configuration=Release INSTALL.vcxproj || exit /b
|
||||
|
||||
REM Sadly, stage2 is omitted from this build to save memory on the CI server. Once self-hosted is
|
||||
REM built with itself and does not gobble as much memory, we can enable these tests.
|
||||
REM "%ZIGINSTALLDIR%\bin\zig.exe" test "..\test\behavior.zig" -fno-stage1 -fLLVM -I "..\test" || exit /b
|
||||
|
||||
"%ZIGINSTALLDIR%\bin\zig.exe" build test-toolchain -Dskip-non-native -Dskip-stage2-tests || exit /b
|
||||
"%ZIGINSTALLDIR%\bin\zig.exe" build test-std -Dskip-non-native || exit /b
|
||||
"%ZIGINSTALLDIR%\bin\zig.exe" build docs || exit /b
|
||||
|
||||
@@ -11,6 +11,11 @@ if [ "${BUILD_REASON}" != "PullRequest" ]; then
|
||||
mv dist/bin/zig.exe dist/
|
||||
rmdir dist/bin
|
||||
|
||||
# Remove the unnecessary zig dir in $prefix/lib/zig/std/std.zig
|
||||
mv dist/lib/zig dist/lib2
|
||||
rmdir dist/lib
|
||||
mv dist/lib2 dist/lib
|
||||
|
||||
VERSION=$(dist/zig.exe version)
|
||||
DIRNAME="zig-windows-x86_64-$VERSION"
|
||||
TARBALL="$DIRNAME.zip"
|
||||
|
||||
@@ -7,38 +7,70 @@ platform:
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: ziglang/static-base:llvm12-aarch64-5
|
||||
image: ziglang/static-base:llvm13-aarch64-1
|
||||
commands:
|
||||
- ./ci/drone/linux_script_build
|
||||
|
||||
- name: test-1
|
||||
depends_on:
|
||||
- build
|
||||
image: ziglang/static-base:llvm12-aarch64-5
|
||||
image: ziglang/static-base:llvm13-aarch64-1
|
||||
commands:
|
||||
- ./ci/drone/linux_script_test 1
|
||||
|
||||
- name: test-2
|
||||
depends_on:
|
||||
- build
|
||||
image: ziglang/static-base:llvm12-aarch64-5
|
||||
image: ziglang/static-base:llvm13-aarch64-1
|
||||
commands:
|
||||
- ./ci/drone/linux_script_test 2
|
||||
|
||||
- name: test-3
|
||||
depends_on:
|
||||
- build
|
||||
image: ziglang/static-base:llvm12-aarch64-5
|
||||
image: ziglang/static-base:llvm13-aarch64-1
|
||||
commands:
|
||||
- ./ci/drone/linux_script_test 3
|
||||
|
||||
- name: test-4
|
||||
depends_on:
|
||||
- build
|
||||
image: ziglang/static-base:llvm13-aarch64-1
|
||||
commands:
|
||||
- ./ci/drone/linux_script_test 4
|
||||
|
||||
- name: test-5
|
||||
depends_on:
|
||||
- build
|
||||
image: ziglang/static-base:llvm13-aarch64-1
|
||||
commands:
|
||||
- ./ci/drone/linux_script_test 5
|
||||
|
||||
- name: test-6
|
||||
depends_on:
|
||||
- build
|
||||
image: ziglang/static-base:llvm13-aarch64-1
|
||||
commands:
|
||||
- ./ci/drone/linux_script_test 6
|
||||
|
||||
- name: test-7
|
||||
depends_on:
|
||||
- build
|
||||
image: ziglang/static-base:llvm13-aarch64-1
|
||||
commands:
|
||||
- ./ci/drone/linux_script_test 7
|
||||
|
||||
- name: finalize
|
||||
depends_on:
|
||||
- build
|
||||
- test-1
|
||||
- test-2
|
||||
- test-3
|
||||
image: ziglang/static-base:llvm12-aarch64-5
|
||||
- test-4
|
||||
- test-5
|
||||
- test-6
|
||||
- test-7
|
||||
image: ziglang/static-base:llvm13-aarch64-1
|
||||
environment:
|
||||
SRHT_OAUTH_TOKEN:
|
||||
from_secret: SRHT_OAUTH_TOKEN
|
||||
|
||||
@@ -2,6 +2,13 @@
|
||||
|
||||
. ./ci/drone/linux_script_base
|
||||
|
||||
# Probe CPU/brand details.
|
||||
# TODO: `lscpu` is changing package names in EDGE to `util-linux-misc`
|
||||
apk update
|
||||
apk add util-linux
|
||||
echo "lscpu:"
|
||||
lscpu | sed 's,^, : ,'
|
||||
|
||||
PREFIX="/deps/local"
|
||||
ZIG="$PREFIX/bin/zig"
|
||||
TARGET="$TRIPLEARCH-linux-musl"
|
||||
@@ -13,7 +20,6 @@ export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU"
|
||||
# The `CMAKE_AR` parameter will consider any spaces to
|
||||
# be part of the executable path rather than CLI args, so we have
|
||||
# to create wrapper scripts for `zig ar` and zig ranlib`.
|
||||
|
||||
cat <<'ENDFILE' >$PREFIX/bin/ar
|
||||
#!/bin/sh
|
||||
/deps/local/bin/zig ar $@
|
||||
|
||||
@@ -13,8 +13,7 @@ pip3 install s3cmd
|
||||
cd build
|
||||
|
||||
mv ../LICENSE "$DISTDIR/"
|
||||
# docs are disabled due to: https://github.com/ziglang/zig/issues/8597
|
||||
#mv ../zig-cache/langref.html "$DISTDIR/"
|
||||
mv ../zig-cache/langref.html "$DISTDIR/"
|
||||
mv "$DISTDIR/bin/zig" "$DISTDIR/"
|
||||
rmdir "$DISTDIR/bin"
|
||||
|
||||
|
||||
@@ -2,29 +2,44 @@
|
||||
|
||||
. ./ci/drone/linux_script_base
|
||||
|
||||
# only release-fast builds of test suite due to: https://github.com/ziglang/zig/issues/8597
|
||||
#
|
||||
# Some test suite components will be missing because they do not support
|
||||
# forcing -OReleaseFast
|
||||
#
|
||||
# see `zig build --help` for the full list of test-* components
|
||||
BUILD_FLAGS="-Dskip-non-native"
|
||||
|
||||
case "$1" in
|
||||
1)
|
||||
steps="\
|
||||
test-stage2 \
|
||||
test-fmt \
|
||||
test-behavior"
|
||||
./build/zig build $BUILD_FLAGS test-behavior
|
||||
./build/zig build $BUILD_FLAGS test-compiler-rt
|
||||
./build/zig build $BUILD_FLAGS test-fmt
|
||||
./build/zig build $BUILD_FLAGS docs
|
||||
;;
|
||||
2)
|
||||
steps="test-std"
|
||||
# Debug
|
||||
./build/zig build $BUILD_FLAGS test-std -Dskip-release-safe -Dskip-release-fast -Dskip-release-small
|
||||
;;
|
||||
3)
|
||||
steps="\
|
||||
test-compiler-rt \
|
||||
test-minilibc \
|
||||
test-compare-output \
|
||||
test-translate-c \
|
||||
test-run-translated-c"
|
||||
# ReleaseSafe
|
||||
./build/zig build $BUILD_FLAGS test-std -Dskip-debug -Dskip-release-fast -Dskip-release-small
|
||||
;;
|
||||
4)
|
||||
# Releasefast
|
||||
./build/zig build $BUILD_FLAGS test-std -Dskip-debug -Dskip-release-safe -Dskip-release-small
|
||||
;;
|
||||
5)
|
||||
# ReleaseSmall
|
||||
./build/zig build $BUILD_FLAGS test-std -Dskip-debug -Dskip-release-safe -Dskip-release-fast
|
||||
;;
|
||||
6)
|
||||
./build/zig build $BUILD_FLAGS test-minilibc
|
||||
./build/zig build $BUILD_FLAGS test-compare-output
|
||||
./build/zig build $BUILD_FLAGS test-standalone -Dskip-release-safe
|
||||
./build/zig build $BUILD_FLAGS test-stack-traces
|
||||
./build/zig build $BUILD_FLAGS test-cli
|
||||
./build/zig build $BUILD_FLAGS test-asm-link
|
||||
./build/zig build $BUILD_FLAGS test-runtime-safety
|
||||
./build/zig build $BUILD_FLAGS test-translate-c
|
||||
;;
|
||||
7)
|
||||
./build/zig build $BUILD_FLAGS # test building self-hosted without LLVM
|
||||
./build/zig build $BUILD_FLAGS test-stage2
|
||||
;;
|
||||
'')
|
||||
echo "error: expecting test group argument"
|
||||
@@ -35,12 +50,3 @@ case "$1" in
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# only release-fast builds of test suite due to: https://github.com/ziglang/zig/issues/8597
|
||||
./build/zig build \
|
||||
-Drelease \
|
||||
-Dskip-debug \
|
||||
-Dskip-release-small \
|
||||
-Dskip-release-safe \
|
||||
-Dskip-non-native \
|
||||
$steps
|
||||
|
||||
@@ -7,7 +7,7 @@ sudo pkg update -fq
|
||||
sudo pkg install -y cmake py38-s3cmd wget curl jq samurai
|
||||
|
||||
ZIGDIR="$(pwd)"
|
||||
CACHE_BASENAME="zig+llvm+lld+clang-x86_64-freebsd-gnu-0.8.0-dev.2703+c12704a33"
|
||||
CACHE_BASENAME="zig+llvm+lld+clang-x86_64-freebsd-gnu-0.9.0-dev.1243+456d7e5f5"
|
||||
PREFIX="$HOME/$CACHE_BASENAME"
|
||||
|
||||
cd $HOME
|
||||
@@ -38,6 +38,11 @@ cmake .. \
|
||||
-GNinja
|
||||
samu install
|
||||
|
||||
# TODO ld.lld: error: undefined symbol: main
|
||||
# >>> referenced by crt1_c.c:75 (/usr/src/lib/csu/amd64/crt1_c.c:75)
|
||||
# >>> /usr/lib/crt1.o:(_start)
|
||||
#release/bin/zig test ../test/behavior.zig -fno-stage1 -fLLVM -I ../test
|
||||
|
||||
# Here we skip some tests to save time.
|
||||
release/bin/zig build test -Dskip-compile-errors -Dskip-non-native
|
||||
|
||||
|
||||
@@ -1,737 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Releases ⚡ The Zig Programming Language</title>
|
||||
<link rel="icon" href="/favicon.png">
|
||||
<style>
|
||||
body{
|
||||
font-family: system-ui, -apple-system, Roboto, "Segoe UI", sans-serif;
|
||||
line-height: 1.45;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
p {
|
||||
margin: 0.8em 0;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
margin: 0.5em 0 0.5em;
|
||||
line-height: 1.2;
|
||||
font-weight: bold;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
h1 a, h2 a, h3 a, h4 a {
|
||||
text-decoration: none;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
a.hdr {
|
||||
visibility: hidden;
|
||||
}
|
||||
h1:hover > a.hdr, h2:hover > a.hdr, h3:hover > a.hdr, h4:hover > a.hdr, h5:hover > a.hdr {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
h1 { font-size: 2.0em; }
|
||||
|
||||
h2 { font-size: 1.5em; }
|
||||
|
||||
h3 { font-size: 1.25em; }
|
||||
|
||||
h4 { font-size: 1.0em; }
|
||||
|
||||
a {
|
||||
color: #2A6286;
|
||||
}
|
||||
|
||||
a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
th, td {
|
||||
padding: 0.6em;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
td {
|
||||
font-size: 0.96em;
|
||||
}
|
||||
|
||||
th {
|
||||
border-bottom: 2px solid #f2f3f3;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
background: #f2f3f3;
|
||||
}
|
||||
|
||||
.container {
|
||||
margin: 0 auto;
|
||||
position: relative;
|
||||
max-width: 1000px;
|
||||
}
|
||||
|
||||
#navbar {
|
||||
background-color: #737475;
|
||||
padding: 5px 0;
|
||||
border-top: 4px solid #f7a41d;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
#navbar .navbar-item, #navbar .navbar-item:visited {
|
||||
color: white;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.code {
|
||||
font-family: monospace;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
#header-image {
|
||||
background-image: url(https://ziglang.org/img/zig-logo-dark.svg);
|
||||
background-repeat: no-repeat;
|
||||
width: 340px;
|
||||
height: 90px;
|
||||
display: block;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body{
|
||||
background-color:#111;
|
||||
color: #bbb;
|
||||
}
|
||||
a {
|
||||
color: #88f;
|
||||
}
|
||||
table, th, td {
|
||||
border-color: grey;
|
||||
}
|
||||
tr:nth-child(even) {
|
||||
background: #1e1e1e;
|
||||
}
|
||||
h1 a, h2 a, h3 a, h4 a, h5 a {
|
||||
color: #aaa;
|
||||
}
|
||||
#header-image {
|
||||
background-image: url(https://ziglang.org/img/zig-logo-light.svg);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<a href="/"><span id="header-image"></span></a>
|
||||
</div>
|
||||
<nav id="navbar">
|
||||
<div class="container">
|
||||
<a href="/download/" class="navbar-item">Download & Documentation</a>
|
||||
<a href="https://github.com/ziglang/zig" class="navbar-item">Source Code</a>
|
||||
<a href="/news/" class="navbar-item">News</a>
|
||||
<a href="https://github.com/ziglang/zig/wiki/Community" class="navbar-item">Join a Community</a>
|
||||
<a href="/zsf/" class="navbar-item">
|
||||
<svg style="color: #ea4aaa; vertical-align: middle;fill: currentColor; margin-right: 5px" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M9 2c-.97 0-1.69.42-2.2 1-.51.58-.78.92-.8 1-.02-.08-.28-.42-.8-1-.52-.58-1.17-1-2.2-1-1.632.086-2.954 1.333-3 3 0 .52.09 1.52.67 2.67C1.25 8.82 3.01 10.61 6 13c2.98-2.39 4.77-4.17 5.34-5.33C11.91 6.51 12 5.5 12 5c-.047-1.69-1.342-2.913-3-3z"></path></svg>Sponsor the Zig Software Foundation</a>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="container">
|
||||
<h1>Releases</h1>
|
||||
<p>You can also
|
||||
<a href="https://github.com/ziglang/zig/wiki/Install-Zig-from-a-Package-Manager">install Zig from a package manager</a>.
|
||||
</p>
|
||||
<p>
|
||||
There is a <a href="index.json">JSON version of this page</a>.
|
||||
</p>
|
||||
|
||||
<h2 id="release-master">master</h2>
|
||||
<ul>
|
||||
<li>{{MASTER_DATE}}</li>
|
||||
<li><a href="/documentation/master/">Language Reference</a></li>
|
||||
<li><a href="/documentation/master/std/">Standard Library Documentation</a> (experimental)</li>
|
||||
</ul>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="40%">
|
||||
<col width="10%">
|
||||
<col width="10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Filename</th>
|
||||
<th>Kind</th>
|
||||
<th>Size</th>
|
||||
<th>Sha256</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/builds/{{SRC_TARBALL}}">{{SRC_TARBALL}}</a></td>
|
||||
<td>Source</td>
|
||||
<td>{{SRC_BYTESIZE}}</td>
|
||||
<td class="code">{{SRC_SHASUM}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/builds/{{X86_64_LINUX_TARBALL}}">{{X86_64_LINUX_TARBALL}}</a></td>
|
||||
<td>Binary</td>
|
||||
<td>{{X86_64_LINUX_BYTESIZE}}</td>
|
||||
<td class="code">{{X86_64_LINUX_SHASUM}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/builds/{{AARCH64_LINUX_TARBALL}}">{{AARCH64_LINUX_TARBALL}}</a></td>
|
||||
<td>Binary</td>
|
||||
<td>{{AARCH64_LINUX_BYTESIZE}}</td>
|
||||
<td class="code">{{AARCH64_LINUX_SHASUM}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/builds/{{X86_64_WINDOWS_TARBALL}}">{{X86_64_WINDOWS_TARBALL}}</a></td>
|
||||
<td>Binary</td>
|
||||
<td>{{X86_64_WINDOWS_BYTESIZE}}</td>
|
||||
<td class="code">{{X86_64_WINDOWS_SHASUM}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/builds/{{X86_64_MACOS_TARBALL}}">{{X86_64_MACOS_TARBALL}}</a></td>
|
||||
<td>Binary</td>
|
||||
<td>{{X86_64_MACOS_BYTESIZE}}</td>
|
||||
<td class="code">{{X86_64_MACOS_SHASUM}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/builds/{{AARCH64_MACOS_TARBALL}}">{{AARCH64_MACOS_TARBALL}}</a></td>
|
||||
<td>Binary</td>
|
||||
<td>{{AARCH64_MACOS_BYTESIZE}}</td>
|
||||
<td class="code">{{AARCH64_MACOS_SHASUM}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/builds/{{X86_64_FREEBSD_TARBALL}}">{{X86_64_FREEBSD_TARBALL}}</a></td>
|
||||
<td>Binary</td>
|
||||
<td>{{X86_64_FREEBSD_BYTESIZE}}</td>
|
||||
<td class="code">{{X86_64_FREEBSD_SHASUM}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="release-0.7.1">0.7.1</h2>
|
||||
<ul>
|
||||
<li>2020-12-13</li>
|
||||
<li><a href="0.7.1/release-notes.html">Release Notes</a></li>
|
||||
<li><a href="/documentation/0.7.1/">Language Reference</a></li>
|
||||
<li><a href="/documentation/0.7.1/std">Standard Library Documentation</a> (experimental)</li>
|
||||
</ul>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="40%">
|
||||
<col width="10%">
|
||||
<col width="10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Filename</th>
|
||||
<th>Kind</th>
|
||||
<th>Size</th>
|
||||
<th>Sha256</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.1/zig-0.7.1.tar.xz">zig-0.7.1.tar.xz</a></td>
|
||||
<td>Source</td>
|
||||
<td>11MiB</td>
|
||||
<td class="code">2db3b944ab368d955b48743d9f7c963b8f96de1a441ba5a35e197237cc6dae44</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.1/zig-bootstrap-0.7.1.tar.xz">zig-bootstrap-0.7.1.tar.xz</a></td>
|
||||
<td>Source</td>
|
||||
<td>39MiB</td>
|
||||
<td class="code">040f27c1fae4b0cac0a2782aecdb691f6a2f8e89db6a6ed35024c31c304fd9b2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.1/zig-freebsd-x86_64-0.7.1.tar.xz">zig-freebsd-x86_64-0.7.1.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>38MiB</td>
|
||||
<td class="code">e73c1dca35791a3183fdd5ecde0443ebbe180942efceafe651886034fb8def09</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.1/zig-linux-aarch64-0.7.1.tar.xz">zig-linux-aarch64-0.7.1.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>33MiB</td>
|
||||
<td class="code">48ec90eba407e4587ddef7eecef25fec7e13587eb98e3b83c5f2f5fff2a5cbe7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.1/zig-linux-armv7a-0.7.1.tar.xz">zig-linux-armv7a-0.7.1.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>35MiB</td>
|
||||
<td class="code">5a0662e07b4c4968665e1f97558f8591f6facec45d2e0ff5715e661743107ceb</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.1/zig-linux-i386-0.7.1.tar.xz">zig-linux-i386-0.7.1.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>38MiB</td>
|
||||
<td class="code">4882e052e5f83690bd0334bb4fc1702b5403cb3a3d2aa63fd7d6043d8afecba3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.1/zig-linux-riscv64-0.7.1.tar.xz">zig-linux-riscv64-0.7.1.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>36MiB</td>
|
||||
<td class="code">187294bfd35983348c3fe042901b42e67e7e36ab7f77a5f969d21c0051f4d21f</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.1/zig-linux-x86_64-0.7.1.tar.xz">zig-linux-x86_64-0.7.1.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>37MiB</td>
|
||||
<td class="code">18c7b9b200600f8bcde1cd8d7f1f578cbc3676241ce36d771937ce19a8159b8d</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.1/zig-macos-x86_64-0.7.1.tar.xz">zig-macos-x86_64-0.7.1.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>35MiB</td>
|
||||
<td class="code">845cb17562978af0cf67e3993f4e33330525eaf01ead9386df9105111e3bc519</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.1/zig-windows-i386-0.7.1.zip">zig-windows-i386-0.7.1.zip</a></td>
|
||||
<td>Binary</td>
|
||||
<td>52MiB</td>
|
||||
<td class="code">a1b9a7421e13153e07fd2e2c93ff29aad64d83105b8fcdafa633dbe689caf1c0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.1/zig-windows-x86_64-0.7.1.zip">zig-windows-x86_64-0.7.1.zip</a></td>
|
||||
<td>Binary</td>
|
||||
<td>53MiB</td>
|
||||
<td class="code">4818a8a65b4672bc52c0ae7f14d014e0eb8caf10f12c0745176820384cea296a</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="release-0.7.0">0.7.0</h2>
|
||||
<ul>
|
||||
<li>2020-11-08</li>
|
||||
<li><a href="0.7.0/release-notes.html">Release Notes</a></li>
|
||||
<li><a href="/documentation/0.7.0/">Language Reference</a></li>
|
||||
<li><a href="/documentation/0.7.0/std">Standard Library Documentation</a> (experimental)</li>
|
||||
</ul>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="40%">
|
||||
<col width="10%">
|
||||
<col width="10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Filename</th>
|
||||
<th>Kind</th>
|
||||
<th>Size</th>
|
||||
<th>Sha256</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.0/zig-0.7.0.tar.xz">zig-0.7.0.tar.xz</a></td>
|
||||
<td>Source</td>
|
||||
<td>11MiB</td>
|
||||
<td class="code">0efd2cf6c3b05723db80e9cf193bc55150bba84ca41f855a90f53fc756445f83</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.0/zig-bootstrap-0.7.0.tar.xz">zig-bootstrap-0.7.0.tar.xz</a></td>
|
||||
<td>Source</td>
|
||||
<td>39MiB</td>
|
||||
<td class="code">f073beaf5c53c8c57c0d374cbfcb332ef92ad703173edba0d9e0f2ed28401b72</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.0/zig-freebsd-x86_64-0.7.0.tar.xz">zig-freebsd-x86_64-0.7.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>34MiB</td>
|
||||
<td class="code">a0c926272ee4ae720034b4a6a1dc98399d76156dd84182554740f0ca8a41fc99</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.0/zig-linux-aarch64-0.7.0.tar.xz">zig-linux-aarch64-0.7.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>32MiB</td>
|
||||
<td class="code">f89933bac87d44be82325754ff88423020c81c7032a6fc41cfeb81e982eeab9b</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.0/zig-linux-armv7a-0.7.0.tar.xz">zig-linux-armv7a-0.7.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>34MiB</td>
|
||||
<td class="code">011c267e25a96ee160505a560c441daa045359a9d50e13ab1bada9d75c95db2d</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.0/zig-linux-i386-0.7.0.tar.xz">zig-linux-i386-0.7.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>37MiB</td>
|
||||
<td class="code">4bb2072cd363bcb1cbeb4872ff5cbc1f683b02d0cc1f90c46e3ea7422ce53222</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.0/zig-linux-riscv64-0.7.0.tar.xz">zig-linux-riscv64-0.7.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>36MiB</td>
|
||||
<td class="code">40dff81faa6f232ac40abbf88b9371f3cc932b6e09c423b94387c9ea580cb7be</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.0/zig-linux-x86_64-0.7.0.tar.xz">zig-linux-x86_64-0.7.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>36MiB</td>
|
||||
<td class="code">e619b1c6094c095b932767f527aee2507f847ea981513ff8a08aab0fd730e0ac</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.0/zig-macos-aarch64-0.7.0.tar.xz">zig-macos-aarch64-0.7.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>33MiB</td>
|
||||
<td class="code">338238035734db74ea4f30e500a4893bf741d38305c10952d5e39fa05bdb057d</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.0/zig-macos-x86_64-0.7.0.tar.xz">zig-macos-x86_64-0.7.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>35MiB</td>
|
||||
<td class="code">94063f9a311cbbf7a2e0a12295e09437182cf950f18cb0eb30ea9893f3677f24</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.0/zig-windows-i386-0.7.0.zip">zig-windows-i386-0.7.0.zip</a></td>
|
||||
<td>Binary</td>
|
||||
<td>51MiB</td>
|
||||
<td class="code">b1e520aacbfbd645ff3521b3eb4d44166d9a0288b8725e4b001f8b50a425eb2e</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.7.0/zig-windows-x86_64-0.7.0.zip">zig-windows-x86_64-0.7.0.zip</a></td>
|
||||
<td>Binary</td>
|
||||
<td>52MiB</td>
|
||||
<td class="code">965f56c0a36f9cda2125e3a348bc654f7f155e2804c3667d231775ec228f8553</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="release-0.6.0">0.6.0</h2>
|
||||
<ul>
|
||||
<li>2020-04-13</li>
|
||||
<li><a href="0.6.0/release-notes.html">Release Notes</a></li>
|
||||
<li><a href="/documentation/0.6.0">Language Reference</a></li>
|
||||
<li><a href="/documentation/0.6.0/std">Standard Library Documentation</a> (experimental)</li>
|
||||
</ul>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="40%">
|
||||
<col width="10%">
|
||||
<col width="10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Filename</th>
|
||||
<th>Kind</th>
|
||||
<th>Size</th>
|
||||
<th>Sha256</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.6.0/zig-0.6.0.tar.xz">zig-0.6.0.tar.xz</a></td>
|
||||
<td>Source</td>
|
||||
<td>9.9MiB</td>
|
||||
<td class="code">5d167dc19354282dd35dd17b38e99e1763713b9be8a4ba9e9e69284e059e7204</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.6.0/zig-bootstrap-0.6.0.tar.xz">zig-bootstrap-0.6.0.tar.xz</a></td>
|
||||
<td>Source</td>
|
||||
<td>36.7MiB</td>
|
||||
<td class="code">5e0e4dc878b3dd0c1852a442b174f0732e8c07869a8fcd226b71a93b89b381ab</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.6.0/zig-freebsd-x86_64-0.6.0.tar.xz">zig-freebsd-x86_64-0.6.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>36MiB</td>
|
||||
<td class="code">190ff79c1eb56805a315d7c7a51082e32f62926250c0702b36760c225e1634a3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.6.0/zig-linux-aarch64-0.6.0.tar.xz">zig-linux-aarch64-0.6.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>36MiB</td>
|
||||
<td class="code">e7520efd42cfa02be48c2e430d08fe1f3cbb999d21d9f0d3ffd0febb976b2f41</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.6.0/zig-linux-armv6kz-0.6.0.tar.xz">zig-linux-armv6kz-0.6.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>38MiB</td>
|
||||
<td class="code">36b6493b3fed43eb1f0000e765798ad31a6bb7d7fd3f553ac1c3761dbc919b82</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.6.0/zig-linux-armv7a-0.6.0.tar.xz">zig-linux-armv7a-0.6.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>38MiB</td>
|
||||
<td class="code">946969abe357def95ca9cbbfcebfcf2d90cf967bcd3f48ee87662e32d91d8f35</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.6.0/zig-linux-i386-0.6.0.tar.xz">zig-linux-i386-0.6.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>43MiB</td>
|
||||
<td class="code">a97a2f9ae21575743cdd763c1917d49400d83fc562ef64582b18bade43eb24ce</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.6.0/zig-linux-riscv64-0.6.0.tar.xz">zig-linux-riscv64-0.6.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>41MiB</td>
|
||||
<td class="code">68ddee43f7503c8ae5f26a921f3602c34719a02ed2241f528c0b8b888cc14b38</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.6.0/zig-linux-x86_64-0.6.0.tar.xz">zig-linux-x86_64-0.6.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>43MiB</td>
|
||||
<td class="code">08fd3c757963630645441c2772362e9c2294020c44f14fce1b89f45de0dc1253</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.6.0/zig-macos-x86_64-0.6.0.tar.xz">zig-macos-x86_64-0.6.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>41MiB</td>
|
||||
<td class="code">17270360e87ddc49f737e760047b2fac49f1570a824a306119b1194ac4093895</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.6.0/zig-windows-i386-0.6.0.zip">zig-windows-i386-0.6.0.zip</a></td>
|
||||
<td>Binary</td>
|
||||
<td>58MiB</td>
|
||||
<td class="code">3b0a02618743e92175990dc6d1a787bb95ff62c4cda016f1c14c7786f575f8ca</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.6.0/zig-windows-x86_64-0.6.0.zip">zig-windows-x86_64-0.6.0.zip</a></td>
|
||||
<td>Binary</td>
|
||||
<td>47MiB</td>
|
||||
<td class="code">c3b897832523e1026e10b2d8d55d7f895185c0a27a63681f3a23219c3f1c38f4</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="release-0.5.0">0.5.0</h2>
|
||||
<ul>
|
||||
<li>2019-09-30</li>
|
||||
<li><a href="0.5.0/release-notes.html">Release Notes</a></li>
|
||||
<li><a href="/documentation/0.5.0">Documentation</a></li>
|
||||
</ul>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="40%">
|
||||
<col width="10%">
|
||||
<col width="10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Filename</th>
|
||||
<th>Kind</th>
|
||||
<th>Size</th>
|
||||
<th>Sha256</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.5.0/zig-0.5.0.tar.xz">zig-0.5.0.tar.xz</a></td>
|
||||
<td>Source</td>
|
||||
<td>10.4MiB</td>
|
||||
<td class="code">55ae16960f152bcb9cf98b4f8570902d0e559a141abf927f0d3555b7cc838a31</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.5.0/zig-linux-x86_64-0.5.0.tar.xz">zig-linux-x86_64-0.5.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>39.0MiB</td>
|
||||
<td class="code">43e8f8a8b8556edd373ddf9c1ef3ca6cf852d4d09fe07d5736d12fefedd2b4f7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.5.0/zig-windows-x86_64-0.5.0.zip">zig-windows-x86_64-0.5.0.zip</a></td>
|
||||
<td>Binary</td>
|
||||
<td>42.8MiB</td>
|
||||
<td class="code">58141323db8d84a5af62746be5f9140bc161ee760ef33dc91a887bf9ac021976</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.5.0/zig-macos-x86_64-0.5.0.tar.xz">zig-macos-x86_64-0.5.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>36.1MiB</td>
|
||||
<td class="code">28702cc05745c7c0bd450487d5f4091bf0a1ad279b35eb9a640ce3e3a15b300d</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.5.0/zig-freebsd-x86_64-0.5.0.tar.xz">zig-freebsd-x86_64-0.5.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>32.1MiB</td>
|
||||
<td class="code">9e1f4d36c3d584c0aa01f20eb4cd0a0eef3eee5af23e483b8414de55feab6ab6</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="release-0.4.0">0.4.0</h2>
|
||||
<ul>
|
||||
<li>2019-04-08</li>
|
||||
<li><a href="0.4.0/release-notes.html">Release Notes</a></li>
|
||||
<li><a href="/documentation/0.4.0">Documentation</a></li>
|
||||
</ul>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="40%">
|
||||
<col width="10%">
|
||||
<col width="10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Filename</th>
|
||||
<th>Kind</th>
|
||||
<th>Size</th>
|
||||
<th>Sha256</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.4.0/zig-0.4.0.tar.xz">zig-0.4.0.tar.xz</a></td>
|
||||
<td>Source</td>
|
||||
<td>5.1MiB</td>
|
||||
<td class="code">fec1f3f6b359a3d942e0a7f9157b3b30cde83927627a0e1ea95c54de3c526cfc</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.4.0/zig-linux-x86_64-0.4.0.tar.xz">zig-linux-x86_64-0.4.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>31.4MiB</td>
|
||||
<td class="code">fb1954e2fb556a01f8079a08130e88f70084e08978ff853bb2b1986d8c39d84e</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.4.0/zig-windows-x86_64-0.4.0.zip">zig-windows-x86_64-0.4.0.zip</a></td>
|
||||
<td>Binary</td>
|
||||
<td>34.1MiB</td>
|
||||
<td class="code">fbc3dd205e064c263063f69f600bedb18e3d0aa2efa747a63ef6cafb6d73f127</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.4.0/zig-macos-x86_64-0.4.0.tar.xz">zig-macos-x86_64-0.4.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>29.4MiB</td>
|
||||
<td class="code">67c932982484d017c5111e54af9f33f15e8e05c6bc5346a55e04052159c964a8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.4.0/zig-freebsd-x86_64-0.4.0.tar.xz">zig-freebsd-x86_64-0.4.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>26.0MiB</td>
|
||||
<td class="code">3d557c91ac36d8262eb1733bb5f261c95944f9b635e43386e3d00a3272818c30</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="release-0.3.0">0.3.0</h2>
|
||||
<ul>
|
||||
<li>2018-09-28</li>
|
||||
<li><a href="0.3.0/release-notes.html">Release Notes</a></li>
|
||||
<li><a href="/documentation/0.3.0">Documentation</a></li>
|
||||
</ul>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="40%">
|
||||
<col width="10%">
|
||||
<col width="10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Filename</th>
|
||||
<th>Kind</th>
|
||||
<th>Size</th>
|
||||
<th>Sha256</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.3.0/zig-0.3.0.tar.xz">zig-0.3.0.tar.xz</a></td>
|
||||
<td>Source</td>
|
||||
<td>2.2MiB</td>
|
||||
<td class="code">d70af604f3a8622f3393d93abb3e056bf60351e32d121e6fa4fe03d8d41e1f5a</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.3.0/zig-linux-x86_64-0.3.0.tar.xz">zig-linux-x86_64-0.3.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>24.0MiB</td>
|
||||
<td class="code">b378d0aae30cb54f28494e7bc4efbc9bfb6326f47bfb302e8b5287af777b2f3c</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.3.0/zig-windows-x86_64-0.3.0.zip">zig-windows-x86_64-0.3.0.zip</a></td>
|
||||
<td>Binary</td>
|
||||
<td>21.5MiB</td>
|
||||
<td class="code">bb568c03950958f8bb3472139c3ab5ed74547c8c694ab50f404c202faf51baf4</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.3.0/zig-macos-x86_64-0.3.0.tar.xz">zig-macos-x86_64-0.3.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>22.6MiB</td>
|
||||
<td class="code">19dec1f1943ab7be26823376d466f7e456143deb34e17502778a949034dc2e7e</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="release-0.2.0">0.2.0</h2>
|
||||
<ul>
|
||||
<li>2018-03-15</li>
|
||||
<li><a href="0.2.0/release-notes.html">Release Notes</a></li>
|
||||
<li><a href="/documentation/0.2.0">Documentation</a></li>
|
||||
</ul>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="40%">
|
||||
<col width="10%">
|
||||
<col width="10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Filename</th>
|
||||
<th>Kind</th>
|
||||
<th>Size</th>
|
||||
<th>Sha256</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.2.0/zig-0.2.0.tar.xz">zig-0.2.0.tar.xz</a></td>
|
||||
<td>Source</td>
|
||||
<td>1.9MiB</td>
|
||||
<td class="code">29c9beb172737f4d5019b88ceae829ae8bc6512fb4386cfbf895ae2b42aa6965</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.2.0/zig-linux-x86_64-0.2.0.tar.xz">zig-linux-x86_64-0.2.0.tar.xz</a></td>
|
||||
<td>Binary</td>
|
||||
<td>23.5MiB</td>
|
||||
<td class="code">209c6fb745d42474c0a73d6f291c7ae3a38b6a1b6b641eea285a7f840cc1a890</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.2.0/zig-win64-0.2.0.zip">zig-win64-0.2.0.zip</a></td>
|
||||
<td>Binary</td>
|
||||
<td>20.6MiB</td>
|
||||
<td class="code">4f8a2979941a1f081ec8e545cca0b72608c0db1c5a3fd377a94db40649dcd3d4</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="release-0.1.1">0.1.1</h2>
|
||||
<ul>
|
||||
<li>2017-10-17</li>
|
||||
<li><a href="0.1.1/release-notes.html">Release Notes</a></li>
|
||||
<li><a href="/documentation/0.1.1">Documentation</a></li>
|
||||
</ul>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="40%">
|
||||
<col width="10%">
|
||||
<col width="10%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Filename</th>
|
||||
<th>Kind</th>
|
||||
<th>Size</th>
|
||||
<th>Sha256</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.1.1/zig-0.1.1.tar.xz">zig-0.1.1.tar.xz</a></td>
|
||||
<td>Source</td>
|
||||
<td>1.62MiB</td>
|
||||
<td class="code">ffca0cfb263485287e19cc997b08701fcd5f24b700345bcdc3dd8074f5a104e0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://ziglang.org/download/0.1.1/zig-win64-0.1.1.zip">zig-win64-0.1.1.zip</a></td>
|
||||
<td>Binary</td>
|
||||
<td>19.3MiB</td>
|
||||
<td class="code">6fc88bef531af7e567fe30bf60da1487b86833cbee84c7a2f3e317030aa5b660</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -40,6 +40,138 @@
|
||||
"size": "{{AARCH64_LINUX_BYTESIZE}}"
|
||||
}
|
||||
},
|
||||
"0.8.1": {
|
||||
"date": "2021-09-06",
|
||||
"docs": "https://ziglang.org/documentation/0.8.1/",
|
||||
"stdDocs": "https://ziglang.org/documentation/0.8.1/std/",
|
||||
"notes": "https://ziglang.org/download/0.8.1/release-notes.html",
|
||||
"src": {
|
||||
"tarball": "https://ziglang.org/download/0.8.1/zig-0.8.1.tar.xz",
|
||||
"shasum": "8c428e14a0a89cb7a15a6768424a37442292858cdb695e2eb503fa3c7bf47f1a",
|
||||
"size": "12650228"
|
||||
},
|
||||
"bootstrap": {
|
||||
"tarball": "https://ziglang.org/download/0.8.1/zig-bootstrap-0.8.1.tar.xz",
|
||||
"shasum": "fa1239247f830ecd51c42537043f5220e4d1dfefdc54356fa419616a0efb3902",
|
||||
"size": "43613464"
|
||||
},
|
||||
"x86_64-freebsd": {
|
||||
"tarball": "https://ziglang.org/download/0.8.1/zig-freebsd-x86_64-0.8.1.tar.xz",
|
||||
"shasum": "fc4f6478bcf3a9fce1b8ef677a91694f476dd35be6d6c9c4f44a8b76eedbe176",
|
||||
"size": "39150924"
|
||||
},
|
||||
"aarch64-linux": {
|
||||
"tarball": "https://ziglang.org/download/0.8.1/zig-linux-aarch64-0.8.1.tar.xz",
|
||||
"shasum": "2166dc9f2d8df387e8b4122883bb979d739281e1ff3f3d5483fec3a23b957510",
|
||||
"size": "37605932"
|
||||
},
|
||||
"armv7a-linux": {
|
||||
"tarball": "https://ziglang.org/download/0.8.1/zig-linux-armv7a-0.8.1.tar.xz",
|
||||
"shasum": "5ba58141805e2519f38cf8e715933cbf059f4f3dade92c71838cce341045de05",
|
||||
"size": "39185876"
|
||||
},
|
||||
"i386-linux": {
|
||||
"tarball": "https://ziglang.org/download/0.8.1/zig-linux-i386-0.8.1.tar.xz",
|
||||
"shasum": "2f3e84f30492b5f1c5f97cecc0166f07a8a8d50c5f85dbb3a6ef2a4ee6f915e6",
|
||||
"size": "44782932"
|
||||
},
|
||||
"riscv64-linux": {
|
||||
"tarball": "https://ziglang.org/download/0.8.1/zig-linux-riscv64-0.8.1.tar.xz",
|
||||
"shasum": "4adfaf147b025917c03367462fe5018aaa9edbc6439ef9cd0da2b074ae960554",
|
||||
"size": "41234480"
|
||||
},
|
||||
"x86_64-linux": {
|
||||
"tarball": "https://ziglang.org/download/0.8.1/zig-linux-x86_64-0.8.1.tar.xz",
|
||||
"shasum": "6c032fc61b5d77a3f3cf781730fa549f8f059ffdb3b3f6ad1c2994d2b2d87983",
|
||||
"size": "41250060"
|
||||
},
|
||||
"aarch64-macos": {
|
||||
"tarball": "https://ziglang.org/download/0.8.1/zig-macos-aarch64-0.8.1.tar.xz",
|
||||
"shasum": "5351297e3b8408213514b29c0a938002c5cf9f97eee28c2f32920e1227fd8423",
|
||||
"size": "35340712"
|
||||
},
|
||||
"x86_64-macos": {
|
||||
"tarball": "https://ziglang.org/download/0.8.1/zig-macos-x86_64-0.8.1.tar.xz",
|
||||
"shasum": "16b0e1defe4c1807f2e128f72863124bffdd906cefb21043c34b673bf85cd57f",
|
||||
"size": "39946200"
|
||||
},
|
||||
"i386-windows": {
|
||||
"tarball": "https://ziglang.org/download/0.8.1/zig-windows-i386-0.8.1.zip",
|
||||
"shasum": "099605051eb0452a947c8eab8fbbc7e43833c8376d267e94e41131c289a1c535",
|
||||
"size": "64152358"
|
||||
},
|
||||
"x86_64-windows": {
|
||||
"tarball": "https://ziglang.org/download/0.8.1/zig-windows-x86_64-0.8.1.zip",
|
||||
"shasum": "43573db14cd238f7111d6bdf37492d363f11ecd1eba802567a172f277d003926",
|
||||
"size": "61897838"
|
||||
}
|
||||
},
|
||||
"0.8.0": {
|
||||
"date": "2021-06-04",
|
||||
"docs": "https://ziglang.org/documentation/0.8.0/",
|
||||
"stdDocs": "https://ziglang.org/documentation/0.8.0/std/",
|
||||
"notes": "https://ziglang.org/download/0.8.0/release-notes.html",
|
||||
"src": {
|
||||
"tarball": "https://ziglang.org/download/0.8.0/zig-0.8.0.tar.xz",
|
||||
"shasum": "03a828d00c06b2e3bb8b7ff706997fd76bf32503b08d759756155b6e8c981e77",
|
||||
"size": "12614896"
|
||||
},
|
||||
"bootstrap": {
|
||||
"tarball": "https://ziglang.org/download/0.8.0/zig-bootstrap-0.8.0.tar.xz",
|
||||
"shasum": "10600bc9c01f92e343f40d6ecc0ad05d67d27c3e382bce75524c0639cd8ca178",
|
||||
"size": "43574248"
|
||||
},
|
||||
"x86_64-freebsd": {
|
||||
"tarball": "https://ziglang.org/download/0.8.0/zig-freebsd-x86_64-0.8.0.tar.xz",
|
||||
"shasum": "0d3ccc436c8c0f50fd55462f72f8492d98723c7218ffc2a8a1831967d81b4bdc",
|
||||
"size": "39125332"
|
||||
},
|
||||
"aarch64-linux": {
|
||||
"tarball": "https://ziglang.org/download/0.8.0/zig-linux-aarch64-0.8.0.tar.xz",
|
||||
"shasum": "ee204ca2c2037952cf3f8b10c609373a08a291efa4af7b3c73be0f2b27720470",
|
||||
"size": "37575428"
|
||||
},
|
||||
"armv7a-linux": {
|
||||
"tarball": "https://ziglang.org/download/0.8.0/zig-linux-armv7a-0.8.0.tar.xz",
|
||||
"shasum": "d00b8bd97b79f45d6f5da956983bafeaa082e6c2ae8c6e1c6d4faa22fa29b320",
|
||||
"size": "38884212"
|
||||
},
|
||||
"i386-linux": {
|
||||
"tarball": "https://ziglang.org/download/0.8.0/zig-linux-i386-0.8.0.tar.xz",
|
||||
"shasum": "96e43ee6ed81c3c63401f456bd1c58ee6d42373a43cb324f5cf4974ca0998865",
|
||||
"size": "42136032"
|
||||
},
|
||||
"riscv64-linux": {
|
||||
"tarball": "https://ziglang.org/download/0.8.0/zig-linux-riscv64-0.8.0.tar.xz",
|
||||
"shasum": "75997527a78cdab64c40c43d9df39c01c4cdb557bb3992a869838371a204cfea",
|
||||
"size": "40016268"
|
||||
},
|
||||
"x86_64-linux": {
|
||||
"tarball": "https://ziglang.org/download/0.8.0/zig-linux-x86_64-0.8.0.tar.xz",
|
||||
"shasum": "502625d3da3ae595c5f44a809a87714320b7a40e6dff4a895b5fa7df3391d01e",
|
||||
"size": "41211184"
|
||||
},
|
||||
"aarch64-macos": {
|
||||
"tarball": "https://ziglang.org/download/0.8.0/zig-macos-aarch64-0.8.0.tar.xz",
|
||||
"shasum": "b32d13f66d0e1ff740b3326d66a469ee6baddbd7211fa111c066d3bd57683111",
|
||||
"size": "35292180"
|
||||
},
|
||||
"x86_64-macos": {
|
||||
"tarball": "https://ziglang.org/download/0.8.0/zig-macos-x86_64-0.8.0.tar.xz",
|
||||
"shasum": "279f9360b5cb23103f0395dc4d3d0d30626e699b1b4be55e98fd985b62bc6fbe",
|
||||
"size": "39969312"
|
||||
},
|
||||
"i386-windows": {
|
||||
"tarball": "https://ziglang.org/download/0.8.0/zig-windows-i386-0.8.0.zip",
|
||||
"shasum": "b6ec9aa6cd6f3872fcb30d43ff411802d82008a0c4142ee49e208a09b2c1c5fe",
|
||||
"size": "61507213"
|
||||
},
|
||||
"x86_64-windows": {
|
||||
"tarball": "https://ziglang.org/download/0.8.0/zig-windows-x86_64-0.8.0.zip",
|
||||
"shasum": "8580fbbf3afb72e9b495c7f8aeac752a03475ae0bbcf5d787f3775c7e1f4f807",
|
||||
"size": "61766193"
|
||||
}
|
||||
},
|
||||
"0.7.1": {
|
||||
"date": "2020-12-13",
|
||||
"docs": "https://ziglang.org/documentation/0.7.1/",
|
||||
|
||||
97
ci/srht/netbsd_script
Executable file
97
ci/srht/netbsd_script
Executable file
@@ -0,0 +1,97 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
sudo pkgin -y update
|
||||
sudo pkgin -y upgrade
|
||||
sudo pkgin -y install cmake samurai curl jq py27-s3cmd wget clang
|
||||
|
||||
ZIGDIR="$(pwd)"
|
||||
CACHE_BASENAME="zig+llvm+lld+clang-x86_64-netbsd-gnu-0.8.0"
|
||||
PREFIX="$HOME/$CACHE_BASENAME"
|
||||
|
||||
cd $HOME
|
||||
wget -nv "https://ziglang.org/deps/$CACHE_BASENAME.tar.xz"
|
||||
tar xf "$CACHE_BASENAME.tar.xz"
|
||||
|
||||
cd $ZIGDIR
|
||||
|
||||
# Make the `zig version` number consistent.
|
||||
# This will affect the cmake command below.
|
||||
git config core.abbrev 9
|
||||
git fetch --unshallow || true
|
||||
git fetch --tags
|
||||
|
||||
# SourceHut reports that it is a terminal that supports escape codes, but it
|
||||
# is a filthy liar. Here we tell Zig to not try to send any terminal escape
|
||||
# codes to show progress.
|
||||
export TERM=dumb
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
export CC="$PREFIX/bin/zigcc"
|
||||
export CXX="$PREFIX/bin/zigcxx"
|
||||
echo "#!/bin/sh
|
||||
env CC=\"clang\" $PREFIX/bin/zig cc \"\$@\"" > $CC
|
||||
echo "#!/bin/sh
|
||||
env CC=\"clang\" $PREFIX/bin/zig c++ \"\$@\"" > $CXX
|
||||
chmod +x $CC
|
||||
chmod +x $CXX
|
||||
|
||||
cmake .. \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_PREFIX_PATH=$PREFIX \
|
||||
"-DCMAKE_INSTALL_PREFIX=$(pwd)/release" \
|
||||
-DZIG_STATIC=ON \
|
||||
-DZIG_TARGET_TRIPLE=x86_64-netbsd-none \
|
||||
-GNinja
|
||||
samu install
|
||||
|
||||
unset CC
|
||||
unset CXX
|
||||
|
||||
# TODO ld.lld: error: undefined symbol: main
|
||||
#>>> referenced by crt0-common.c
|
||||
#>>> /usr/lib/crt0.o:(___start)
|
||||
#release/bin/zig test ../test/behavior.zig -fno-stage1 -fLLVM -I ../test
|
||||
|
||||
# Here we skip some tests to save time.
|
||||
release/bin/zig build test -Dskip-compile-errors -Dskip-non-native
|
||||
|
||||
if [ -f ~/.s3cfg ]; then
|
||||
mv ../LICENSE release/
|
||||
mv ../zig-cache/langref.html release/
|
||||
mv release/bin/zig release/
|
||||
rmdir release/bin
|
||||
|
||||
GITBRANCH=$(basename $GITHUB_REF)
|
||||
VERSION=$(release/zig version)
|
||||
DIRNAME="zig-netbsd-x86_64-$VERSION"
|
||||
TARBALL="$DIRNAME.tar.xz"
|
||||
mv release "$DIRNAME"
|
||||
tar cfJ "$TARBALL" "$DIRNAME"
|
||||
|
||||
s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "$TARBALL" s3://ziglang.org/builds/
|
||||
|
||||
SHASUM=$(shasum -a 256 $TARBALL | cut '-d ' -f1)
|
||||
BYTESIZE=$(wc -c < $TARBALL)
|
||||
|
||||
JSONFILE="netbsd-$GITBRANCH.json"
|
||||
touch $JSONFILE
|
||||
echo "{\"tarball\": \"$TARBALL\"," >>$JSONFILE
|
||||
echo "\"shasum\": \"$SHASUM\"," >>$JSONFILE
|
||||
echo "\"size\": \"$BYTESIZE\"}" >>$JSONFILE
|
||||
|
||||
s3cmd put -P --add-header="Cache-Control: max-age=0, must-revalidate" "$JSONFILE" "s3://ziglang.org/builds/$JSONFILE"
|
||||
s3cmd put -P "$JSONFILE" "s3://ziglang.org/builds/x86_64-netbsd-$VERSION.json"
|
||||
|
||||
if [ "$GITBRANCH" = "master" ]; then
|
||||
# avoid leaking oauth token
|
||||
set +x
|
||||
|
||||
OAUTH_TOKEN="$(cat ~/.oauth_token)"
|
||||
cd "$ZIGDIR"
|
||||
./ci/srht/on_master_success "$VERSION" "$OAUTH_TOKEN"
|
||||
fi
|
||||
fi
|
||||
@@ -15,6 +15,16 @@ VERSION="$1"
|
||||
OAUTH_TOKEN="$2"
|
||||
YML_FILE="tmp.yml"
|
||||
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "missing VERSION parameter"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$OAUTH_TOKEN" ]; then
|
||||
echo "missing OAUTH_TOKEN parameter"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat <<EOF >"$YML_FILE"
|
||||
image: alpine/latest
|
||||
packages:
|
||||
|
||||
@@ -6,15 +6,10 @@ pub fn main() !void {
|
||||
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
|
||||
defer arena.deinit();
|
||||
|
||||
const allocator = &arena.allocator;
|
||||
const allocator = arena.allocator();
|
||||
|
||||
const out_dir = "out";
|
||||
try std.fs.cwd().makePath(out_dir);
|
||||
{
|
||||
const out_file = out_dir ++ path.sep_str ++ "index.html";
|
||||
const in_file = "index.html";
|
||||
try render(allocator, in_file, out_file, .html);
|
||||
}
|
||||
{
|
||||
const out_file = out_dir ++ path.sep_str ++ "index.json";
|
||||
const in_file = "index.json";
|
||||
@@ -23,7 +18,7 @@ pub fn main() !void {
|
||||
}
|
||||
|
||||
fn render(
|
||||
allocator: *mem.Allocator,
|
||||
allocator: mem.Allocator,
|
||||
in_file: []const u8,
|
||||
out_file: []const u8,
|
||||
fmt: enum {
|
||||
@@ -79,7 +74,7 @@ fn render(
|
||||
try writer.writeAll(trimmed);
|
||||
}
|
||||
} else {
|
||||
std.debug.warn("line {d}: missing variable: {s}\n", .{ line, var_name });
|
||||
std.debug.print("line {d}: missing variable: {s}\n", .{ line, var_name });
|
||||
try writer.writeAll("(missing)");
|
||||
}
|
||||
state = State.EndBrace;
|
||||
@@ -91,7 +86,7 @@ fn render(
|
||||
state = State.Start;
|
||||
},
|
||||
else => {
|
||||
std.debug.warn("line {d}: invalid byte: '0x{x}'", .{ line, byte });
|
||||
std.debug.print("line {d}: invalid byte: '0x{x}'", .{ line, byte });
|
||||
std.process.exit(1);
|
||||
},
|
||||
},
|
||||
|
||||
@@ -15,6 +15,7 @@ X86_64_WINDOWS_JSON_URL="https://ziglang.org/builds/x86_64-windows-$VERSION.json
|
||||
AARCH64_MACOS_JSON_URL="https://ziglang.org/builds/aarch64-macos-$VERSION.json"
|
||||
X86_64_MACOS_JSON_URL="https://ziglang.org/builds/x86_64-macos-$VERSION.json"
|
||||
X86_64_FREEBSD_JSON_URL="https://ziglang.org/builds/x86_64-freebsd-$VERSION.json"
|
||||
#X86_64_NETBSD_JSON_URL="https://ziglang.org/builds/x86_64-netbsd-$VERSION.json"
|
||||
|
||||
# If any of these fail, it's not really this job failing; rather we have detected
|
||||
# that this job will be called again later when other jobs have completed.
|
||||
@@ -24,6 +25,7 @@ curl --fail -I "$X86_64_WINDOWS_JSON_URL" >/dev/null || exit 0
|
||||
curl --fail -I "$AARCH64_MACOS_JSON_URL" >/dev/null || exit 0
|
||||
curl --fail -I "$X86_64_MACOS_JSON_URL" >/dev/null || exit 0
|
||||
curl --fail -I "$X86_64_FREEBSD_JSON_URL" >/dev/null || exit 0
|
||||
#curl --fail -I "$X86_64_NETBSD_JSON_URL" >/dev/null || exit 0
|
||||
|
||||
# Without --user, this gave me:
|
||||
# ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied
|
||||
@@ -84,16 +86,21 @@ export X86_64_FREEBSD_TARBALL="$(echo "$X86_64_FREEBSD_JSON" | jq .tarball -r)"
|
||||
export X86_64_FREEBSD_BYTESIZE="$(echo "$X86_64_FREEBSD_JSON" | jq .size -r)"
|
||||
export X86_64_FREEBSD_SHASUM="$(echo "$X86_64_FREEBSD_JSON" | jq .shasum -r)"
|
||||
|
||||
#X86_64_NETBSD_JSON=$(curl --fail "$X86_64_NETBSD_JSON_URL" || exit 1)
|
||||
#export X86_64_NETBSD_TARBALL="$(echo "$X86_64_NETBSD_JSON" | jq .tarball -r)"
|
||||
#export X86_64_NETBSD_BYTESIZE="$(echo "$X86_64_NETBSD_JSON" | jq .size -r)"
|
||||
#export X86_64_NETBSD_SHASUM="$(echo "$X86_64_NETBSD_JSON" | jq .shasum -r)"
|
||||
|
||||
export MASTER_DATE="$(date +%Y-%m-%d)"
|
||||
export MASTER_VERSION="$VERSION"
|
||||
|
||||
# Create index.json and update the website repo.
|
||||
cd "$SRCTARBALLDIR/ci/srht"
|
||||
"$ZIG" run update-download-page.zig
|
||||
CIDIR="$(pwd)"
|
||||
|
||||
# Create index.json and index.html and update the website repo.
|
||||
cd "$HOME"
|
||||
git clone git@github.com:ziglang/www.ziglang.org.git
|
||||
git clone --depth 1 git@github.com:ziglang/www.ziglang.org.git
|
||||
cd www.ziglang.org
|
||||
WWWDIR="$(pwd)"
|
||||
|
||||
|
||||
46
ci/zinc/drone.yml
Normal file
46
ci/zinc/drone.yml
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: x86_64-linux
|
||||
platform:
|
||||
os: linux
|
||||
arch: amd64
|
||||
workspace:
|
||||
path: /workspace
|
||||
|
||||
steps:
|
||||
- name: probe
|
||||
image: ci/debian-amd64:11.1-2
|
||||
commands:
|
||||
- ./ci/zinc/linux_probe.sh
|
||||
|
||||
- name: build
|
||||
image: ci/debian-amd64:11.1-2
|
||||
commands:
|
||||
- ./ci/zinc/linux_build.sh
|
||||
|
||||
- name: test
|
||||
depends_on:
|
||||
- build
|
||||
image: ci/debian-amd64:11.1-2
|
||||
commands:
|
||||
- ./ci/zinc/linux_test.sh
|
||||
|
||||
- name: package
|
||||
depends_on:
|
||||
- test
|
||||
when:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- push
|
||||
image: ci/debian-amd64:11.1-2
|
||||
environment:
|
||||
AWS_ACCESS_KEY_ID:
|
||||
from_secret: AWS_ACCESS_KEY_ID
|
||||
AWS_SECRET_ACCESS_KEY:
|
||||
from_secret: AWS_SECRET_ACCESS_KEY
|
||||
SRHT_OAUTH_TOKEN:
|
||||
from_secret: SRHT_OAUTH_TOKEN
|
||||
commands:
|
||||
- ./ci/zinc/linux_package.sh
|
||||
28
ci/zinc/linux_base.sh
Executable file
28
ci/zinc/linux_base.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh
|
||||
|
||||
# https://docs.drone.io/pipeline/docker/syntax/workspace/
|
||||
#
|
||||
# Drone automatically creates a temporary volume, known as your workspace,
|
||||
# where it clones your repository. The workspace is the current working
|
||||
# directory for each step in your pipeline.
|
||||
#
|
||||
# Because the workspace is a volume, filesystem changes are persisted between
|
||||
# pipeline steps. In other words, individual steps can communicate and share
|
||||
# state using the filesystem.
|
||||
#
|
||||
# Workspace volumes are ephemeral. They are created when the pipeline starts
|
||||
# and destroyed after the pipeline completes.
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
ARCH="$(uname -m)"
|
||||
JOBS="-j$(nproc)"
|
||||
|
||||
DEPS_LOCAL="/deps/local"
|
||||
WORKSPACE="$DRONE_WORKSPACE"
|
||||
|
||||
DEBUG_STAGING="$WORKSPACE/_debug/staging"
|
||||
RELEASE_STAGING="$WORKSPACE/_release/staging"
|
||||
|
||||
export PATH=$DEPS_LOCAL/bin:$PATH
|
||||
72
ci/zinc/linux_build.sh
Executable file
72
ci/zinc/linux_build.sh
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/bin/sh
|
||||
|
||||
. ./ci/zinc/linux_base.sh
|
||||
|
||||
ZIG="$DEPS_LOCAL/bin/zig"
|
||||
TARGET="${ARCH}-linux-musl"
|
||||
MCPU="baseline"
|
||||
|
||||
# Make the `zig version` number consistent.
|
||||
# This will affect the cmake command below.
|
||||
git config core.abbrev 9
|
||||
|
||||
# Build debug zig.
|
||||
echo "BUILD debug zig with zig:$($ZIG version)"
|
||||
|
||||
export CC="$ZIG cc -target $TARGET -mcpu=$MCPU"
|
||||
export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU"
|
||||
|
||||
mkdir _debug
|
||||
cd _debug
|
||||
cmake .. \
|
||||
-DCMAKE_INSTALL_PREFIX="$DEBUG_STAGING" \
|
||||
-DCMAKE_PREFIX_PATH="$DEPS_LOCAL" \
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DZIG_TARGET_TRIPLE="$TARGET" \
|
||||
-DZIG_TARGET_MCPU="$MCPU" \
|
||||
-DZIG_STATIC=ON \
|
||||
-GNinja
|
||||
|
||||
# Now cmake will use zig as the C/C++ compiler. We reset the environment variables
|
||||
# so that installation and testing do not get affected by them.
|
||||
unset CC
|
||||
unset CXX
|
||||
|
||||
ninja $JOBS install
|
||||
|
||||
ZIG=$DEBUG_STAGING/bin/zig
|
||||
|
||||
# Here we rebuild zig but this time using the Zig binary we just now produced to
|
||||
# build zig1.o rather than relying on the one built with stage0. See
|
||||
# https://github.com/ziglang/zig/issues/6830 for more details.
|
||||
cmake .. -DZIG_EXECUTABLE="$ZIG"
|
||||
ninja $JOBS install
|
||||
|
||||
cd $WORKSPACE
|
||||
|
||||
# Build release zig.
|
||||
echo "BUILD release zig with zig:$($ZIG version)"
|
||||
export CC="$ZIG cc -target $TARGET -mcpu=$MCPU"
|
||||
export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU"
|
||||
mkdir _release
|
||||
cd _release
|
||||
cmake .. \
|
||||
-DCMAKE_INSTALL_PREFIX="$RELEASE_STAGING" \
|
||||
-DCMAKE_PREFIX_PATH="$DEPS_LOCAL" \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DZIG_TARGET_TRIPLE="$TARGET" \
|
||||
-DZIG_TARGET_MCPU="$MCPU" \
|
||||
-DZIG_STATIC=ON \
|
||||
-GNinja
|
||||
unset CC
|
||||
unset CXX
|
||||
ninja $JOBS install
|
||||
|
||||
cd $WORKSPACE
|
||||
|
||||
# Look for non-conforming code formatting.
|
||||
# Formatting errors can be fixed by running `zig fmt` on the files printed here.
|
||||
$ZIG fmt --check .
|
||||
|
||||
# Explicit exit helps show last command duration.
|
||||
exit
|
||||
48
ci/zinc/linux_package.sh
Executable file
48
ci/zinc/linux_package.sh
Executable file
@@ -0,0 +1,48 @@
|
||||
#!/bin/sh
|
||||
|
||||
. ./ci/zinc/linux_base.sh
|
||||
|
||||
cp LICENSE $RELEASE_STAGING/
|
||||
cp zig-cache/langref.html $RELEASE_STAGING/docs/
|
||||
|
||||
# Remove the unnecessary bin dir in $prefix/bin/zig
|
||||
mv $RELEASE_STAGING/bin/zig $RELEASE_STAGING/
|
||||
rmdir $RELEASE_STAGING/bin
|
||||
|
||||
# Remove the unnecessary zig dir in $prefix/lib/zig/std/std.zig
|
||||
mv $RELEASE_STAGING/lib/zig $RELEASE_STAGING/lib2
|
||||
rmdir $RELEASE_STAGING/lib
|
||||
mv $RELEASE_STAGING/lib2 $RELEASE_STAGING/lib
|
||||
|
||||
VERSION=$($RELEASE_STAGING/zig version)
|
||||
BASENAME="zig-linux-$ARCH-$VERSION"
|
||||
TARBALL="$BASENAME.tar.xz"
|
||||
mv "$RELEASE_STAGING" "$BASENAME"
|
||||
tar cfJ "$TARBALL" "$BASENAME"
|
||||
ls -l "$TARBALL"
|
||||
|
||||
SHASUM=$(sha256sum $TARBALL | cut '-d ' -f1)
|
||||
BYTESIZE=$(wc -c < $TARBALL)
|
||||
|
||||
MANIFEST="manifest.json"
|
||||
touch $MANIFEST
|
||||
echo "{\"tarball\": \"$TARBALL\"," >>$MANIFEST
|
||||
echo "\"shasum\": \"$SHASUM\"," >>$MANIFEST
|
||||
echo "\"size\": \"$BYTESIZE\"}" >>$MANIFEST
|
||||
|
||||
# Publish artifact.
|
||||
s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "$TARBALL" s3://ziglang.org/builds/
|
||||
|
||||
# Publish manifest.
|
||||
s3cmd put -P --add-header="cache-control: max-age=0, must-revalidate" "$MANIFEST" "s3://ziglang.org/builds/$ARCH-linux-$VERSION.json"
|
||||
|
||||
# Avoid leaking oauth token.
|
||||
set +x
|
||||
|
||||
cd $WORKSPACE
|
||||
./ci/srht/on_master_success "$VERSION" "$SRHT_OAUTH_TOKEN"
|
||||
|
||||
set -x
|
||||
|
||||
# Explicit exit helps show last command duration.
|
||||
exit
|
||||
10
ci/zinc/linux_probe.sh
Executable file
10
ci/zinc/linux_probe.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
. ./ci/zinc/linux_base.sh
|
||||
|
||||
# Probe CPU/brand details.
|
||||
echo "lscpu:"
|
||||
(lscpu | sed 's,^, : ,') 1>&2
|
||||
|
||||
# Explicit exit helps show last command duration.
|
||||
exit
|
||||
40
ci/zinc/linux_test.sh
Executable file
40
ci/zinc/linux_test.sh
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/bin/sh
|
||||
|
||||
. ./ci/zinc/linux_base.sh
|
||||
|
||||
ZIG=$DEBUG_STAGING/bin/zig
|
||||
|
||||
$ZIG test test/behavior.zig -fno-stage1 -fLLVM -I test
|
||||
$ZIG test test/behavior.zig -fno-stage1 -ofmt=c -I test
|
||||
$ZIG test test/behavior.zig -fno-stage1 -target wasm32-wasi --test-cmd wasmtime --test-cmd-bin
|
||||
|
||||
$ZIG build test-behavior -fqemu -fwasmtime
|
||||
$ZIG build test-compiler-rt -fqemu -fwasmtime
|
||||
$ZIG build test-std -fqemu -fwasmtime
|
||||
$ZIG build test-minilibc -fqemu -fwasmtime
|
||||
$ZIG build test-compare-output -fqemu -fwasmtime
|
||||
$ZIG build test-standalone -fqemu -fwasmtime
|
||||
$ZIG build test-stack-traces -fqemu -fwasmtime
|
||||
$ZIG build test-cli -fqemu -fwasmtime
|
||||
$ZIG build test-asm-link -fqemu -fwasmtime
|
||||
$ZIG build test-runtime-safety -fqemu -fwasmtime
|
||||
$ZIG build test-translate-c -fqemu -fwasmtime
|
||||
$ZIG build test-run-translated-c -fqemu -fwasmtime
|
||||
$ZIG build docs -fqemu -fwasmtime
|
||||
$ZIG build # test building self-hosted without LLVM
|
||||
$ZIG build -Dtarget=arm-linux-musleabihf # test building self-hosted for 32-bit arm
|
||||
$ZIG build test-fmt -fqemu -fwasmtime
|
||||
$ZIG build test-stage2 -fqemu -fwasmtime
|
||||
|
||||
# Produce the experimental std lib documentation.
|
||||
mkdir -p $RELEASE_STAGING/docs/std
|
||||
$ZIG test lib/std/std.zig \
|
||||
--zig-lib-dir lib \
|
||||
-femit-docs=$RELEASE_STAGING/docs/std \
|
||||
-fno-emit-bin
|
||||
|
||||
# Look for HTML errors.
|
||||
tidy --drop-empty-elements no -qe zig-cache/langref.html
|
||||
|
||||
# Explicit exit helps show last command duration.
|
||||
exit
|
||||
@@ -9,27 +9,31 @@
|
||||
|
||||
find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h
|
||||
PATHS
|
||||
/usr/lib/llvm/12/include
|
||||
/usr/lib/llvm-12/include
|
||||
/usr/lib/llvm-12.0/include
|
||||
/usr/local/llvm120/include
|
||||
/usr/local/llvm12/include
|
||||
/usr/lib/llvm/13/include
|
||||
/usr/lib/llvm-13/include
|
||||
/usr/lib/llvm-13.0/include
|
||||
/usr/local/llvm130/include
|
||||
/usr/local/llvm13/include
|
||||
/usr/local/opt/llvm@13/include
|
||||
/opt/homebrew/opt/llvm@13/include
|
||||
/mingw64/include
|
||||
)
|
||||
|
||||
if(ZIG_PREFER_CLANG_CPP_DYLIB)
|
||||
find_library(CLANG_LIBRARIES
|
||||
NAMES
|
||||
clang-cpp-12.0
|
||||
clang-cpp120
|
||||
clang-cpp-13.0
|
||||
clang-cpp130
|
||||
clang-cpp
|
||||
PATHS
|
||||
${CLANG_LIBDIRS}
|
||||
/usr/lib/llvm/12/lib
|
||||
/usr/lib/llvm/12/lib64
|
||||
/usr/lib/llvm-12/lib
|
||||
/usr/local/llvm120/lib
|
||||
/usr/local/llvm12/lib
|
||||
/usr/lib/llvm/13/lib
|
||||
/usr/lib/llvm/13/lib64
|
||||
/usr/lib/llvm-13/lib
|
||||
/usr/local/llvm130/lib
|
||||
/usr/local/llvm13/lib
|
||||
/usr/local/opt/llvm@13/lib
|
||||
/opt/homebrew/opt/llvm@13/lib
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -39,11 +43,13 @@ if(NOT CLANG_LIBRARIES)
|
||||
find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_}
|
||||
PATHS
|
||||
${CLANG_LIBDIRS}
|
||||
/usr/lib/llvm/12/lib
|
||||
/usr/lib/llvm-12/lib
|
||||
/usr/lib/llvm-12.0/lib
|
||||
/usr/local/llvm120/lib
|
||||
/usr/local/llvm12/lib
|
||||
/usr/lib/llvm/13/lib
|
||||
/usr/lib/llvm-13/lib
|
||||
/usr/lib/llvm-13.0/lib
|
||||
/usr/local/llvm130/lib
|
||||
/usr/local/llvm13/lib
|
||||
/usr/local/opt/llvm@13/lib
|
||||
/opt/homebrew/opt/llvm@13/lib
|
||||
/mingw64/lib
|
||||
/c/msys64/mingw64/lib
|
||||
c:\\msys64\\mingw64\\lib
|
||||
|
||||
@@ -8,16 +8,20 @@
|
||||
|
||||
find_path(LLD_INCLUDE_DIRS NAMES lld/Common/Driver.h
|
||||
PATHS
|
||||
/usr/lib/llvm-12/include
|
||||
/usr/local/llvm120/include
|
||||
/usr/local/llvm12/include
|
||||
/usr/lib/llvm-13/include
|
||||
/usr/local/llvm130/include
|
||||
/usr/local/llvm13/include
|
||||
/usr/local/opt/llvm@13/include
|
||||
/opt/homebrew/opt/llvm@13/include
|
||||
/mingw64/include)
|
||||
|
||||
find_library(LLD_LIBRARY NAMES lld-12.0 lld120 lld
|
||||
find_library(LLD_LIBRARY NAMES lld-13.0 lld130 lld
|
||||
PATHS
|
||||
/usr/lib/llvm-12/lib
|
||||
/usr/local/llvm120/lib
|
||||
/usr/local/llvm12/lib
|
||||
/usr/lib/llvm-13/lib
|
||||
/usr/local/llvm130/lib
|
||||
/usr/local/llvm13/lib
|
||||
/usr/local/opt/llvm@13/lib
|
||||
/opt/homebrew/opt/llvm@13/lib
|
||||
)
|
||||
if(EXISTS ${LLD_LIBRARY})
|
||||
set(LLD_LIBRARIES ${LLD_LIBRARY})
|
||||
@@ -27,9 +31,11 @@ else()
|
||||
find_library(LLD_${_prettylibname_}_LIB NAMES ${_libname_}
|
||||
PATHS
|
||||
${LLD_LIBDIRS}
|
||||
/usr/lib/llvm-12/lib
|
||||
/usr/local/llvm120/lib
|
||||
/usr/local/llvm12/lib
|
||||
/usr/lib/llvm-13/lib
|
||||
/usr/local/llvm130/lib
|
||||
/usr/local/llvm13/lib
|
||||
/usr/local/opt/llvm@13/lib
|
||||
/opt/homebrew/opt/llvm@13/lib
|
||||
/mingw64/lib
|
||||
/c/msys64/mingw64/lib
|
||||
c:/msys64/mingw64/lib)
|
||||
@@ -42,8 +48,8 @@ else()
|
||||
FIND_AND_ADD_LLD_LIB(lldMinGW)
|
||||
FIND_AND_ADD_LLD_LIB(lldELF)
|
||||
FIND_AND_ADD_LLD_LIB(lldCOFF)
|
||||
FIND_AND_ADD_LLD_LIB(lldMachO)
|
||||
FIND_AND_ADD_LLD_LIB(lldWasm)
|
||||
FIND_AND_ADD_LLD_LIB(lldMachO)
|
||||
FIND_AND_ADD_LLD_LIB(lldReaderWriter)
|
||||
FIND_AND_ADD_LLD_LIB(lldCore)
|
||||
FIND_AND_ADD_LLD_LIB(lldYAML)
|
||||
|
||||
@@ -9,37 +9,41 @@
|
||||
|
||||
find_path(LLVM_INCLUDE_DIRS NAMES llvm/IR/IRBuilder.h
|
||||
PATHS
|
||||
/usr/lib/llvm/12/include
|
||||
/usr/lib/llvm-12/include
|
||||
/usr/lib/llvm-12.0/include
|
||||
/usr/local/llvm12/include
|
||||
/usr/local/llvm120/include
|
||||
/usr/lib/llvm/13/include
|
||||
/usr/lib/llvm-13/include
|
||||
/usr/lib/llvm-13.0/include
|
||||
/usr/local/llvm13/include
|
||||
/usr/local/llvm130/include
|
||||
/usr/local/opt/llvm@13/include
|
||||
/opt/homebrew/opt/llvm@13/include
|
||||
/mingw64/include
|
||||
)
|
||||
|
||||
if(ZIG_PREFER_CLANG_CPP_DYLIB)
|
||||
find_library(LLVM_LIBRARIES
|
||||
NAMES
|
||||
LLVM-12.0
|
||||
LLVM-12
|
||||
LLVM-120
|
||||
LLVM-13.0
|
||||
LLVM-13
|
||||
LLVM-130
|
||||
LLVM
|
||||
PATHS
|
||||
${LLVM_LIBDIRS}
|
||||
/usr/lib/llvm/12/lib
|
||||
/usr/lib/llvm/12/lib64
|
||||
/usr/lib/llvm-12/lib
|
||||
/usr/local/llvm12/lib
|
||||
/usr/local/llvm120/lib
|
||||
/usr/lib/llvm/13/lib
|
||||
/usr/lib/llvm/13/lib64
|
||||
/usr/lib/llvm-13/lib
|
||||
/usr/local/llvm13/lib
|
||||
/usr/local/llvm130/lib
|
||||
/usr/local/opt/llvm@13/lib
|
||||
/opt/homebrew/opt/llvm@13/lib
|
||||
)
|
||||
|
||||
find_program(LLVM_CONFIG_EXE
|
||||
NAMES llvm-config-12 llvm-config-12.0 llvm-config120 llvm-config12 llvm-config
|
||||
NAMES llvm-config-13 llvm-config-13.0 llvm-config130 llvm-config13 llvm-config
|
||||
PATHS
|
||||
"/mingw64/bin"
|
||||
"/c/msys64/mingw64/bin"
|
||||
"c:/msys64/mingw64/bin"
|
||||
"C:/Libraries/llvm-12.0.0/bin")
|
||||
"C:/Libraries/llvm-13.0.0/bin")
|
||||
|
||||
if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND")
|
||||
message(FATAL_ERROR "unable to find llvm-config")
|
||||
@@ -54,23 +58,23 @@ if(ZIG_PREFER_CLANG_CPP_DYLIB)
|
||||
OUTPUT_VARIABLE LLVM_CONFIG_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
if("${LLVM_CONFIG_VERSION}" VERSION_LESS 12)
|
||||
message(FATAL_ERROR "expected LLVM 12.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
|
||||
if("${LLVM_CONFIG_VERSION}" VERSION_LESS 13)
|
||||
message(FATAL_ERROR "expected LLVM 13.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
|
||||
endif()
|
||||
if("${LLVM_CONFIG_VERSION}" VERSION_EQUAL 13)
|
||||
message(FATAL_ERROR "expected LLVM 12.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
|
||||
if("${LLVM_CONFIG_VERSION}" VERSION_EQUAL 14)
|
||||
message(FATAL_ERROR "expected LLVM 13.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
|
||||
endif()
|
||||
if("${LLVM_CONFIG_VERSION}" VERSION_GREATER 13)
|
||||
message(FATAL_ERROR "expected LLVM 12.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
|
||||
if("${LLVM_CONFIG_VERSION}" VERSION_GREATER 14)
|
||||
message(FATAL_ERROR "expected LLVM 13.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
|
||||
endif()
|
||||
elseif(ZIG_USE_LLVM_CONFIG)
|
||||
find_program(LLVM_CONFIG_EXE
|
||||
NAMES llvm-config-12 llvm-config-12.0 llvm-config120 llvm-config12 llvm-config
|
||||
NAMES llvm-config-13 llvm-config-13.0 llvm-config130 llvm-config13 llvm-config
|
||||
PATHS
|
||||
"/mingw64/bin"
|
||||
"/c/msys64/mingw64/bin"
|
||||
"c:/msys64/mingw64/bin"
|
||||
"C:/Libraries/llvm-12.0.0/bin")
|
||||
"C:/Libraries/llvm-13.0.0/bin")
|
||||
|
||||
if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND")
|
||||
message(FATAL_ERROR "unable to find llvm-config")
|
||||
@@ -85,14 +89,14 @@ elseif(ZIG_USE_LLVM_CONFIG)
|
||||
OUTPUT_VARIABLE LLVM_CONFIG_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
if("${LLVM_CONFIG_VERSION}" VERSION_LESS 12)
|
||||
message(FATAL_ERROR "expected LLVM 12.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
|
||||
if("${LLVM_CONFIG_VERSION}" VERSION_LESS 13)
|
||||
message(FATAL_ERROR "expected LLVM 13.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
|
||||
endif()
|
||||
if("${LLVM_CONFIG_VERSION}" VERSION_EQUAL 13)
|
||||
message(FATAL_ERROR "expected LLVM 12.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
|
||||
if("${LLVM_CONFIG_VERSION}" VERSION_EQUAL 14)
|
||||
message(FATAL_ERROR "expected LLVM 13.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
|
||||
endif()
|
||||
if("${LLVM_CONFIG_VERSION}" VERSION_GREATER 13)
|
||||
message(FATAL_ERROR "expected LLVM 12.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
|
||||
if("${LLVM_CONFIG_VERSION}" VERSION_GREATER 14)
|
||||
message(FATAL_ERROR "expected LLVM 13.x but found ${LLVM_CONFIG_VERSION} using ${LLVM_CONFIG_EXE}")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
@@ -166,7 +170,7 @@ elseif(ZIG_USE_LLVM_CONFIG)
|
||||
set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
|
||||
|
||||
if(NOT LLVM_LIBRARIES)
|
||||
find_library(LLVM_LIBRARIES NAMES LLVM LLVM-12 LLVM-12.0)
|
||||
find_library(LLVM_LIBRARIES NAMES LLVM LLVM-13 LLVM-13.0)
|
||||
endif()
|
||||
|
||||
link_directories("${CMAKE_PREFIX_PATH}/lib")
|
||||
@@ -180,11 +184,13 @@ else()
|
||||
find_library(LLVM_${_prettylibname_}_LIB NAMES ${_libname_}
|
||||
PATHS
|
||||
${LLVM_LIBDIRS}
|
||||
/usr/lib/llvm/12/lib
|
||||
/usr/lib/llvm-12/lib
|
||||
/usr/lib/llvm-12.0/lib
|
||||
/usr/local/llvm120/lib
|
||||
/usr/local/llvm12/lib
|
||||
/usr/lib/llvm/13/lib
|
||||
/usr/lib/llvm-13/lib
|
||||
/usr/lib/llvm-13.0/lib
|
||||
/usr/local/llvm130/lib
|
||||
/usr/local/llvm13/lib
|
||||
/usr/local/opt/llvm@13/lib
|
||||
/opt/homebrew/opt/llvm@13/lib
|
||||
/mingw64/lib
|
||||
/c/msys64/mingw64/lib
|
||||
c:\\msys64\\mingw64\\lib)
|
||||
@@ -213,6 +219,7 @@ else()
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyAsmParser)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyCodeGen)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyDesc)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyUtils)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMWebAssemblyInfo)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMSystemZDisassembler)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMSystemZAsmParser)
|
||||
@@ -288,11 +295,12 @@ else()
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMOrcJIT)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMMCJIT)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMJITLink)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMOrcTargetProcess)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMOrcShared)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMInterpreter)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMExecutionEngine)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMRuntimeDyld)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMOrcTargetProcess)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMOrcShared)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMDWP)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMSymbolize)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoPDB)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoGSYM)
|
||||
@@ -305,7 +313,6 @@ else()
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMCFGuard)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMCoroutines)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMObjCARCOpts)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMHelloNew)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMipo)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMVectorize)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMLinker)
|
||||
@@ -317,6 +324,7 @@ else()
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMGlobalISel)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMMIRParser)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMAsmPrinter)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoMSF)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoDWARF)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMSelectionDAG)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMCodeGen)
|
||||
@@ -338,7 +346,6 @@ else()
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMMCParser)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMMC)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoCodeView)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMDebugInfoMSF)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMBitReader)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMCore)
|
||||
FIND_AND_ADD_LLVM_LIB(LLVMRemarks)
|
||||
|
||||
647
doc/docgen.zig
647
doc/docgen.zig
File diff suppressed because it is too large
Load Diff
3663
doc/langref.html.in
3663
doc/langref.html.in
File diff suppressed because it is too large
Load Diff
276
lib/include/__clang_cuda_device_functions.h
vendored
276
lib/include/__clang_cuda_device_functions.h
vendored
@@ -34,10 +34,12 @@ __DEVICE__ unsigned long long __brevll(unsigned long long __a) {
|
||||
return __nv_brevll(__a);
|
||||
}
|
||||
#if defined(__cplusplus)
|
||||
__DEVICE__ void __brkpt() { asm volatile("brkpt;"); }
|
||||
__DEVICE__ void __brkpt() { __asm__ __volatile__("brkpt;"); }
|
||||
__DEVICE__ void __brkpt(int __a) { __brkpt(); }
|
||||
#else
|
||||
__DEVICE__ void __attribute__((overloadable)) __brkpt(void) { asm volatile("brkpt;"); }
|
||||
__DEVICE__ void __attribute__((overloadable)) __brkpt(void) {
|
||||
__asm__ __volatile__("brkpt;");
|
||||
}
|
||||
__DEVICE__ void __attribute__((overloadable)) __brkpt(int __a) { __brkpt(); }
|
||||
#endif
|
||||
__DEVICE__ unsigned int __byte_perm(unsigned int __a, unsigned int __b,
|
||||
@@ -507,7 +509,7 @@ __DEVICE__ float __powf(float __a, float __b) {
|
||||
}
|
||||
|
||||
// Parameter must have a known integer value.
|
||||
#define __prof_trigger(__a) asm __volatile__("pmevent \t%0;" ::"i"(__a))
|
||||
#define __prof_trigger(__a) __asm__ __volatile__("pmevent \t%0;" ::"i"(__a))
|
||||
__DEVICE__ int __rhadd(int __a, int __b) { return __nv_rhadd(__a, __b); }
|
||||
__DEVICE__ unsigned int __sad(int __a, int __b, unsigned int __c) {
|
||||
return __nv_sad(__a, __b, __c);
|
||||
@@ -526,7 +528,7 @@ __DEVICE__ float __tanf(float __a) { return __nv_fast_tanf(__a); }
|
||||
__DEVICE__ void __threadfence(void) { __nvvm_membar_gl(); }
|
||||
__DEVICE__ void __threadfence_block(void) { __nvvm_membar_cta(); };
|
||||
__DEVICE__ void __threadfence_system(void) { __nvvm_membar_sys(); };
|
||||
__DEVICE__ void __trap(void) { asm volatile("trap;"); }
|
||||
__DEVICE__ void __trap(void) { __asm__ __volatile__("trap;"); }
|
||||
__DEVICE__ unsigned int __uAtomicAdd(unsigned int *__p, unsigned int __v) {
|
||||
return __nvvm_atom_add_gen_i((int *)__p, __v);
|
||||
}
|
||||
@@ -1051,122 +1053,136 @@ __DEVICE__ unsigned int __bool2mask(unsigned int __a, int shift) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vabs2(unsigned int __a) {
|
||||
unsigned int r;
|
||||
asm("vabsdiff2.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(0), "r"(0));
|
||||
__asm__("vabsdiff2.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(0), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vabs4(unsigned int __a) {
|
||||
unsigned int r;
|
||||
asm("vabsdiff4.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(0), "r"(0));
|
||||
__asm__("vabsdiff4.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(0), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vabsdiffs2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vabsdiff2.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vabsdiff2.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
|
||||
__DEVICE__ unsigned int __vabsdiffs4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vabsdiff4.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vabsdiff4.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vabsdiffu2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vabsdiff2.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vabsdiff2.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vabsdiffu4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vabsdiff4.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vabsdiff4.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vabsss2(unsigned int __a) {
|
||||
unsigned int r;
|
||||
asm("vabsdiff2.s32.s32.s32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(0), "r"(0));
|
||||
__asm__("vabsdiff2.s32.s32.s32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(0), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vabsss4(unsigned int __a) {
|
||||
unsigned int r;
|
||||
asm("vabsdiff4.s32.s32.s32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(0), "r"(0));
|
||||
__asm__("vabsdiff4.s32.s32.s32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(0), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vadd2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vadd2.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vadd2.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vadd4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vadd4.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vadd4.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vaddss2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vadd2.s32.s32.s32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vadd2.s32.s32.s32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vaddss4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vadd4.s32.s32.s32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vadd4.s32.s32.s32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vaddus2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vadd2.u32.u32.u32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vadd2.u32.u32.u32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vaddus4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vadd4.u32.u32.u32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vadd4.u32.u32.u32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vavgs2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vavrg2.s32.s32.s32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vavrg2.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vavgs4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vavrg4.s32.s32.s32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vavrg4.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vavgu2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vavrg2.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vavrg2.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vavgu4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vavrg4.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vavrg4.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vseteq2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset2.u32.u32.eq %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset2.u32.u32.eq %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpeq2(unsigned int __a, unsigned int __b) {
|
||||
@@ -1174,7 +1190,9 @@ __DEVICE__ unsigned int __vcmpeq2(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vseteq4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset4.u32.u32.eq %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset4.u32.u32.eq %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpeq4(unsigned int __a, unsigned int __b) {
|
||||
@@ -1182,7 +1200,9 @@ __DEVICE__ unsigned int __vcmpeq4(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetges2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset2.s32.s32.ge %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset2.s32.s32.ge %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpges2(unsigned int __a, unsigned int __b) {
|
||||
@@ -1190,7 +1210,9 @@ __DEVICE__ unsigned int __vcmpges2(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetges4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset4.s32.s32.ge %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset4.s32.s32.ge %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpges4(unsigned int __a, unsigned int __b) {
|
||||
@@ -1198,7 +1220,9 @@ __DEVICE__ unsigned int __vcmpges4(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetgeu2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset2.u32.u32.ge %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset2.u32.u32.ge %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpgeu2(unsigned int __a, unsigned int __b) {
|
||||
@@ -1206,7 +1230,9 @@ __DEVICE__ unsigned int __vcmpgeu2(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetgeu4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset4.u32.u32.ge %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset4.u32.u32.ge %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpgeu4(unsigned int __a, unsigned int __b) {
|
||||
@@ -1214,7 +1240,9 @@ __DEVICE__ unsigned int __vcmpgeu4(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetgts2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset2.s32.s32.gt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset2.s32.s32.gt %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpgts2(unsigned int __a, unsigned int __b) {
|
||||
@@ -1222,7 +1250,9 @@ __DEVICE__ unsigned int __vcmpgts2(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetgts4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset4.s32.s32.gt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset4.s32.s32.gt %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpgts4(unsigned int __a, unsigned int __b) {
|
||||
@@ -1230,7 +1260,9 @@ __DEVICE__ unsigned int __vcmpgts4(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetgtu2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset2.u32.u32.gt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset2.u32.u32.gt %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpgtu2(unsigned int __a, unsigned int __b) {
|
||||
@@ -1238,7 +1270,9 @@ __DEVICE__ unsigned int __vcmpgtu2(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetgtu4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset4.u32.u32.gt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset4.u32.u32.gt %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpgtu4(unsigned int __a, unsigned int __b) {
|
||||
@@ -1246,7 +1280,9 @@ __DEVICE__ unsigned int __vcmpgtu4(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetles2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset2.s32.s32.le %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset2.s32.s32.le %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmples2(unsigned int __a, unsigned int __b) {
|
||||
@@ -1254,7 +1290,9 @@ __DEVICE__ unsigned int __vcmples2(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetles4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset4.s32.s32.le %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset4.s32.s32.le %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmples4(unsigned int __a, unsigned int __b) {
|
||||
@@ -1262,7 +1300,9 @@ __DEVICE__ unsigned int __vcmples4(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetleu2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset2.u32.u32.le %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset2.u32.u32.le %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpleu2(unsigned int __a, unsigned int __b) {
|
||||
@@ -1270,7 +1310,9 @@ __DEVICE__ unsigned int __vcmpleu2(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetleu4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset4.u32.u32.le %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset4.u32.u32.le %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpleu4(unsigned int __a, unsigned int __b) {
|
||||
@@ -1278,7 +1320,9 @@ __DEVICE__ unsigned int __vcmpleu4(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetlts2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset2.s32.s32.lt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset2.s32.s32.lt %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmplts2(unsigned int __a, unsigned int __b) {
|
||||
@@ -1286,7 +1330,9 @@ __DEVICE__ unsigned int __vcmplts2(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetlts4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset4.s32.s32.lt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset4.s32.s32.lt %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmplts4(unsigned int __a, unsigned int __b) {
|
||||
@@ -1294,7 +1340,9 @@ __DEVICE__ unsigned int __vcmplts4(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetltu2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset2.u32.u32.lt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset2.u32.u32.lt %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpltu2(unsigned int __a, unsigned int __b) {
|
||||
@@ -1302,7 +1350,9 @@ __DEVICE__ unsigned int __vcmpltu2(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetltu4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset4.u32.u32.lt %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset4.u32.u32.lt %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpltu4(unsigned int __a, unsigned int __b) {
|
||||
@@ -1310,7 +1360,9 @@ __DEVICE__ unsigned int __vcmpltu4(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetne2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset2.u32.u32.ne %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset2.u32.u32.ne %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpne2(unsigned int __a, unsigned int __b) {
|
||||
@@ -1318,7 +1370,9 @@ __DEVICE__ unsigned int __vcmpne2(unsigned int __a, unsigned int __b) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsetne4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vset4.u32.u32.ne %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vset4.u32.u32.ne %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vcmpne4(unsigned int __a, unsigned int __b) {
|
||||
@@ -1345,94 +1399,112 @@ __DEVICE__ unsigned int __vmaxs2(unsigned int __a, unsigned int __b) {
|
||||
unsigned mask = __vcmpgts2(__a, __b);
|
||||
r = (__a & mask) | (__b & ~mask);
|
||||
} else {
|
||||
asm("vmax2.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vmax2.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
}
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vmaxs4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vmax4.s32.s32.s32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vmax4.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vmaxu2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vmax2.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vmax2.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vmaxu4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vmax4.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vmax4.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vmins2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vmin2.s32.s32.s32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vmin2.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vmins4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vmin4.s32.s32.s32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vmin4.s32.s32.s32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vminu2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vmin2.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vmin2.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vminu4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vmin4.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vmin4.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vsads2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vabsdiff2.s32.s32.s32.add %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vabsdiff2.s32.s32.s32.add %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vsads4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vabsdiff4.s32.s32.s32.add %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vabsdiff4.s32.s32.s32.add %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vsadu2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vabsdiff2.u32.u32.u32.add %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vabsdiff2.u32.u32.u32.add %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vsadu4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vabsdiff4.u32.u32.u32.add %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vabsdiff4.u32.u32.u32.add %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
|
||||
__DEVICE__ unsigned int __vsub2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vsub2.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vsub2.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vneg2(unsigned int __a) { return __vsub2(0, __a); }
|
||||
|
||||
__DEVICE__ unsigned int __vsub4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vsub4.u32.u32.u32 %0,%1,%2,%3;" : "=r"(r) : "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vsub4.u32.u32.u32 %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vneg4(unsigned int __a) { return __vsub4(0, __a); }
|
||||
__DEVICE__ unsigned int __vsubss2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vsub2.s32.s32.s32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vsub2.s32.s32.s32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vnegss2(unsigned int __a) {
|
||||
@@ -1440,9 +1512,9 @@ __DEVICE__ unsigned int __vnegss2(unsigned int __a) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsubss4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vsub4.s32.s32.s32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vsub4.s32.s32.s32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vnegss4(unsigned int __a) {
|
||||
@@ -1450,16 +1522,16 @@ __DEVICE__ unsigned int __vnegss4(unsigned int __a) {
|
||||
}
|
||||
__DEVICE__ unsigned int __vsubus2(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vsub2.u32.u32.u32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vsub2.u32.u32.u32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
__DEVICE__ unsigned int __vsubus4(unsigned int __a, unsigned int __b) {
|
||||
unsigned int r;
|
||||
asm("vsub4.u32.u32.u32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
__asm__("vsub4.u32.u32.u32.sat %0,%1,%2,%3;"
|
||||
: "=r"(r)
|
||||
: "r"(__a), "r"(__b), "r"(0));
|
||||
return r;
|
||||
}
|
||||
#endif // CUDA_VERSION >= 9020
|
||||
|
||||
4
lib/include/__clang_cuda_math.h
vendored
4
lib/include/__clang_cuda_math.h
vendored
@@ -166,6 +166,8 @@ __DEVICE__ long long llrint(double __a) { return __nv_llrint(__a); }
|
||||
__DEVICE__ long long llrintf(float __a) { return __nv_llrintf(__a); }
|
||||
__DEVICE__ long long llround(double __a) { return __nv_llround(__a); }
|
||||
__DEVICE__ long long llroundf(float __a) { return __nv_llroundf(__a); }
|
||||
__DEVICE__ double round(double __a) { return __nv_round(__a); }
|
||||
__DEVICE__ float roundf(float __a) { return __nv_roundf(__a); }
|
||||
__DEVICE__ double log(double __a) { return __nv_log(__a); }
|
||||
__DEVICE__ double log10(double __a) { return __nv_log10(__a); }
|
||||
__DEVICE__ float log10f(float __a) { return __nv_log10f(__a); }
|
||||
@@ -270,8 +272,6 @@ __DEVICE__ float rnorm4df(float __a, float __b, float __c, float __d) {
|
||||
__DEVICE__ float rnormf(int __dim, const float *__t) {
|
||||
return __nv_rnormf(__dim, __t);
|
||||
}
|
||||
__DEVICE__ double round(double __a) { return __nv_round(__a); }
|
||||
__DEVICE__ float roundf(float __a) { return __nv_roundf(__a); }
|
||||
__DEVICE__ double rsqrt(double __a) { return __nv_rsqrt(__a); }
|
||||
__DEVICE__ float rsqrtf(float __a) { return __nv_rsqrtf(__a); }
|
||||
__DEVICE__ double scalbn(double __a, int __b) { return __nv_scalbn(__a, __b); }
|
||||
|
||||
7
lib/include/__clang_cuda_runtime_wrapper.h
vendored
7
lib/include/__clang_cuda_runtime_wrapper.h
vendored
@@ -349,9 +349,14 @@ extern "C" {
|
||||
__device__ int vprintf(const char *, const char *);
|
||||
__device__ void free(void *) __attribute((nothrow));
|
||||
__device__ void *malloc(size_t) __attribute((nothrow)) __attribute__((malloc));
|
||||
|
||||
// __assertfail() used to have a `noreturn` attribute. Unfortunately that
|
||||
// contributed to triggering the longstanding bug in ptxas when assert was used
|
||||
// in sufficiently convoluted code. See
|
||||
// https://bugs.llvm.org/show_bug.cgi?id=27738 for the details.
|
||||
__device__ void __assertfail(const char *__message, const char *__file,
|
||||
unsigned __line, const char *__function,
|
||||
size_t __charSize) __attribute__((noreturn));
|
||||
size_t __charSize);
|
||||
|
||||
// In order for standard assert() macro on linux to work we need to
|
||||
// provide device-side __assert_fail()
|
||||
|
||||
366
lib/include/__clang_hip_cmath.h
vendored
366
lib/include/__clang_hip_cmath.h
vendored
@@ -10,10 +10,11 @@
|
||||
#ifndef __CLANG_HIP_CMATH_H__
|
||||
#define __CLANG_HIP_CMATH_H__
|
||||
|
||||
#if !defined(__HIP__)
|
||||
#if !defined(__HIP__) && !defined(__OPENMP_AMDGCN__)
|
||||
#error "This file is for HIP and OpenMP AMDGCN device compilation only."
|
||||
#endif
|
||||
|
||||
#if !defined(__HIPCC_RTC__)
|
||||
#if defined(__cplusplus)
|
||||
#include <limits>
|
||||
#include <type_traits>
|
||||
@@ -21,102 +22,162 @@
|
||||
#endif
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
#endif // !defined(__HIPCC_RTC__)
|
||||
|
||||
#pragma push_macro("__DEVICE__")
|
||||
#pragma push_macro("__CONSTEXPR__")
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#define __DEVICE__ static __attribute__((always_inline, nothrow))
|
||||
#define __CONSTEXPR__ constexpr
|
||||
#else
|
||||
#define __DEVICE__ static __device__ inline __attribute__((always_inline))
|
||||
#define __CONSTEXPR__
|
||||
#endif // __OPENMP_AMDGCN__
|
||||
|
||||
// Start with functions that cannot be defined by DEF macros below.
|
||||
#if defined(__cplusplus)
|
||||
__DEVICE__ double abs(double __x) { return ::fabs(__x); }
|
||||
__DEVICE__ float abs(float __x) { return ::fabsf(__x); }
|
||||
__DEVICE__ long long abs(long long __n) { return ::llabs(__n); }
|
||||
__DEVICE__ long abs(long __n) { return ::labs(__n); }
|
||||
__DEVICE__ float fma(float __x, float __y, float __z) {
|
||||
#if defined __OPENMP_AMDGCN__
|
||||
__DEVICE__ __CONSTEXPR__ float fabs(float __x) { return ::fabsf(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ float sin(float __x) { return ::sinf(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ float cos(float __x) { return ::cosf(__x); }
|
||||
#endif
|
||||
__DEVICE__ __CONSTEXPR__ double abs(double __x) { return ::fabs(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ float abs(float __x) { return ::fabsf(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ long long abs(long long __n) { return ::llabs(__n); }
|
||||
__DEVICE__ __CONSTEXPR__ long abs(long __n) { return ::labs(__n); }
|
||||
__DEVICE__ __CONSTEXPR__ float fma(float __x, float __y, float __z) {
|
||||
return ::fmaf(__x, __y, __z);
|
||||
}
|
||||
__DEVICE__ int fpclassify(float __x) {
|
||||
#if !defined(__HIPCC_RTC__)
|
||||
// The value returned by fpclassify is platform dependent, therefore it is not
|
||||
// supported by hipRTC.
|
||||
__DEVICE__ __CONSTEXPR__ int fpclassify(float __x) {
|
||||
return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL,
|
||||
FP_ZERO, __x);
|
||||
}
|
||||
__DEVICE__ int fpclassify(double __x) {
|
||||
__DEVICE__ __CONSTEXPR__ int fpclassify(double __x) {
|
||||
return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL,
|
||||
FP_ZERO, __x);
|
||||
}
|
||||
__DEVICE__ float frexp(float __arg, int *__exp) {
|
||||
#endif // !defined(__HIPCC_RTC__)
|
||||
|
||||
__DEVICE__ __CONSTEXPR__ float frexp(float __arg, int *__exp) {
|
||||
return ::frexpf(__arg, __exp);
|
||||
}
|
||||
__DEVICE__ bool isfinite(float __x) { return ::__finitef(__x); }
|
||||
__DEVICE__ bool isfinite(double __x) { return ::__finite(__x); }
|
||||
__DEVICE__ bool isgreater(float __x, float __y) {
|
||||
|
||||
#if defined(__OPENMP_AMDGCN__)
|
||||
// For OpenMP we work around some old system headers that have non-conforming
|
||||
// `isinf(float)` and `isnan(float)` implementations that return an `int`. We do
|
||||
// this by providing two versions of these functions, differing only in the
|
||||
// return type. To avoid conflicting definitions we disable implicit base
|
||||
// function generation. That means we will end up with two specializations, one
|
||||
// per type, but only one has a base function defined by the system header.
|
||||
#pragma omp begin declare variant match( \
|
||||
implementation = {extension(disable_implicit_base)})
|
||||
|
||||
// FIXME: We lack an extension to customize the mangling of the variants, e.g.,
|
||||
// add a suffix. This means we would clash with the names of the variants
|
||||
// (note that we do not create implicit base functions here). To avoid
|
||||
// this clash we add a new trait to some of them that is always true
|
||||
// (this is LLVM after all ;)). It will only influence the mangled name
|
||||
// of the variants inside the inner region and avoid the clash.
|
||||
#pragma omp begin declare variant match(implementation = {vendor(llvm)})
|
||||
|
||||
__DEVICE__ __CONSTEXPR__ int isinf(float __x) { return ::__isinff(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ int isinf(double __x) { return ::__isinf(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ int isfinite(float __x) { return ::__finitef(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ int isfinite(double __x) { return ::__finite(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ int isnan(float __x) { return ::__isnanf(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ int isnan(double __x) { return ::__isnan(__x); }
|
||||
|
||||
#pragma omp end declare variant
|
||||
#endif // defined(__OPENMP_AMDGCN__)
|
||||
|
||||
__DEVICE__ __CONSTEXPR__ bool isinf(float __x) { return ::__isinff(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ bool isinf(double __x) { return ::__isinf(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ bool isfinite(float __x) { return ::__finitef(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ bool isfinite(double __x) { return ::__finite(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ bool isnan(float __x) { return ::__isnanf(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ bool isnan(double __x) { return ::__isnan(__x); }
|
||||
|
||||
#if defined(__OPENMP_AMDGCN__)
|
||||
#pragma omp end declare variant
|
||||
#endif // defined(__OPENMP_AMDGCN__)
|
||||
|
||||
__DEVICE__ __CONSTEXPR__ bool isgreater(float __x, float __y) {
|
||||
return __builtin_isgreater(__x, __y);
|
||||
}
|
||||
__DEVICE__ bool isgreater(double __x, double __y) {
|
||||
__DEVICE__ __CONSTEXPR__ bool isgreater(double __x, double __y) {
|
||||
return __builtin_isgreater(__x, __y);
|
||||
}
|
||||
__DEVICE__ bool isgreaterequal(float __x, float __y) {
|
||||
__DEVICE__ __CONSTEXPR__ bool isgreaterequal(float __x, float __y) {
|
||||
return __builtin_isgreaterequal(__x, __y);
|
||||
}
|
||||
__DEVICE__ bool isgreaterequal(double __x, double __y) {
|
||||
__DEVICE__ __CONSTEXPR__ bool isgreaterequal(double __x, double __y) {
|
||||
return __builtin_isgreaterequal(__x, __y);
|
||||
}
|
||||
__DEVICE__ bool isinf(float __x) { return ::__isinff(__x); }
|
||||
__DEVICE__ bool isinf(double __x) { return ::__isinf(__x); }
|
||||
__DEVICE__ bool isless(float __x, float __y) {
|
||||
__DEVICE__ __CONSTEXPR__ bool isless(float __x, float __y) {
|
||||
return __builtin_isless(__x, __y);
|
||||
}
|
||||
__DEVICE__ bool isless(double __x, double __y) {
|
||||
__DEVICE__ __CONSTEXPR__ bool isless(double __x, double __y) {
|
||||
return __builtin_isless(__x, __y);
|
||||
}
|
||||
__DEVICE__ bool islessequal(float __x, float __y) {
|
||||
__DEVICE__ __CONSTEXPR__ bool islessequal(float __x, float __y) {
|
||||
return __builtin_islessequal(__x, __y);
|
||||
}
|
||||
__DEVICE__ bool islessequal(double __x, double __y) {
|
||||
__DEVICE__ __CONSTEXPR__ bool islessequal(double __x, double __y) {
|
||||
return __builtin_islessequal(__x, __y);
|
||||
}
|
||||
__DEVICE__ bool islessgreater(float __x, float __y) {
|
||||
__DEVICE__ __CONSTEXPR__ bool islessgreater(float __x, float __y) {
|
||||
return __builtin_islessgreater(__x, __y);
|
||||
}
|
||||
__DEVICE__ bool islessgreater(double __x, double __y) {
|
||||
__DEVICE__ __CONSTEXPR__ bool islessgreater(double __x, double __y) {
|
||||
return __builtin_islessgreater(__x, __y);
|
||||
}
|
||||
__DEVICE__ bool isnan(float __x) { return ::__isnanf(__x); }
|
||||
__DEVICE__ bool isnan(double __x) { return ::__isnan(__x); }
|
||||
__DEVICE__ bool isnormal(float __x) { return __builtin_isnormal(__x); }
|
||||
__DEVICE__ bool isnormal(double __x) { return __builtin_isnormal(__x); }
|
||||
__DEVICE__ bool isunordered(float __x, float __y) {
|
||||
__DEVICE__ __CONSTEXPR__ bool isnormal(float __x) {
|
||||
return __builtin_isnormal(__x);
|
||||
}
|
||||
__DEVICE__ __CONSTEXPR__ bool isnormal(double __x) {
|
||||
return __builtin_isnormal(__x);
|
||||
}
|
||||
__DEVICE__ __CONSTEXPR__ bool isunordered(float __x, float __y) {
|
||||
return __builtin_isunordered(__x, __y);
|
||||
}
|
||||
__DEVICE__ bool isunordered(double __x, double __y) {
|
||||
__DEVICE__ __CONSTEXPR__ bool isunordered(double __x, double __y) {
|
||||
return __builtin_isunordered(__x, __y);
|
||||
}
|
||||
__DEVICE__ float modf(float __x, float *__iptr) { return ::modff(__x, __iptr); }
|
||||
__DEVICE__ float pow(float __base, int __iexp) {
|
||||
__DEVICE__ __CONSTEXPR__ float modf(float __x, float *__iptr) {
|
||||
return ::modff(__x, __iptr);
|
||||
}
|
||||
__DEVICE__ __CONSTEXPR__ float pow(float __base, int __iexp) {
|
||||
return ::powif(__base, __iexp);
|
||||
}
|
||||
__DEVICE__ double pow(double __base, int __iexp) {
|
||||
__DEVICE__ __CONSTEXPR__ double pow(double __base, int __iexp) {
|
||||
return ::powi(__base, __iexp);
|
||||
}
|
||||
__DEVICE__ float remquo(float __x, float __y, int *__quo) {
|
||||
__DEVICE__ __CONSTEXPR__ float remquo(float __x, float __y, int *__quo) {
|
||||
return ::remquof(__x, __y, __quo);
|
||||
}
|
||||
__DEVICE__ float scalbln(float __x, long int __n) {
|
||||
__DEVICE__ __CONSTEXPR__ float scalbln(float __x, long int __n) {
|
||||
return ::scalblnf(__x, __n);
|
||||
}
|
||||
__DEVICE__ bool signbit(float __x) { return ::__signbitf(__x); }
|
||||
__DEVICE__ bool signbit(double __x) { return ::__signbit(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ bool signbit(float __x) { return ::__signbitf(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ bool signbit(double __x) { return ::__signbit(__x); }
|
||||
|
||||
// Notably missing above is nexttoward. We omit it because
|
||||
// ocml doesn't provide an implementation, and we don't want to be in the
|
||||
// business of implementing tricky libm functions in this header.
|
||||
|
||||
// Other functions.
|
||||
__DEVICE__ _Float16 fma(_Float16 __x, _Float16 __y, _Float16 __z) {
|
||||
__DEVICE__ __CONSTEXPR__ _Float16 fma(_Float16 __x, _Float16 __y,
|
||||
_Float16 __z) {
|
||||
return __ocml_fma_f16(__x, __y, __z);
|
||||
}
|
||||
__DEVICE__ _Float16 pow(_Float16 __base, int __iexp) {
|
||||
__DEVICE__ __CONSTEXPR__ _Float16 pow(_Float16 __base, int __iexp) {
|
||||
return __ocml_pown_f16(__base, __iexp);
|
||||
}
|
||||
|
||||
#ifndef __OPENMP_AMDGCN__
|
||||
// BEGIN DEF_FUN and HIP_OVERLOAD
|
||||
|
||||
// BEGIN DEF_FUN
|
||||
@@ -127,18 +188,19 @@ __DEVICE__ _Float16 pow(_Float16 __base, int __iexp) {
|
||||
|
||||
// Define cmath functions with float argument and returns __retty.
|
||||
#define __DEF_FUN1(__retty, __func) \
|
||||
__DEVICE__ \
|
||||
__retty __func(float __x) { return __func##f(__x); }
|
||||
__DEVICE__ __CONSTEXPR__ __retty __func(float __x) { return __func##f(__x); }
|
||||
|
||||
// Define cmath functions with two float arguments and returns __retty.
|
||||
#define __DEF_FUN2(__retty, __func) \
|
||||
__DEVICE__ \
|
||||
__retty __func(float __x, float __y) { return __func##f(__x, __y); }
|
||||
__DEVICE__ __CONSTEXPR__ __retty __func(float __x, float __y) { \
|
||||
return __func##f(__x, __y); \
|
||||
}
|
||||
|
||||
// Define cmath functions with a float and an int argument and returns __retty.
|
||||
#define __DEF_FUN2_FI(__retty, __func) \
|
||||
__DEVICE__ \
|
||||
__retty __func(float __x, int __y) { return __func##f(__x, __y); }
|
||||
__DEVICE__ __CONSTEXPR__ __retty __func(float __x, int __y) { \
|
||||
return __func##f(__x, __y); \
|
||||
}
|
||||
|
||||
__DEF_FUN1(float, acos)
|
||||
__DEF_FUN1(float, acosh)
|
||||
@@ -207,11 +269,117 @@ template <bool __B, class __T = void> struct __hip_enable_if {};
|
||||
|
||||
template <class __T> struct __hip_enable_if<true, __T> { typedef __T type; };
|
||||
|
||||
namespace __hip {
|
||||
template <class _Tp> struct is_integral {
|
||||
enum { value = 0 };
|
||||
};
|
||||
template <> struct is_integral<bool> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_integral<char> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_integral<signed char> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_integral<unsigned char> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_integral<wchar_t> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_integral<short> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_integral<unsigned short> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_integral<int> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_integral<unsigned int> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_integral<long> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_integral<unsigned long> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_integral<long long> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_integral<unsigned long long> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
|
||||
// ToDo: specializes is_arithmetic<_Float16>
|
||||
template <class _Tp> struct is_arithmetic {
|
||||
enum { value = 0 };
|
||||
};
|
||||
template <> struct is_arithmetic<bool> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<char> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<signed char> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<unsigned char> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<wchar_t> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<short> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<unsigned short> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<int> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<unsigned int> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<long> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<unsigned long> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<long long> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<unsigned long long> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<float> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
template <> struct is_arithmetic<double> {
|
||||
enum { value = 1 };
|
||||
};
|
||||
|
||||
struct true_type {
|
||||
static const __constant__ bool value = true;
|
||||
};
|
||||
struct false_type {
|
||||
static const __constant__ bool value = false;
|
||||
};
|
||||
|
||||
template <typename __T, typename __U> struct is_same : public false_type {};
|
||||
template <typename __T> struct is_same<__T, __T> : public true_type {};
|
||||
|
||||
template <typename __T> struct add_rvalue_reference { typedef __T &&type; };
|
||||
|
||||
template <typename __T> typename add_rvalue_reference<__T>::type declval();
|
||||
|
||||
// decltype is only available in C++11 and above.
|
||||
#if __cplusplus >= 201103L
|
||||
// __hip_promote
|
||||
namespace __hip {
|
||||
|
||||
template <class _Tp> struct __numeric_type {
|
||||
static void __test(...);
|
||||
static _Float16 __test(_Float16);
|
||||
@@ -227,8 +395,8 @@ template <class _Tp> struct __numeric_type {
|
||||
// No support for long double, use double instead.
|
||||
static double __test(long double);
|
||||
|
||||
typedef decltype(__test(std::declval<_Tp>())) type;
|
||||
static const bool value = !std::is_same<type, void>::value;
|
||||
typedef decltype(__test(declval<_Tp>())) type;
|
||||
static const bool value = !is_same<type, void>::value;
|
||||
};
|
||||
|
||||
template <> struct __numeric_type<void> { static const bool value = true; };
|
||||
@@ -271,18 +439,17 @@ public:
|
||||
|
||||
template <class _A1, class _A2 = void, class _A3 = void>
|
||||
class __promote : public __promote_imp<_A1, _A2, _A3> {};
|
||||
|
||||
} // namespace __hip
|
||||
#endif //__cplusplus >= 201103L
|
||||
} // namespace __hip
|
||||
|
||||
// __HIP_OVERLOAD1 is used to resolve function calls with integer argument to
|
||||
// avoid compilation error due to ambibuity. e.g. floor(5) is resolved with
|
||||
// floor(double).
|
||||
#define __HIP_OVERLOAD1(__retty, __fn) \
|
||||
template <typename __T> \
|
||||
__DEVICE__ typename __hip_enable_if<std::numeric_limits<__T>::is_integer, \
|
||||
__retty>::type \
|
||||
__fn(__T __x) { \
|
||||
__DEVICE__ __CONSTEXPR__ \
|
||||
typename __hip_enable_if<__hip::is_integral<__T>::value, __retty>::type \
|
||||
__fn(__T __x) { \
|
||||
return ::__fn((double)__x); \
|
||||
}
|
||||
|
||||
@@ -292,9 +459,8 @@ class __promote : public __promote_imp<_A1, _A2, _A3> {};
|
||||
#if __cplusplus >= 201103L
|
||||
#define __HIP_OVERLOAD2(__retty, __fn) \
|
||||
template <typename __T1, typename __T2> \
|
||||
__DEVICE__ typename __hip_enable_if< \
|
||||
std::numeric_limits<__T1>::is_specialized && \
|
||||
std::numeric_limits<__T2>::is_specialized, \
|
||||
__DEVICE__ __CONSTEXPR__ typename __hip_enable_if< \
|
||||
__hip::is_arithmetic<__T1>::value && __hip::is_arithmetic<__T2>::value, \
|
||||
typename __hip::__promote<__T1, __T2>::type>::type \
|
||||
__fn(__T1 __x, __T2 __y) { \
|
||||
typedef typename __hip::__promote<__T1, __T2>::type __result_type; \
|
||||
@@ -303,16 +469,15 @@ class __promote : public __promote_imp<_A1, _A2, _A3> {};
|
||||
#else
|
||||
#define __HIP_OVERLOAD2(__retty, __fn) \
|
||||
template <typename __T1, typename __T2> \
|
||||
__DEVICE__ \
|
||||
typename __hip_enable_if<std::numeric_limits<__T1>::is_specialized && \
|
||||
std::numeric_limits<__T2>::is_specialized, \
|
||||
__DEVICE__ __CONSTEXPR__ \
|
||||
typename __hip_enable_if<__hip::is_arithmetic<__T1>::value && \
|
||||
__hip::is_arithmetic<__T2>::value, \
|
||||
__retty>::type \
|
||||
__fn(__T1 __x, __T2 __y) { \
|
||||
return __fn((double)__x, (double)__y); \
|
||||
}
|
||||
#endif
|
||||
|
||||
__HIP_OVERLOAD1(double, abs)
|
||||
__HIP_OVERLOAD1(double, acos)
|
||||
__HIP_OVERLOAD1(double, acosh)
|
||||
__HIP_OVERLOAD1(double, asin)
|
||||
@@ -336,7 +501,9 @@ __HIP_OVERLOAD1(double, floor)
|
||||
__HIP_OVERLOAD2(double, fmax)
|
||||
__HIP_OVERLOAD2(double, fmin)
|
||||
__HIP_OVERLOAD2(double, fmod)
|
||||
#if !defined(__HIPCC_RTC__)
|
||||
__HIP_OVERLOAD1(int, fpclassify)
|
||||
#endif // !defined(__HIPCC_RTC__)
|
||||
__HIP_OVERLOAD2(double, hypot)
|
||||
__HIP_OVERLOAD1(int, ilogb)
|
||||
__HIP_OVERLOAD1(bool, isfinite)
|
||||
@@ -381,10 +548,9 @@ __HIP_OVERLOAD2(double, min)
|
||||
// Additional Overloads that don't quite match HIP_OVERLOAD.
|
||||
#if __cplusplus >= 201103L
|
||||
template <typename __T1, typename __T2, typename __T3>
|
||||
__DEVICE__ typename __hip_enable_if<
|
||||
std::numeric_limits<__T1>::is_specialized &&
|
||||
std::numeric_limits<__T2>::is_specialized &&
|
||||
std::numeric_limits<__T3>::is_specialized,
|
||||
__DEVICE__ __CONSTEXPR__ typename __hip_enable_if<
|
||||
__hip::is_arithmetic<__T1>::value && __hip::is_arithmetic<__T2>::value &&
|
||||
__hip::is_arithmetic<__T3>::value,
|
||||
typename __hip::__promote<__T1, __T2, __T3>::type>::type
|
||||
fma(__T1 __x, __T2 __y, __T3 __z) {
|
||||
typedef typename __hip::__promote<__T1, __T2, __T3>::type __result_type;
|
||||
@@ -392,10 +558,10 @@ fma(__T1 __x, __T2 __y, __T3 __z) {
|
||||
}
|
||||
#else
|
||||
template <typename __T1, typename __T2, typename __T3>
|
||||
__DEVICE__
|
||||
typename __hip_enable_if<std::numeric_limits<__T1>::is_specialized &&
|
||||
std::numeric_limits<__T2>::is_specialized &&
|
||||
std::numeric_limits<__T3>::is_specialized,
|
||||
__DEVICE__ __CONSTEXPR__
|
||||
typename __hip_enable_if<__hip::is_arithmetic<__T1>::value &&
|
||||
__hip::is_arithmetic<__T2>::value &&
|
||||
__hip::is_arithmetic<__T3>::value,
|
||||
double>::type
|
||||
fma(__T1 __x, __T2 __y, __T3 __z) {
|
||||
return ::fma((double)__x, (double)__y, (double)__z);
|
||||
@@ -403,31 +569,31 @@ __DEVICE__
|
||||
#endif
|
||||
|
||||
template <typename __T>
|
||||
__DEVICE__
|
||||
typename __hip_enable_if<std::numeric_limits<__T>::is_integer, double>::type
|
||||
__DEVICE__ __CONSTEXPR__
|
||||
typename __hip_enable_if<__hip::is_integral<__T>::value, double>::type
|
||||
frexp(__T __x, int *__exp) {
|
||||
return ::frexp((double)__x, __exp);
|
||||
}
|
||||
|
||||
template <typename __T>
|
||||
__DEVICE__
|
||||
typename __hip_enable_if<std::numeric_limits<__T>::is_integer, double>::type
|
||||
__DEVICE__ __CONSTEXPR__
|
||||
typename __hip_enable_if<__hip::is_integral<__T>::value, double>::type
|
||||
ldexp(__T __x, int __exp) {
|
||||
return ::ldexp((double)__x, __exp);
|
||||
}
|
||||
|
||||
template <typename __T>
|
||||
__DEVICE__
|
||||
typename __hip_enable_if<std::numeric_limits<__T>::is_integer, double>::type
|
||||
__DEVICE__ __CONSTEXPR__
|
||||
typename __hip_enable_if<__hip::is_integral<__T>::value, double>::type
|
||||
modf(__T __x, double *__exp) {
|
||||
return ::modf((double)__x, __exp);
|
||||
}
|
||||
|
||||
#if __cplusplus >= 201103L
|
||||
template <typename __T1, typename __T2>
|
||||
__DEVICE__
|
||||
typename __hip_enable_if<std::numeric_limits<__T1>::is_specialized &&
|
||||
std::numeric_limits<__T2>::is_specialized,
|
||||
__DEVICE__ __CONSTEXPR__
|
||||
typename __hip_enable_if<__hip::is_arithmetic<__T1>::value &&
|
||||
__hip::is_arithmetic<__T2>::value,
|
||||
typename __hip::__promote<__T1, __T2>::type>::type
|
||||
remquo(__T1 __x, __T2 __y, int *__quo) {
|
||||
typedef typename __hip::__promote<__T1, __T2>::type __result_type;
|
||||
@@ -435,9 +601,9 @@ __DEVICE__
|
||||
}
|
||||
#else
|
||||
template <typename __T1, typename __T2>
|
||||
__DEVICE__
|
||||
typename __hip_enable_if<std::numeric_limits<__T1>::is_specialized &&
|
||||
std::numeric_limits<__T2>::is_specialized,
|
||||
__DEVICE__ __CONSTEXPR__
|
||||
typename __hip_enable_if<__hip::is_arithmetic<__T1>::value &&
|
||||
__hip::is_arithmetic<__T2>::value,
|
||||
double>::type
|
||||
remquo(__T1 __x, __T2 __y, int *__quo) {
|
||||
return ::remquo((double)__x, (double)__y, __quo);
|
||||
@@ -445,15 +611,15 @@ __DEVICE__
|
||||
#endif
|
||||
|
||||
template <typename __T>
|
||||
__DEVICE__
|
||||
typename __hip_enable_if<std::numeric_limits<__T>::is_integer, double>::type
|
||||
__DEVICE__ __CONSTEXPR__
|
||||
typename __hip_enable_if<__hip::is_integral<__T>::value, double>::type
|
||||
scalbln(__T __x, long int __exp) {
|
||||
return ::scalbln((double)__x, __exp);
|
||||
}
|
||||
|
||||
template <typename __T>
|
||||
__DEVICE__
|
||||
typename __hip_enable_if<std::numeric_limits<__T>::is_integer, double>::type
|
||||
__DEVICE__ __CONSTEXPR__
|
||||
typename __hip_enable_if<__hip::is_integral<__T>::value, double>::type
|
||||
scalbn(__T __x, int __exp) {
|
||||
return ::scalbn((double)__x, __exp);
|
||||
}
|
||||
@@ -465,17 +631,20 @@ __DEVICE__
|
||||
|
||||
// END DEF_FUN and HIP_OVERLOAD
|
||||
|
||||
#endif // ifndef __OPENMP_AMDGCN__
|
||||
#endif // defined(__cplusplus)
|
||||
|
||||
#ifndef __OPENMP_AMDGCN__
|
||||
// Define these overloads inside the namespace our standard library uses.
|
||||
#if !defined(__HIPCC_RTC__)
|
||||
#ifdef _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
#else
|
||||
namespace std {
|
||||
#ifdef _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
#endif
|
||||
#endif
|
||||
#endif // _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
#endif // _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
// Pull the new overloads we defined above into namespace std.
|
||||
// using ::abs; - This may be considered for C++.
|
||||
@@ -620,11 +789,13 @@ _LIBCPP_END_NAMESPACE_STD
|
||||
#else
|
||||
#ifdef _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
_GLIBCXX_END_NAMESPACE_VERSION
|
||||
#endif
|
||||
#endif // _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
} // namespace std
|
||||
#endif
|
||||
#endif // _LIBCPP_END_NAMESPACE_STD
|
||||
#endif // !defined(__HIPCC_RTC__)
|
||||
|
||||
// Define device-side math functions from <ymath.h> on MSVC.
|
||||
#if !defined(__HIPCC_RTC__)
|
||||
#if defined(_MSC_VER)
|
||||
|
||||
// Before VS2019, `<ymath.h>` is also included in `<limits>` and other headers.
|
||||
@@ -636,29 +807,36 @@ _GLIBCXX_END_NAMESPACE_VERSION
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif // defined(__cplusplus)
|
||||
__DEVICE__ __attribute__((overloadable)) double _Cosh(double x, double y) {
|
||||
__DEVICE__ __CONSTEXPR__ __attribute__((overloadable)) double _Cosh(double x,
|
||||
double y) {
|
||||
return cosh(x) * y;
|
||||
}
|
||||
__DEVICE__ __attribute__((overloadable)) float _FCosh(float x, float y) {
|
||||
__DEVICE__ __CONSTEXPR__ __attribute__((overloadable)) float _FCosh(float x,
|
||||
float y) {
|
||||
return coshf(x) * y;
|
||||
}
|
||||
__DEVICE__ __attribute__((overloadable)) short _Dtest(double *p) {
|
||||
__DEVICE__ __CONSTEXPR__ __attribute__((overloadable)) short _Dtest(double *p) {
|
||||
return fpclassify(*p);
|
||||
}
|
||||
__DEVICE__ __attribute__((overloadable)) short _FDtest(float *p) {
|
||||
__DEVICE__ __CONSTEXPR__ __attribute__((overloadable)) short _FDtest(float *p) {
|
||||
return fpclassify(*p);
|
||||
}
|
||||
__DEVICE__ __attribute__((overloadable)) double _Sinh(double x, double y) {
|
||||
__DEVICE__ __CONSTEXPR__ __attribute__((overloadable)) double _Sinh(double x,
|
||||
double y) {
|
||||
return sinh(x) * y;
|
||||
}
|
||||
__DEVICE__ __attribute__((overloadable)) float _FSinh(float x, float y) {
|
||||
__DEVICE__ __CONSTEXPR__ __attribute__((overloadable)) float _FSinh(float x,
|
||||
float y) {
|
||||
return sinhf(x) * y;
|
||||
}
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif // defined(__cplusplus)
|
||||
#endif // defined(_MSC_VER)
|
||||
#endif // !defined(__HIPCC_RTC__)
|
||||
#endif // ifndef __OPENMP_AMDGCN__
|
||||
|
||||
#pragma pop_macro("__DEVICE__")
|
||||
#pragma pop_macro("__CONSTEXPR__")
|
||||
|
||||
#endif // __CLANG_HIP_CMATH_H__
|
||||
|
||||
36
lib/include/__clang_hip_libdevice_declares.h
vendored
36
lib/include/__clang_hip_libdevice_declares.h
vendored
@@ -138,14 +138,22 @@ __device__ __attribute__((const)) float __ocml_fma_rtn_f32(float, float, float);
|
||||
__device__ __attribute__((const)) float __ocml_fma_rtp_f32(float, float, float);
|
||||
__device__ __attribute__((const)) float __ocml_fma_rtz_f32(float, float, float);
|
||||
|
||||
__device__ __attribute__((const)) float
|
||||
__llvm_amdgcn_cos_f32(float) __asm("llvm.amdgcn.cos.f32");
|
||||
__device__ __attribute__((const)) float
|
||||
__llvm_amdgcn_rcp_f32(float) __asm("llvm.amdgcn.rcp.f32");
|
||||
__device__ __attribute__((const)) float
|
||||
__llvm_amdgcn_rsq_f32(float) __asm("llvm.amdgcn.rsq.f32");
|
||||
__device__ __attribute__((const)) float
|
||||
__llvm_amdgcn_sin_f32(float) __asm("llvm.amdgcn.sin.f32");
|
||||
__device__ inline __attribute__((const)) float
|
||||
__llvm_amdgcn_cos_f32(float __x) {
|
||||
return __builtin_amdgcn_cosf(__x);
|
||||
}
|
||||
__device__ inline __attribute__((const)) float
|
||||
__llvm_amdgcn_rcp_f32(float __x) {
|
||||
return __builtin_amdgcn_rcpf(__x);
|
||||
}
|
||||
__device__ inline __attribute__((const)) float
|
||||
__llvm_amdgcn_rsq_f32(float __x) {
|
||||
return __builtin_amdgcn_rsqf(__x);
|
||||
}
|
||||
__device__ inline __attribute__((const)) float
|
||||
__llvm_amdgcn_sin_f32(float __x) {
|
||||
return __builtin_amdgcn_sinf(__x);
|
||||
}
|
||||
// END INTRINSICS
|
||||
// END FLOAT
|
||||
|
||||
@@ -269,10 +277,14 @@ __device__ __attribute__((const)) double __ocml_fma_rtp_f64(double, double,
|
||||
__device__ __attribute__((const)) double __ocml_fma_rtz_f64(double, double,
|
||||
double);
|
||||
|
||||
__device__ __attribute__((const)) double
|
||||
__llvm_amdgcn_rcp_f64(double) __asm("llvm.amdgcn.rcp.f64");
|
||||
__device__ __attribute__((const)) double
|
||||
__llvm_amdgcn_rsq_f64(double) __asm("llvm.amdgcn.rsq.f64");
|
||||
__device__ inline __attribute__((const)) double
|
||||
__llvm_amdgcn_rcp_f64(double __x) {
|
||||
return __builtin_amdgcn_rcp(__x);
|
||||
}
|
||||
__device__ inline __attribute__((const)) double
|
||||
__llvm_amdgcn_rsq_f64(double __x) {
|
||||
return __builtin_amdgcn_rsq(__x);
|
||||
}
|
||||
|
||||
__device__ __attribute__((const)) _Float16 __ocml_ceil_f16(_Float16);
|
||||
__device__ _Float16 __ocml_cos_f16(_Float16);
|
||||
|
||||
50
lib/include/__clang_hip_math.h
vendored
50
lib/include/__clang_hip_math.h
vendored
@@ -9,26 +9,40 @@
|
||||
#ifndef __CLANG_HIP_MATH_H__
|
||||
#define __CLANG_HIP_MATH_H__
|
||||
|
||||
#if !defined(__HIP__)
|
||||
#if !defined(__HIP__) && !defined(__OPENMP_AMDGCN__)
|
||||
#error "This file is for HIP and OpenMP AMDGCN device compilation only."
|
||||
#endif
|
||||
|
||||
#if !defined(__HIPCC_RTC__)
|
||||
#if defined(__cplusplus)
|
||||
#include <algorithm>
|
||||
#endif
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#include <omp.h>
|
||||
#endif
|
||||
#endif // !defined(__HIPCC_RTC__)
|
||||
|
||||
#pragma push_macro("__DEVICE__")
|
||||
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#define __DEVICE__ static inline __attribute__((always_inline, nothrow))
|
||||
#else
|
||||
#define __DEVICE__ static __device__ inline __attribute__((always_inline))
|
||||
#endif
|
||||
|
||||
// A few functions return bool type starting only in C++11.
|
||||
#pragma push_macro("__RETURN_TYPE")
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#define __RETURN_TYPE int
|
||||
#else
|
||||
#if defined(__cplusplus)
|
||||
#define __RETURN_TYPE bool
|
||||
#else
|
||||
#define __RETURN_TYPE int
|
||||
#endif
|
||||
#endif // __OPENMP_AMDGCN__
|
||||
|
||||
#if defined (__cplusplus) && __cplusplus < 201103L
|
||||
// emulate static_assert on type sizes
|
||||
@@ -36,7 +50,7 @@ template<bool>
|
||||
struct __compare_result{};
|
||||
template<>
|
||||
struct __compare_result<true> {
|
||||
static const bool valid;
|
||||
static const __device__ bool valid;
|
||||
};
|
||||
|
||||
__DEVICE__
|
||||
@@ -247,6 +261,9 @@ float fmodf(float __x, float __y) { return __ocml_fmod_f32(__x, __y); }
|
||||
__DEVICE__
|
||||
float frexpf(float __x, int *__nptr) {
|
||||
int __tmp;
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
|
||||
#endif
|
||||
float __r =
|
||||
__ocml_frexp_f32(__x, (__attribute__((address_space(5))) int *)&__tmp);
|
||||
*__nptr = __tmp;
|
||||
@@ -332,6 +349,9 @@ long int lroundf(float __x) { return __ocml_round_f32(__x); }
|
||||
__DEVICE__
|
||||
float modff(float __x, float *__iptr) {
|
||||
float __tmp;
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
|
||||
#endif
|
||||
float __r =
|
||||
__ocml_modf_f32(__x, (__attribute__((address_space(5))) float *)&__tmp);
|
||||
*__iptr = __tmp;
|
||||
@@ -412,6 +432,9 @@ float remainderf(float __x, float __y) {
|
||||
__DEVICE__
|
||||
float remquof(float __x, float __y, int *__quo) {
|
||||
int __tmp;
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
|
||||
#endif
|
||||
float __r = __ocml_remquo_f32(
|
||||
__x, __y, (__attribute__((address_space(5))) int *)&__tmp);
|
||||
*__quo = __tmp;
|
||||
@@ -468,6 +491,9 @@ __RETURN_TYPE __signbitf(float __x) { return __ocml_signbit_f32(__x); }
|
||||
__DEVICE__
|
||||
void sincosf(float __x, float *__sinptr, float *__cosptr) {
|
||||
float __tmp;
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
|
||||
#endif
|
||||
*__sinptr =
|
||||
__ocml_sincos_f32(__x, (__attribute__((address_space(5))) float *)&__tmp);
|
||||
*__cosptr = __tmp;
|
||||
@@ -476,6 +502,9 @@ void sincosf(float __x, float *__sinptr, float *__cosptr) {
|
||||
__DEVICE__
|
||||
void sincospif(float __x, float *__sinptr, float *__cosptr) {
|
||||
float __tmp;
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
|
||||
#endif
|
||||
*__sinptr = __ocml_sincospi_f32(
|
||||
__x, (__attribute__((address_space(5))) float *)&__tmp);
|
||||
*__cosptr = __tmp;
|
||||
@@ -788,6 +817,9 @@ double fmod(double __x, double __y) { return __ocml_fmod_f64(__x, __y); }
|
||||
__DEVICE__
|
||||
double frexp(double __x, int *__nptr) {
|
||||
int __tmp;
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
|
||||
#endif
|
||||
double __r =
|
||||
__ocml_frexp_f64(__x, (__attribute__((address_space(5))) int *)&__tmp);
|
||||
*__nptr = __tmp;
|
||||
@@ -872,6 +904,9 @@ long int lround(double __x) { return __ocml_round_f64(__x); }
|
||||
__DEVICE__
|
||||
double modf(double __x, double *__iptr) {
|
||||
double __tmp;
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
|
||||
#endif
|
||||
double __r =
|
||||
__ocml_modf_f64(__x, (__attribute__((address_space(5))) double *)&__tmp);
|
||||
*__iptr = __tmp;
|
||||
@@ -960,6 +995,9 @@ double remainder(double __x, double __y) {
|
||||
__DEVICE__
|
||||
double remquo(double __x, double __y, int *__quo) {
|
||||
int __tmp;
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
|
||||
#endif
|
||||
double __r = __ocml_remquo_f64(
|
||||
__x, __y, (__attribute__((address_space(5))) int *)&__tmp);
|
||||
*__quo = __tmp;
|
||||
@@ -1018,6 +1056,9 @@ double sin(double __x) { return __ocml_sin_f64(__x); }
|
||||
__DEVICE__
|
||||
void sincos(double __x, double *__sinptr, double *__cosptr) {
|
||||
double __tmp;
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
|
||||
#endif
|
||||
*__sinptr = __ocml_sincos_f64(
|
||||
__x, (__attribute__((address_space(5))) double *)&__tmp);
|
||||
*__cosptr = __tmp;
|
||||
@@ -1026,6 +1067,9 @@ void sincos(double __x, double *__sinptr, double *__cosptr) {
|
||||
__DEVICE__
|
||||
void sincospi(double __x, double *__sinptr, double *__cosptr) {
|
||||
double __tmp;
|
||||
#ifdef __OPENMP_AMDGCN__
|
||||
#pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
|
||||
#endif
|
||||
*__sinptr = __ocml_sincospi_f64(
|
||||
__x, (__attribute__((address_space(5))) double *)&__tmp);
|
||||
*__cosptr = __tmp;
|
||||
@@ -1260,6 +1304,7 @@ float min(float __x, float __y) { return fminf(__x, __y); }
|
||||
__DEVICE__
|
||||
double min(double __x, double __y) { return fmin(__x, __y); }
|
||||
|
||||
#if !defined(__HIPCC_RTC__) && !defined(__OPENMP_AMDGCN__)
|
||||
__host__ inline static int min(int __arg1, int __arg2) {
|
||||
return std::min(__arg1, __arg2);
|
||||
}
|
||||
@@ -1267,6 +1312,7 @@ __host__ inline static int min(int __arg1, int __arg2) {
|
||||
__host__ inline static int max(int __arg1, int __arg2) {
|
||||
return std::max(__arg1, __arg2);
|
||||
}
|
||||
#endif // !defined(__HIPCC_RTC__) && !defined(__OPENMP_AMDGCN__)
|
||||
#endif
|
||||
|
||||
#pragma pop_macro("__DEVICE__")
|
||||
|
||||
91
lib/include/__clang_hip_runtime_wrapper.h
vendored
91
lib/include/__clang_hip_runtime_wrapper.h
vendored
@@ -18,52 +18,107 @@
|
||||
|
||||
#if __HIP__
|
||||
|
||||
#include <cmath>
|
||||
#include <cstdlib>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define __host__ __attribute__((host))
|
||||
#define __device__ __attribute__((device))
|
||||
#define __global__ __attribute__((global))
|
||||
#define __shared__ __attribute__((shared))
|
||||
#define __constant__ __attribute__((constant))
|
||||
#define __managed__ __attribute__((managed))
|
||||
|
||||
#if !defined(__cplusplus) || __cplusplus < 201103L
|
||||
#define nullptr NULL;
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
__attribute__((__visibility__("default")))
|
||||
__attribute__((weak))
|
||||
__attribute__((noreturn))
|
||||
__device__ void __cxa_pure_virtual(void) {
|
||||
__builtin_trap();
|
||||
}
|
||||
__attribute__((__visibility__("default")))
|
||||
__attribute__((weak))
|
||||
__attribute__((noreturn))
|
||||
__device__ void __cxa_deleted_virtual(void) {
|
||||
__builtin_trap();
|
||||
}
|
||||
}
|
||||
#endif //__cplusplus
|
||||
|
||||
#if !defined(__HIPCC_RTC__)
|
||||
#include <cmath>
|
||||
#include <cstdlib>
|
||||
#include <stdlib.h>
|
||||
#else
|
||||
typedef __SIZE_TYPE__ size_t;
|
||||
// Define macros which are needed to declare HIP device API's without standard
|
||||
// C/C++ headers. This is for readability so that these API's can be written
|
||||
// the same way as non-hipRTC use case. These macros need to be popped so that
|
||||
// they do not pollute users' name space.
|
||||
#pragma push_macro("NULL")
|
||||
#pragma push_macro("uint32_t")
|
||||
#pragma push_macro("uint64_t")
|
||||
#pragma push_macro("CHAR_BIT")
|
||||
#pragma push_macro("INT_MAX")
|
||||
#define NULL (void *)0
|
||||
#define uint32_t __UINT32_TYPE__
|
||||
#define uint64_t __UINT64_TYPE__
|
||||
#define CHAR_BIT __CHAR_BIT__
|
||||
#define INT_MAX __INTMAX_MAX__
|
||||
#endif // __HIPCC_RTC__
|
||||
|
||||
typedef __SIZE_TYPE__ __hip_size_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif //__cplusplus
|
||||
|
||||
#if __HIP_ENABLE_DEVICE_MALLOC__
|
||||
extern "C" __device__ void *__hip_malloc(size_t __size);
|
||||
extern "C" __device__ void *__hip_free(void *__ptr);
|
||||
static inline __device__ void *malloc(size_t __size) {
|
||||
__device__ void *__hip_malloc(__hip_size_t __size);
|
||||
__device__ void *__hip_free(void *__ptr);
|
||||
__attribute__((weak)) inline __device__ void *malloc(__hip_size_t __size) {
|
||||
return __hip_malloc(__size);
|
||||
}
|
||||
static inline __device__ void *free(void *__ptr) { return __hip_free(__ptr); }
|
||||
#else
|
||||
static inline __device__ void *malloc(size_t __size) {
|
||||
__builtin_trap();
|
||||
return nullptr;
|
||||
__attribute__((weak)) inline __device__ void *free(void *__ptr) {
|
||||
return __hip_free(__ptr);
|
||||
}
|
||||
static inline __device__ void *free(void *__ptr) {
|
||||
#else
|
||||
__attribute__((weak)) inline __device__ void *malloc(__hip_size_t __size) {
|
||||
__builtin_trap();
|
||||
return nullptr;
|
||||
return (void *)0;
|
||||
}
|
||||
__attribute__((weak)) inline __device__ void *free(void *__ptr) {
|
||||
__builtin_trap();
|
||||
return (void *)0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif //__cplusplus
|
||||
|
||||
#include <__clang_hip_libdevice_declares.h>
|
||||
#include <__clang_hip_math.h>
|
||||
|
||||
#if !_OPENMP || __HIP_ENABLE_CUDA_WRAPPER_FOR_OPENMP__
|
||||
#if defined(__HIPCC_RTC__)
|
||||
#include <__clang_hip_cmath.h>
|
||||
#else
|
||||
#include <__clang_cuda_math_forward_declares.h>
|
||||
#include <__clang_hip_cmath.h>
|
||||
#include <__clang_cuda_complex_builtins.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <complex>
|
||||
#include <new>
|
||||
#endif // !_OPENMP || __HIP_ENABLE_CUDA_WRAPPER_FOR_OPENMP__
|
||||
#endif // __HIPCC_RTC__
|
||||
|
||||
#define __CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ 1
|
||||
|
||||
#if defined(__HIPCC_RTC__)
|
||||
#pragma pop_macro("NULL")
|
||||
#pragma pop_macro("uint32_t")
|
||||
#pragma pop_macro("uint64_t")
|
||||
#pragma pop_macro("CHAR_BIT")
|
||||
#pragma pop_macro("INT_MAX")
|
||||
#endif // __HIPCC_RTC__
|
||||
#endif // __HIP__
|
||||
#endif // __CLANG_HIP_RUNTIME_WRAPPER_H__
|
||||
|
||||
1584
lib/include/altivec.h
vendored
1584
lib/include/altivec.h
vendored
File diff suppressed because it is too large
Load Diff
255
lib/include/amxintrin.h
vendored
255
lib/include/amxintrin.h
vendored
@@ -15,8 +15,13 @@
|
||||
#define __AMXINTRIN_H
|
||||
#ifdef __x86_64__
|
||||
|
||||
/* Define the default attributes for the functions in this file. */
|
||||
#define __DEFAULT_FN_ATTRS_TILE \
|
||||
__attribute__((__always_inline__, __nodebug__, __target__("amx-tile")))
|
||||
#define __DEFAULT_FN_ATTRS_INT8 \
|
||||
__attribute__((__always_inline__, __nodebug__, __target__("amx-int8")))
|
||||
#define __DEFAULT_FN_ATTRS_BF16 \
|
||||
__attribute__((__always_inline__, __nodebug__, __target__("amx-bf16")))
|
||||
|
||||
/// Load tile configuration from a 64-byte memory location specified by
|
||||
/// "mem_addr". The tile configuration includes the tile type palette, the
|
||||
@@ -25,7 +30,7 @@
|
||||
/// config and the tile data, and the tiles are zeroed. Any invalid
|
||||
/// configurations will result in #GP fault.
|
||||
///
|
||||
/// \headerfile <x86intrin.h>
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> LDTILECFG </c> instruction.
|
||||
///
|
||||
@@ -41,7 +46,7 @@ _tile_loadconfig(const void *__config) {
|
||||
/// palette, the number of bytes per row, and the number of rows. If tiles
|
||||
/// are not configured, all zeroes will be stored to memory.
|
||||
///
|
||||
/// \headerfile <x86intrin.h>
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> STTILECFG </c> instruction.
|
||||
///
|
||||
@@ -55,7 +60,7 @@ _tile_storeconfig(void *__config) {
|
||||
/// Release the tile configuration to return to the init state, which
|
||||
/// releases all storage it currently holds.
|
||||
///
|
||||
/// \headerfile <x86intrin.h>
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TILERELEASE </c> instruction.
|
||||
static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
|
||||
@@ -66,7 +71,7 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
|
||||
/// destination tile "dst" using the tile configuration previously configured
|
||||
/// via "_tile_loadconfig".
|
||||
///
|
||||
/// \headerfile <x86intrin.h>
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TILELOADD </c> instruction.
|
||||
///
|
||||
@@ -86,7 +91,7 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
|
||||
/// that the data will likely not be reused in the near future and the data
|
||||
/// caching can be optimized accordingly.
|
||||
///
|
||||
/// \headerfile <x86intrin.h>
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TILELOADDT1 </c> instruction.
|
||||
///
|
||||
@@ -104,7 +109,7 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
|
||||
/// "stride" using the tile configuration previously configured via
|
||||
/// "_tile_loadconfig".
|
||||
///
|
||||
/// \headerfile <x86intrin.h>
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TILESTORED </c> instruction.
|
||||
///
|
||||
@@ -119,7 +124,7 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
|
||||
|
||||
/// Zero the tile specified by "tdest".
|
||||
///
|
||||
/// \headerfile <x86intrin.h>
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TILEZERO </c> instruction.
|
||||
///
|
||||
@@ -133,7 +138,7 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
|
||||
/// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
|
||||
/// and store the 32-bit result back to tile "dst".
|
||||
///
|
||||
/// \headerfile <x86intrin.h>
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TDPBSSD </c> instruction.
|
||||
///
|
||||
@@ -152,7 +157,7 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
|
||||
/// 32-bit results. Sum these 4 results with the corresponding 32-bit integer
|
||||
/// in "dst", and store the 32-bit result back to tile "dst".
|
||||
///
|
||||
/// \headerfile <x86intrin.h>
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TDPBSUD </c> instruction.
|
||||
///
|
||||
@@ -171,7 +176,7 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
|
||||
/// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
|
||||
/// and store the 32-bit result back to tile "dst".
|
||||
///
|
||||
/// \headerfile <x86intrin.h>
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TDPBUSD </c> instruction.
|
||||
///
|
||||
@@ -190,7 +195,7 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
|
||||
/// 32-bit results. Sum these 4 results with the corresponding 32-bit integer in
|
||||
/// "dst", and store the 32-bit result back to tile "dst".
|
||||
///
|
||||
/// \headerfile <x86intrin.h>
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TDPBUUD </c> instruction.
|
||||
///
|
||||
@@ -208,7 +213,7 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
|
||||
/// elements with elements in "dst", and store the 32-bit result back to tile
|
||||
/// "dst".
|
||||
///
|
||||
/// \headerfile <x86intrin.h>
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TDPBF16PS </c> instruction.
|
||||
///
|
||||
@@ -221,10 +226,12 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
|
||||
#define _tile_dpbf16ps(dst, src0, src1) \
|
||||
__builtin_ia32_tdpbf16ps((dst), (src0), (src1))
|
||||
|
||||
#define __DEFAULT_FN_ATTRS_INT8 \
|
||||
__attribute__((__always_inline__, __nodebug__, __target__("amx-int8")))
|
||||
|
||||
/// AMX tile register size can be configured, the maximum size is 16x64=1024
|
||||
/// bytes. Since there is no 2D type in llvm IR, we use vector type to
|
||||
/// represent 2D tile and the fixed size is maximum amx tile register size.
|
||||
typedef int _tile1024i __attribute__((__vector_size__(1024), __aligned__(64)));
|
||||
|
||||
/// This is internal intrinsic. C/C++ user should avoid calling it directly.
|
||||
static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
|
||||
_tile_loadd_internal(unsigned short m, unsigned short n, const void *base,
|
||||
__SIZE_TYPE__ stride) {
|
||||
@@ -232,12 +239,43 @@ _tile_loadd_internal(unsigned short m, unsigned short n, const void *base,
|
||||
(__SIZE_TYPE__)(stride));
|
||||
}
|
||||
|
||||
/// This is internal intrinsic. C/C++ user should avoid calling it directly.
|
||||
static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
|
||||
_tile_loaddt1_internal(unsigned short m, unsigned short n, const void *base,
|
||||
__SIZE_TYPE__ stride) {
|
||||
return __builtin_ia32_tileloaddt164_internal(m, n, base,
|
||||
(__SIZE_TYPE__)(stride));
|
||||
}
|
||||
|
||||
/// This is internal intrinsic. C/C++ user should avoid calling it directly.
|
||||
static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
|
||||
_tile_dpbssd_internal(unsigned short m, unsigned short n, unsigned short k,
|
||||
_tile1024i dst, _tile1024i src1, _tile1024i src2) {
|
||||
return __builtin_ia32_tdpbssd_internal(m, n, k, dst, src1, src2);
|
||||
}
|
||||
|
||||
/// This is internal intrinsic. C/C++ user should avoid calling it directly.
|
||||
static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
|
||||
_tile_dpbsud_internal(unsigned short m, unsigned short n, unsigned short k,
|
||||
_tile1024i dst, _tile1024i src1, _tile1024i src2) {
|
||||
return __builtin_ia32_tdpbsud_internal(m, n, k, dst, src1, src2);
|
||||
}
|
||||
|
||||
/// This is internal intrinsic. C/C++ user should avoid calling it directly.
|
||||
static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
|
||||
_tile_dpbusd_internal(unsigned short m, unsigned short n, unsigned short k,
|
||||
_tile1024i dst, _tile1024i src1, _tile1024i src2) {
|
||||
return __builtin_ia32_tdpbusd_internal(m, n, k, dst, src1, src2);
|
||||
}
|
||||
|
||||
/// This is internal intrinsic. C/C++ user should avoid calling it directly.
|
||||
static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
|
||||
_tile_dpbuud_internal(unsigned short m, unsigned short n, unsigned short k,
|
||||
_tile1024i dst, _tile1024i src1, _tile1024i src2) {
|
||||
return __builtin_ia32_tdpbuud_internal(m, n, k, dst, src1, src2);
|
||||
}
|
||||
|
||||
/// This is internal intrinsic. C/C++ user should avoid calling it directly.
|
||||
static __inline__ void __DEFAULT_FN_ATTRS_INT8
|
||||
_tile_stored_internal(unsigned short m, unsigned short n, void *base,
|
||||
__SIZE_TYPE__ stride, _tile1024i tile) {
|
||||
@@ -245,34 +283,211 @@ _tile_stored_internal(unsigned short m, unsigned short n, void *base,
|
||||
(__SIZE_TYPE__)(stride), tile);
|
||||
}
|
||||
|
||||
/// This is internal intrinsic. C/C++ user should avoid calling it directly.
|
||||
static __inline__ _tile1024i __DEFAULT_FN_ATTRS_BF16
|
||||
_tile_dpbf16ps_internal(unsigned short m, unsigned short n, unsigned short k,
|
||||
_tile1024i dst, _tile1024i src1, _tile1024i src2) {
|
||||
return __builtin_ia32_tdpbf16ps_internal(m, n, k, dst, src1, src2);
|
||||
}
|
||||
|
||||
/// This struct pack the shape and tile data together for user. We suggest
|
||||
/// initializing the struct as early as possible, because compiler depends
|
||||
/// on the shape information to do configure. The constant value is preferred
|
||||
/// for optimization by compiler.
|
||||
typedef struct __tile1024i_str {
|
||||
const unsigned short row;
|
||||
const unsigned short col;
|
||||
_tile1024i tile;
|
||||
} __tile1024i;
|
||||
|
||||
/// Load tile rows from memory specifieid by "base" address and "stride" into
|
||||
/// destination tile "dst".
|
||||
///
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TILELOADD </c> instruction.
|
||||
///
|
||||
/// \param dst
|
||||
/// A destination tile. Max size is 1024 Bytes.
|
||||
/// \param base
|
||||
/// A pointer to base address.
|
||||
/// \param stride
|
||||
/// The stride between the rows' data to be loaded in memory.
|
||||
__DEFAULT_FN_ATTRS_TILE
|
||||
static void __tile_loadd(__tile1024i *dst, const void *base,
|
||||
__SIZE_TYPE__ stride) {
|
||||
dst->tile = _tile_loadd_internal(dst->row, dst->col, base, stride);
|
||||
}
|
||||
|
||||
__DEFAULT_FN_ATTRS_INT8
|
||||
static void __tile_dpbssd(__tile1024i *dst, __tile1024i src1,
|
||||
__tile1024i src2) {
|
||||
dst->tile = _tile_dpbssd_internal(src1.row, src2.col, src1.col, dst->tile,
|
||||
src1.tile, src2.tile);
|
||||
/// Load tile rows from memory specifieid by "base" address and "stride" into
|
||||
/// destination tile "dst". This intrinsic provides a hint to the implementation
|
||||
/// that the data will likely not be reused in the near future and the data
|
||||
/// caching can be optimized accordingly.
|
||||
///
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TILELOADDT1 </c> instruction.
|
||||
///
|
||||
/// \param dst
|
||||
/// A destination tile. Max size is 1024 Bytes.
|
||||
/// \param base
|
||||
/// A pointer to base address.
|
||||
/// \param stride
|
||||
/// The stride between the rows' data to be loaded in memory.
|
||||
__DEFAULT_FN_ATTRS_TILE
|
||||
static void __tile_stream_loadd(__tile1024i *dst, const void *base,
|
||||
__SIZE_TYPE__ stride) {
|
||||
dst->tile = _tile_loaddt1_internal(dst->row, dst->col, base, stride);
|
||||
}
|
||||
|
||||
/// Compute dot-product of bytes in tiles with a source/destination accumulator.
|
||||
/// Multiply groups of 4 adjacent pairs of signed 8-bit integers in src0 with
|
||||
/// corresponding signed 8-bit integers in src1, producing 4 intermediate 32-bit
|
||||
/// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
|
||||
/// and store the 32-bit result back to tile "dst".
|
||||
///
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TDPBSSD </c> instruction.
|
||||
///
|
||||
/// \param dst
|
||||
/// The destination tile. Max size is 1024 Bytes.
|
||||
/// \param src0
|
||||
/// The 1st source tile. Max size is 1024 Bytes.
|
||||
/// \param src1
|
||||
/// The 2nd source tile. Max size is 1024 Bytes.
|
||||
__DEFAULT_FN_ATTRS_INT8
|
||||
static void __tile_dpbssd(__tile1024i *dst, __tile1024i src0,
|
||||
__tile1024i src1) {
|
||||
dst->tile = _tile_dpbssd_internal(src0.row, src1.col, src0.col, dst->tile,
|
||||
src0.tile, src1.tile);
|
||||
}
|
||||
|
||||
/// Compute dot-product of bytes in tiles with a source/destination accumulator.
|
||||
/// Multiply groups of 4 adjacent pairs of signed 8-bit integers in src0 with
|
||||
/// corresponding unsigned 8-bit integers in src1, producing 4 intermediate
|
||||
/// 32-bit results. Sum these 4 results with the corresponding 32-bit integer
|
||||
/// in "dst", and store the 32-bit result back to tile "dst".
|
||||
///
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TDPBSUD </c> instruction.
|
||||
///
|
||||
/// \param dst
|
||||
/// The destination tile. Max size is 1024 Bytes.
|
||||
/// \param src0
|
||||
/// The 1st source tile. Max size is 1024 Bytes.
|
||||
/// \param src1
|
||||
/// The 2nd source tile. Max size is 1024 Bytes.
|
||||
__DEFAULT_FN_ATTRS_INT8
|
||||
static void __tile_dpbsud(__tile1024i *dst, __tile1024i src0,
|
||||
__tile1024i src1) {
|
||||
dst->tile = _tile_dpbsud_internal(src0.row, src1.col, src0.col, dst->tile,
|
||||
src0.tile, src1.tile);
|
||||
}
|
||||
|
||||
/// Compute dot-product of bytes in tiles with a source/destination accumulator.
|
||||
/// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in src0 with
|
||||
/// corresponding signed 8-bit integers in src1, producing 4 intermediate 32-bit
|
||||
/// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
|
||||
/// and store the 32-bit result back to tile "dst".
|
||||
///
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TDPBUSD </c> instruction.
|
||||
///
|
||||
/// \param dst
|
||||
/// The destination tile. Max size is 1024 Bytes.
|
||||
/// \param src0
|
||||
/// The 1st source tile. Max size is 1024 Bytes.
|
||||
/// \param src1
|
||||
/// The 2nd source tile. Max size is 1024 Bytes.
|
||||
__DEFAULT_FN_ATTRS_INT8
|
||||
static void __tile_dpbusd(__tile1024i *dst, __tile1024i src0,
|
||||
__tile1024i src1) {
|
||||
dst->tile = _tile_dpbusd_internal(src0.row, src1.col, src0.col, dst->tile,
|
||||
src0.tile, src1.tile);
|
||||
}
|
||||
|
||||
/// Compute dot-product of bytes in tiles with a source/destination accumulator.
|
||||
/// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in src0 with
|
||||
/// corresponding unsigned 8-bit integers in src1, producing 4 intermediate
|
||||
/// 32-bit results. Sum these 4 results with the corresponding 32-bit integer in
|
||||
/// "dst", and store the 32-bit result back to tile "dst".
|
||||
///
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TDPBUUD </c> instruction.
|
||||
///
|
||||
/// \param dst
|
||||
/// The destination tile. Max size is 1024 Bytes.
|
||||
/// \param src0
|
||||
/// The 1st source tile. Max size is 1024 Bytes.
|
||||
/// \param src1
|
||||
/// The 2nd source tile. Max size is 1024 Bytes.
|
||||
__DEFAULT_FN_ATTRS_INT8
|
||||
static void __tile_dpbuud(__tile1024i *dst, __tile1024i src0,
|
||||
__tile1024i src1) {
|
||||
dst->tile = _tile_dpbuud_internal(src0.row, src1.col, src0.col, dst->tile,
|
||||
src0.tile, src1.tile);
|
||||
}
|
||||
|
||||
/// Store the tile specified by "src" to memory specifieid by "base" address and
|
||||
/// "stride".
|
||||
///
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TILESTORED </c> instruction.
|
||||
///
|
||||
/// \param dst
|
||||
/// A destination tile. Max size is 1024 Bytes.
|
||||
/// \param base
|
||||
/// A pointer to base address.
|
||||
/// \param stride
|
||||
/// The stride between the rows' data to be stored in memory.
|
||||
__DEFAULT_FN_ATTRS_TILE
|
||||
static void __tile_stored(void *base, __SIZE_TYPE__ stride, __tile1024i src) {
|
||||
_tile_stored_internal(src.row, src.col, base, stride, src.tile);
|
||||
}
|
||||
|
||||
/// Zero the tile specified by "dst".
|
||||
///
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TILEZERO </c> instruction.
|
||||
///
|
||||
/// \param dst
|
||||
/// The destination tile to be zero. Max size is 1024 Bytes.
|
||||
__DEFAULT_FN_ATTRS_TILE
|
||||
static void __tile_zero(__tile1024i *dst) {
|
||||
dst->tile = __builtin_ia32_tilezero_internal(dst->row, dst->col);
|
||||
}
|
||||
|
||||
/// Compute dot-product of BF16 (16-bit) floating-point pairs in tiles src0 and
|
||||
/// src1, accumulating the intermediate single-precision (32-bit) floating-point
|
||||
/// elements with elements in "dst", and store the 32-bit result back to tile
|
||||
/// "dst".
|
||||
///
|
||||
/// \headerfile <immintrin.h>
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> TDPBF16PS </c> instruction.
|
||||
///
|
||||
/// \param dst
|
||||
/// The destination tile. Max size is 1024 Bytes.
|
||||
/// \param src0
|
||||
/// The 1st source tile. Max size is 1024 Bytes.
|
||||
/// \param src1
|
||||
/// The 2nd source tile. Max size is 1024 Bytes.
|
||||
__DEFAULT_FN_ATTRS_BF16
|
||||
static void __tile_dpbf16ps(__tile1024i *dst, __tile1024i src0,
|
||||
__tile1024i src1) {
|
||||
dst->tile = _tile_dpbf16ps_internal(src0.row, src1.col, src0.col, dst->tile,
|
||||
src0.tile, src1.tile);
|
||||
}
|
||||
|
||||
#undef __DEFAULT_FN_ATTRS_TILE
|
||||
#undef __DEFAULT_FN_ATTRS_INT8
|
||||
#undef __DEFAULT_FN_ATTRS_BF16
|
||||
|
||||
#endif /* __x86_64__ */
|
||||
#endif /* __AMXINTRIN_H */
|
||||
|
||||
55
lib/include/arm_acle.h
vendored
55
lib/include/arm_acle.h
vendored
@@ -639,6 +639,49 @@ __jcvt(double __a) {
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Armv8.5-A FP rounding intrinsics */
|
||||
#if __ARM_64BIT_STATE && defined(__ARM_FEATURE_FRINT)
|
||||
static __inline__ float __attribute__((__always_inline__, __nodebug__))
|
||||
__frint32zf(float __a) {
|
||||
return __builtin_arm_frint32zf(__a);
|
||||
}
|
||||
|
||||
static __inline__ double __attribute__((__always_inline__, __nodebug__))
|
||||
__frint32z(double __a) {
|
||||
return __builtin_arm_frint32z(__a);
|
||||
}
|
||||
|
||||
static __inline__ float __attribute__((__always_inline__, __nodebug__))
|
||||
__frint64zf(float __a) {
|
||||
return __builtin_arm_frint64zf(__a);
|
||||
}
|
||||
|
||||
static __inline__ double __attribute__((__always_inline__, __nodebug__))
|
||||
__frint64z(double __a) {
|
||||
return __builtin_arm_frint64z(__a);
|
||||
}
|
||||
|
||||
static __inline__ float __attribute__((__always_inline__, __nodebug__))
|
||||
__frint32xf(float __a) {
|
||||
return __builtin_arm_frint32xf(__a);
|
||||
}
|
||||
|
||||
static __inline__ double __attribute__((__always_inline__, __nodebug__))
|
||||
__frint32x(double __a) {
|
||||
return __builtin_arm_frint32x(__a);
|
||||
}
|
||||
|
||||
static __inline__ float __attribute__((__always_inline__, __nodebug__))
|
||||
__frint64xf(float __a) {
|
||||
return __builtin_arm_frint64xf(__a);
|
||||
}
|
||||
|
||||
static __inline__ double __attribute__((__always_inline__, __nodebug__))
|
||||
__frint64x(double __a) {
|
||||
return __builtin_arm_frint64x(__a);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Armv8.7-A load/store 64-byte intrinsics */
|
||||
#if __ARM_64BIT_STATE && defined(__ARM_FEATURE_LS64)
|
||||
typedef struct {
|
||||
@@ -709,6 +752,18 @@ __arm_st64bv0(void *__addr, data512_t __value) {
|
||||
|
||||
#endif /* __ARM_FEATURE_TME */
|
||||
|
||||
/* Armv8.5-A Random number generation intrinsics */
|
||||
#if __ARM_64BIT_STATE && defined(__ARM_FEATURE_RNG)
|
||||
static __inline__ int __attribute__((__always_inline__, __nodebug__))
|
||||
__rndr(uint64_t *__p) {
|
||||
return __builtin_arm_rndr(__p);
|
||||
}
|
||||
static __inline__ int __attribute__((__always_inline__, __nodebug__))
|
||||
__rndrrs(uint64_t *__p) {
|
||||
return __builtin_arm_rndrrs(__p);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
1242
lib/include/arm_neon.h
vendored
1242
lib/include/arm_neon.h
vendored
File diff suppressed because it is too large
Load Diff
17687
lib/include/arm_sve.h
vendored
17687
lib/include/arm_sve.h
vendored
File diff suppressed because it is too large
Load Diff
212
lib/include/avx512fintrin.h
vendored
212
lib/include/avx512fintrin.h
vendored
@@ -9300,8 +9300,11 @@ _mm512_mask_abs_pd(__m512d __W, __mmask8 __K, __m512d __A)
|
||||
* computations. In vector-reduction arithmetic, the evaluation order is
|
||||
* independent of the order of the input elements of V.
|
||||
|
||||
* For floating point types, we always assume the elements are reassociable even
|
||||
* if -fast-math is off.
|
||||
* For floating-point intrinsics:
|
||||
* 1. When using fadd/fmul intrinsics, the order of operations within the
|
||||
* vector is unspecified (associative math).
|
||||
* 2. When using fmin/fmax intrinsics, NaN or -0.0 elements within the vector
|
||||
* produce unspecified results.
|
||||
|
||||
* Used bisection method. At each step, we partition the vector with previous
|
||||
* step in half, and the operation is performed on its two halves.
|
||||
@@ -9524,75 +9527,49 @@ _mm512_mask_reduce_min_epu32(__mmask16 __M, __m512i __V) {
|
||||
return __builtin_ia32_reduce_umin_d512((__v16si)__V);
|
||||
}
|
||||
|
||||
#define _mm512_mask_reduce_operator(op) \
|
||||
__m256d __t1 = _mm512_extractf64x4_pd(__V, 0); \
|
||||
__m256d __t2 = _mm512_extractf64x4_pd(__V, 1); \
|
||||
__m256d __t3 = _mm256_##op(__t1, __t2); \
|
||||
__m128d __t4 = _mm256_extractf128_pd(__t3, 0); \
|
||||
__m128d __t5 = _mm256_extractf128_pd(__t3, 1); \
|
||||
__m128d __t6 = _mm_##op(__t4, __t5); \
|
||||
__m128d __t7 = __builtin_shufflevector(__t6, __t6, 1, 0); \
|
||||
__m128d __t8 = _mm_##op(__t6, __t7); \
|
||||
return __t8[0]
|
||||
|
||||
static __inline__ double __DEFAULT_FN_ATTRS512
|
||||
_mm512_reduce_max_pd(__m512d __V) {
|
||||
_mm512_mask_reduce_operator(max_pd);
|
||||
return __builtin_ia32_reduce_fmax_pd512(__V);
|
||||
}
|
||||
|
||||
static __inline__ double __DEFAULT_FN_ATTRS512
|
||||
_mm512_reduce_min_pd(__m512d __V) {
|
||||
_mm512_mask_reduce_operator(min_pd);
|
||||
return __builtin_ia32_reduce_fmin_pd512(__V);
|
||||
}
|
||||
|
||||
static __inline__ double __DEFAULT_FN_ATTRS512
|
||||
_mm512_mask_reduce_max_pd(__mmask8 __M, __m512d __V) {
|
||||
__V = _mm512_mask_mov_pd(_mm512_set1_pd(-__builtin_inf()), __M, __V);
|
||||
_mm512_mask_reduce_operator(max_pd);
|
||||
return __builtin_ia32_reduce_fmax_pd512(__V);
|
||||
}
|
||||
|
||||
static __inline__ double __DEFAULT_FN_ATTRS512
|
||||
_mm512_mask_reduce_min_pd(__mmask8 __M, __m512d __V) {
|
||||
__V = _mm512_mask_mov_pd(_mm512_set1_pd(__builtin_inf()), __M, __V);
|
||||
_mm512_mask_reduce_operator(min_pd);
|
||||
return __builtin_ia32_reduce_fmin_pd512(__V);
|
||||
}
|
||||
#undef _mm512_mask_reduce_operator
|
||||
|
||||
#define _mm512_mask_reduce_operator(op) \
|
||||
__m256 __t1 = (__m256)_mm512_extractf64x4_pd((__m512d)__V, 0); \
|
||||
__m256 __t2 = (__m256)_mm512_extractf64x4_pd((__m512d)__V, 1); \
|
||||
__m256 __t3 = _mm256_##op(__t1, __t2); \
|
||||
__m128 __t4 = _mm256_extractf128_ps(__t3, 0); \
|
||||
__m128 __t5 = _mm256_extractf128_ps(__t3, 1); \
|
||||
__m128 __t6 = _mm_##op(__t4, __t5); \
|
||||
__m128 __t7 = __builtin_shufflevector(__t6, __t6, 2, 3, 0, 1); \
|
||||
__m128 __t8 = _mm_##op(__t6, __t7); \
|
||||
__m128 __t9 = __builtin_shufflevector(__t8, __t8, 1, 0, 3, 2); \
|
||||
__m128 __t10 = _mm_##op(__t8, __t9); \
|
||||
return __t10[0]
|
||||
|
||||
static __inline__ float __DEFAULT_FN_ATTRS512
|
||||
_mm512_reduce_max_ps(__m512 __V) {
|
||||
_mm512_mask_reduce_operator(max_ps);
|
||||
return __builtin_ia32_reduce_fmax_ps512(__V);
|
||||
}
|
||||
|
||||
static __inline__ float __DEFAULT_FN_ATTRS512
|
||||
_mm512_reduce_min_ps(__m512 __V) {
|
||||
_mm512_mask_reduce_operator(min_ps);
|
||||
return __builtin_ia32_reduce_fmin_ps512(__V);
|
||||
}
|
||||
|
||||
static __inline__ float __DEFAULT_FN_ATTRS512
|
||||
_mm512_mask_reduce_max_ps(__mmask16 __M, __m512 __V) {
|
||||
__V = _mm512_mask_mov_ps(_mm512_set1_ps(-__builtin_inff()), __M, __V);
|
||||
_mm512_mask_reduce_operator(max_ps);
|
||||
return __builtin_ia32_reduce_fmax_ps512(__V);
|
||||
}
|
||||
|
||||
static __inline__ float __DEFAULT_FN_ATTRS512
|
||||
_mm512_mask_reduce_min_ps(__mmask16 __M, __m512 __V) {
|
||||
__V = _mm512_mask_mov_ps(_mm512_set1_ps(__builtin_inff()), __M, __V);
|
||||
_mm512_mask_reduce_operator(min_ps);
|
||||
return __builtin_ia32_reduce_fmin_ps512(__V);
|
||||
}
|
||||
#undef _mm512_mask_reduce_operator
|
||||
|
||||
/// Moves the least significant 32 bits of a vector of [16 x i32] to a
|
||||
/// 32-bit signed integer value.
|
||||
@@ -9611,6 +9588,169 @@ _mm512_cvtsi512_si32(__m512i __A) {
|
||||
return __b[0];
|
||||
}
|
||||
|
||||
/// Loads 8 double-precision (64-bit) floating-point elements stored at memory
|
||||
/// locations starting at location \a base_addr at packed 32-bit integer indices
|
||||
/// stored in the lower half of \a vindex scaled by \a scale them in dst.
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> VGATHERDPD </c> instructions.
|
||||
///
|
||||
/// \operation
|
||||
/// FOR j := 0 to 7
|
||||
/// i := j*64
|
||||
/// m := j*32
|
||||
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
||||
/// dst[i+63:i] := MEM[addr+63:addr]
|
||||
/// ENDFOR
|
||||
/// dst[MAX:512] := 0
|
||||
/// \endoperation
|
||||
#define _mm512_i32logather_pd(vindex, base_addr, scale) \
|
||||
_mm512_i32gather_pd(_mm512_castsi512_si256(vindex), (base_addr), (scale))
|
||||
|
||||
/// Loads 8 double-precision (64-bit) floating-point elements from memory
|
||||
/// starting at location \a base_addr at packed 32-bit integer indices stored in
|
||||
/// the lower half of \a vindex scaled by \a scale into dst using writemask
|
||||
/// \a mask (elements are copied from \a src when the corresponding mask bit is
|
||||
/// not set).
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> VGATHERDPD </c> instructions.
|
||||
///
|
||||
/// \operation
|
||||
/// FOR j := 0 to 7
|
||||
/// i := j*64
|
||||
/// m := j*32
|
||||
/// IF mask[j]
|
||||
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
||||
/// dst[i+63:i] := MEM[addr+63:addr]
|
||||
/// ELSE
|
||||
/// dst[i+63:i] := src[i+63:i]
|
||||
/// FI
|
||||
/// ENDFOR
|
||||
/// dst[MAX:512] := 0
|
||||
/// \endoperation
|
||||
#define _mm512_mask_i32logather_pd(src, mask, vindex, base_addr, scale) \
|
||||
_mm512_mask_i32gather_pd((src), (mask), _mm512_castsi512_si256(vindex), \
|
||||
(base_addr), (scale))
|
||||
|
||||
/// Loads 8 64-bit integer elements from memory starting at location \a base_addr
|
||||
/// at packed 32-bit integer indices stored in the lower half of \a vindex
|
||||
/// scaled by \a scale and stores them in dst.
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> VPGATHERDQ </c> instructions.
|
||||
///
|
||||
/// \operation
|
||||
/// FOR j := 0 to 7
|
||||
/// i := j*64
|
||||
/// m := j*32
|
||||
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
||||
/// dst[i+63:i] := MEM[addr+63:addr]
|
||||
/// ENDFOR
|
||||
/// dst[MAX:512] := 0
|
||||
/// \endoperation
|
||||
#define _mm512_i32logather_epi64(vindex, base_addr, scale) \
|
||||
_mm512_i32gather_epi64(_mm512_castsi512_si256(vindex), (base_addr), (scale))
|
||||
|
||||
/// Loads 8 64-bit integer elements from memory starting at location \a base_addr
|
||||
/// at packed 32-bit integer indices stored in the lower half of \a vindex
|
||||
/// scaled by \a scale and stores them in dst using writemask \a mask (elements
|
||||
/// are copied from \a src when the corresponding mask bit is not set).
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> VPGATHERDQ </c> instructions.
|
||||
///
|
||||
/// \operation
|
||||
/// FOR j := 0 to 7
|
||||
/// i := j*64
|
||||
/// m := j*32
|
||||
/// IF mask[j]
|
||||
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
||||
/// dst[i+63:i] := MEM[addr+63:addr]
|
||||
/// ELSE
|
||||
/// dst[i+63:i] := src[i+63:i]
|
||||
/// FI
|
||||
/// ENDFOR
|
||||
/// dst[MAX:512] := 0
|
||||
/// \endoperation
|
||||
#define _mm512_mask_i32logather_epi64(src, mask, vindex, base_addr, scale) \
|
||||
_mm512_mask_i32gather_epi64((src), (mask), _mm512_castsi512_si256(vindex), \
|
||||
(base_addr), (scale))
|
||||
|
||||
/// Stores 8 packed double-precision (64-bit) floating-point elements in \a v1
|
||||
/// and to memory locations starting at location \a base_addr at packed 32-bit
|
||||
/// integer indices stored in \a vindex scaled by \a scale.
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> VSCATTERDPD </c> instructions.
|
||||
///
|
||||
/// \operation
|
||||
/// FOR j := 0 to 7
|
||||
/// i := j*64
|
||||
/// m := j*32
|
||||
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
||||
/// MEM[addr+63:addr] := v1[i+63:i]
|
||||
/// ENDFOR
|
||||
/// \endoperation
|
||||
#define _mm512_i32loscatter_pd(base_addr, vindex, v1, scale) \
|
||||
_mm512_i32scatter_pd((base_addr), _mm512_castsi512_si256(vindex), (v1), (scale))
|
||||
|
||||
/// Stores 8 packed double-precision (64-bit) floating-point elements in \a v1
|
||||
/// to memory locations starting at location \a base_addr at packed 32-bit
|
||||
/// integer indices stored in \a vindex scaled by \a scale. Only those elements
|
||||
/// whose corresponding mask bit is set in writemask \a mask are written to
|
||||
/// memory.
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> VSCATTERDPD </c> instructions.
|
||||
///
|
||||
/// \operation
|
||||
/// FOR j := 0 to 7
|
||||
/// i := j*64
|
||||
/// m := j*32
|
||||
/// IF mask[j]
|
||||
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
||||
/// MEM[addr+63:addr] := a[i+63:i]
|
||||
/// FI
|
||||
/// ENDFOR
|
||||
/// \endoperation
|
||||
#define _mm512_mask_i32loscatter_pd(base_addr, mask, vindex, v1, scale) \
|
||||
_mm512_mask_i32scatter_pd((base_addr), (mask), \
|
||||
_mm512_castsi512_si256(vindex), (v1), (scale))
|
||||
|
||||
/// Stores 8 packed 64-bit integer elements located in \a v1 and stores them in
|
||||
/// memory locations starting at location \a base_addr at packed 32-bit integer
|
||||
/// indices stored in \a vindex scaled by \a scale.
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> VPSCATTERDQ </c> instructions.
|
||||
///
|
||||
/// \operation
|
||||
/// FOR j := 0 to 7
|
||||
/// i := j*64
|
||||
/// m := j*32
|
||||
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
||||
/// MEM[addr+63:addr] := a[i+63:i]
|
||||
/// ENDFOR
|
||||
/// \endoperation
|
||||
#define _mm512_i32loscatter_epi64(base_addr, vindex, v1, scale) \
|
||||
_mm512_i32scatter_epi64((base_addr), \
|
||||
_mm512_castsi512_si256(vindex), (v1), (scale))
|
||||
|
||||
/// Stores 8 packed 64-bit integer elements located in a and stores them in
|
||||
/// memory locations starting at location \a base_addr at packed 32-bit integer
|
||||
/// indices stored in \a vindex scaled by scale using writemask \a mask (elements
|
||||
/// whose corresponding mask bit is not set are not written to memory).
|
||||
///
|
||||
/// This intrinsic corresponds to the <c> VPSCATTERDQ </c> instructions.
|
||||
///
|
||||
/// \operation
|
||||
/// FOR j := 0 to 7
|
||||
/// i := j*64
|
||||
/// m := j*32
|
||||
/// IF mask[j]
|
||||
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
||||
/// MEM[addr+63:addr] := a[i+63:i]
|
||||
/// FI
|
||||
/// ENDFOR
|
||||
/// \endoperation
|
||||
#define _mm512_mask_i32loscatter_epi64(base_addr, mask, vindex, v1, scale) \
|
||||
_mm512_mask_i32scatter_epi64((base_addr), (mask), \
|
||||
_mm512_castsi512_si256(vindex), (v1), (scale))
|
||||
|
||||
#undef __DEFAULT_FN_ATTRS512
|
||||
#undef __DEFAULT_FN_ATTRS128
|
||||
#undef __DEFAULT_FN_ATTRS
|
||||
|
||||
16
lib/include/builtins.h
vendored
Normal file
16
lib/include/builtins.h
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/*===---- builtins.h - Standard header for extra builtins -----------------===*\
|
||||
*
|
||||
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
* See https://llvm.org/LICENSE.txt for license information.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
/// Some legacy compilers have builtin definitions in a file named builtins.h.
|
||||
/// This header file has been added to allow compatibility with code that was
|
||||
/// written for those compilers. Code may have an include line for this file
|
||||
/// and to avoid an error an empty file with this name is provided.
|
||||
#ifndef __BUILTINS_H
|
||||
#define __BUILTINS_H
|
||||
|
||||
#endif /* __BUILTINS_H */
|
||||
8
lib/include/cuda_wrappers/complex
vendored
8
lib/include/cuda_wrappers/complex
vendored
@@ -72,8 +72,16 @@
|
||||
#define _GLIBCXX_USE_C99_COMPLEX 0
|
||||
#define _GLIBCXX_USE_C99_COMPLEX_TR1 0
|
||||
|
||||
// Work around a compatibility issue with libstdc++ 11.1.0
|
||||
// https://bugs.llvm.org/show_bug.cgi?id=50383
|
||||
#pragma push_macro("__failed_assertion")
|
||||
#if _GLIBCXX_RELEASE == 11
|
||||
#define __failed_assertion __cuda_failed_assertion
|
||||
#endif
|
||||
|
||||
#include_next <complex>
|
||||
|
||||
#pragma pop_macro("__failed_assertion")
|
||||
#pragma pop_macro("_GLIBCXX_USE_C99_COMPLEX_TR1")
|
||||
#pragma pop_macro("_GLIBCXX_USE_C99_COMPLEX")
|
||||
|
||||
|
||||
298
lib/include/hexagon_circ_brev_intrinsics.h
vendored
Normal file
298
lib/include/hexagon_circ_brev_intrinsics.h
vendored
Normal file
@@ -0,0 +1,298 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef _HEXAGON_CIRC_BREV_INTRINSICS_H_
|
||||
#define _HEXAGON_CIRC_BREV_INTRINSICS_H_ 1
|
||||
|
||||
#include <hexagon_protos.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/* Circular Load */
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_circ_load_update_D(Word64 dst, Word64 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_circ_load_update_D(dest,ptr,incr,bufsize,K) \
|
||||
{ ptr = (int64_t *) HEXAGON_circ_ldd (ptr, &(dest), ((((K)+1)<<24)|((bufsize)<<3)), ((incr)*8)); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_circ_load_update_W(Word32 dst, Word32 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_circ_load_update_W(dest,ptr,incr,bufsize,K) \
|
||||
{ ptr = (int *) HEXAGON_circ_ldw (ptr, &(dest), (((K)<<24)|((bufsize)<<2)), ((incr)*4)); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_circ_load_update_H(Word16 dst, Word16 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_circ_load_update_H(dest,ptr,incr,bufsize,K) \
|
||||
{ ptr = (int16_t *) HEXAGON_circ_ldh (ptr, &(dest), ((((K)-1)<<24)|((bufsize)<<1)), ((incr)*2)); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_circ_load_update_UH( UWord16 dst, UWord16 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_circ_load_update_UH(dest,ptr,incr,bufsize,K) \
|
||||
{ ptr = (uint16_t *) HEXAGON_circ_lduh (ptr, &(dest), ((((K)-1)<<24)|((bufsize)<<1)), ((incr)*2)); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_circ_load_update_B(Word8 dst, Word8 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_circ_load_update_B(dest,ptr,incr,bufsize,K) \
|
||||
{ ptr = (int8_t *) HEXAGON_circ_ldb (ptr, &(dest), ((((K)-2)<<24)|(bufsize)), incr); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_circ_load_update_UB(UWord8 dst, UWord8 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_circ_load_update_UB(dest,ptr,incr,bufsize,K) \
|
||||
{ ptr = (uint8_t *) HEXAGON_circ_ldub (ptr, &(dest), ((((K)-2)<<24)|(bufsize)), incr); }
|
||||
|
||||
/* Circular Store */
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_circ_store_update_D(Word64 *src, Word64 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_circ_store_update_D(src,ptr,incr,bufsize,K) \
|
||||
{ ptr = (int64_t *) HEXAGON_circ_std (ptr, src, ((((K)+1)<<24)|((bufsize)<<3)), ((incr)*8)); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_circ_store_update_W(Word32 *src, Word32 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_circ_store_update_W(src,ptr,incr,bufsize,K) \
|
||||
{ ptr = (int *) HEXAGON_circ_stw (ptr, src, (((K)<<24)|((bufsize)<<2)), ((incr)*4)); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_circ_store_update_HL(Word16 *src, Word16 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_circ_store_update_HL(src,ptr,incr,bufsize,K) \
|
||||
{ ptr = (int16_t *) HEXAGON_circ_sth (ptr, src, ((((K)-1)<<24)|((bufsize)<<1)), ((incr)*2)); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_circ_store_update_HH(Word16 *src, Word16 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_circ_store_update_HH(src,ptr,incr,bufsize,K) \
|
||||
{ ptr = (int16_t *) HEXAGON_circ_sthhi (ptr, src, ((((K)-1)<<24)|((bufsize)<<1)), ((incr)*2)); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_circ_store_update_B(Word8 *src, Word8 *ptr, UWord32 I4, UWord32 bufsize, UWord64 K)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_circ_store_update_B(src,ptr,incr,bufsize,K) \
|
||||
{ ptr = (int8_t *) HEXAGON_circ_stb (ptr, src, ((((K)-2)<<24)|(bufsize)), incr); }
|
||||
|
||||
|
||||
/* Bit Reverse Load */
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_bitrev_load_update_D(Word64 dst, Word64 *ptr, UWord32 Iu4)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_bitrev_load_update_D(dest,ptr,log2bufsize) \
|
||||
{ ptr = (int64_t *) HEXAGON_brev_ldd (ptr, &(dest), (1<<(16-((log2bufsize) + 3)))); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_bitrev_load_update_W(Word32 dst, Word32 *ptr, UWord32 Iu4)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_bitrev_load_update_W(dest,ptr,log2bufsize) \
|
||||
{ ptr = (int *) HEXAGON_brev_ldw (ptr, &(dest), (1<<(16-((log2bufsize) + 2)))); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_bitrev_load_update_H(Word16 dst, Word16 *ptr, UWord32 Iu4)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_bitrev_load_update_H(dest,ptr,log2bufsize) \
|
||||
{ ptr = (int16_t *) HEXAGON_brev_ldh (ptr, &(dest), (1<<(16-((log2bufsize) + 1)))); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_bitrev_load_update_UH(UWord16 dst, UWord16 *ptr, UWord32 Iu4)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_bitrev_load_update_UH(dest,ptr,log2bufsize) \
|
||||
{ ptr = (uint16_t *) HEXAGON_brev_lduh (ptr, &(dest), (1<<(16-((log2bufsize) + 1)))); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_bitrev_load_update_B(Word8 dst, Word8 *ptr, UWord32 Iu4)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_bitrev_load_update_B(dest,ptr,log2bufsize) \
|
||||
{ ptr = (int8_t *) HEXAGON_brev_ldb (ptr, &(dest), (1<<(16-((log2bufsize))))); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_bitrev_load_update_UB(UWord8 dst, UWord8 *ptr, UWord32 Iu4)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_bitrev_load_update_UB(dest,ptr,log2bufsize) \
|
||||
{ ptr = (uint8_t *) HEXAGON_brev_ldub (ptr, &(dest), (1<<(16-((log2bufsize))))); }
|
||||
|
||||
/* Bit Reverse Store */
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_bitrev_store_update_D(Word64 *src, Word64 *ptr, UWord32 Iu4)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_bitrev_store_update_D(src,ptr,log2bufsize) \
|
||||
{ ptr = (int64_t *) HEXAGON_brev_std (ptr, src, (1<<(16-((log2bufsize) + 3)))); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_bitrev_store_update_W(Word32 *src, Word32 *ptr, UWord32 Iu4)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_bitrev_store_update_W(src,ptr,log2bufsize) \
|
||||
{ ptr = (int *) HEXAGON_brev_stw (ptr, src, (1<<(16-((log2bufsize) + 2)))); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_bitrev_store_update_HL(Word16 *src, Word16 *ptr, Word32 Iu4)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_bitrev_store_update_HL(src,ptr,log2bufsize) \
|
||||
{ ptr = (int16_t *) HEXAGON_brev_sth (ptr, src, (1<<(16-((log2bufsize) + 1)))); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_bitrev_store_update_HH(Word16 *src, Word16 *ptr, UWord32 Iu4)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_bitrev_store_update_HH(src,ptr,log2bufsize) \
|
||||
{ ptr = (int16_t *) HEXAGON_brev_sthhi (ptr, src, (1<<(16-((log2bufsize) + 1)))); }
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: void Q6_bitrev_store_update_B(Word8 *src, Word8 *ptr, UWord32 Iu4)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#define Q6_bitrev_store_update_B(src,ptr,log2bufsize) \
|
||||
{ ptr = (int8_t *) HEXAGON_brev_stb (ptr, src, (1<<(16-((log2bufsize))))); }
|
||||
|
||||
|
||||
#define HEXAGON_circ_ldd __builtin_circ_ldd
|
||||
#define HEXAGON_circ_ldw __builtin_circ_ldw
|
||||
#define HEXAGON_circ_ldh __builtin_circ_ldh
|
||||
#define HEXAGON_circ_lduh __builtin_circ_lduh
|
||||
#define HEXAGON_circ_ldb __builtin_circ_ldb
|
||||
#define HEXAGON_circ_ldub __builtin_circ_ldub
|
||||
|
||||
|
||||
#define HEXAGON_circ_std __builtin_circ_std
|
||||
#define HEXAGON_circ_stw __builtin_circ_stw
|
||||
#define HEXAGON_circ_sth __builtin_circ_sth
|
||||
#define HEXAGON_circ_sthhi __builtin_circ_sthhi
|
||||
#define HEXAGON_circ_stb __builtin_circ_stb
|
||||
|
||||
|
||||
#define HEXAGON_brev_ldd __builtin_brev_ldd
|
||||
#define HEXAGON_brev_ldw __builtin_brev_ldw
|
||||
#define HEXAGON_brev_ldh __builtin_brev_ldh
|
||||
#define HEXAGON_brev_lduh __builtin_brev_lduh
|
||||
#define HEXAGON_brev_ldb __builtin_brev_ldb
|
||||
#define HEXAGON_brev_ldub __builtin_brev_ldub
|
||||
|
||||
#define HEXAGON_brev_std __builtin_brev_std
|
||||
#define HEXAGON_brev_stw __builtin_brev_stw
|
||||
#define HEXAGON_brev_sth __builtin_brev_sth
|
||||
#define HEXAGON_brev_sthhi __builtin_brev_sthhi
|
||||
#define HEXAGON_brev_stb __builtin_brev_stb
|
||||
|
||||
#ifdef __HVX__
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: if (Qt) vmem(Rt+#0) = Vs
|
||||
C Intrinsic Prototype: void Q6_vmaskedstoreq_QAV(HVX_VectorPred Qt, HVX_VectorAddress A, HVX_Vector Vs)
|
||||
Instruction Type: COPROC_VMEM
|
||||
Execution Slots: SLOT0
|
||||
========================================================================== */
|
||||
|
||||
#define Q6_vmaskedstoreq_QAV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaskedstoreq)
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: if (!Qt) vmem(Rt+#0) = Vs
|
||||
C Intrinsic Prototype: void Q6_vmaskedstorenq_QAV(HVX_VectorPred Qt, HVX_VectorAddress A, HVX_Vector Vs)
|
||||
Instruction Type: COPROC_VMEM
|
||||
Execution Slots: SLOT0
|
||||
========================================================================== */
|
||||
|
||||
#define Q6_vmaskedstorenq_QAV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaskedstorenq)
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: if (Qt) vmem(Rt+#0):nt = Vs
|
||||
C Intrinsic Prototype: void Q6_vmaskedstorentq_QAV(HVX_VectorPred Qt, HVX_VectorAddress A, HVX_Vector Vs)
|
||||
Instruction Type: COPROC_VMEM
|
||||
Execution Slots: SLOT0
|
||||
========================================================================== */
|
||||
|
||||
#define Q6_vmaskedstorentq_QAV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaskedstorentq)
|
||||
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: if (!Qt) vmem(Rt+#0):nt = Vs
|
||||
C Intrinsic Prototype: void Q6_vmaskedstorentnq_QAV(HVX_VectorPred Qt, HVX_VectorAddress A, HVX_Vector Vs)
|
||||
Instruction Type: COPROC_VMEM
|
||||
Execution Slots: SLOT0
|
||||
========================================================================== */
|
||||
|
||||
#define Q6_vmaskedstorentnq_QAV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaskedstorentnq)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* #ifndef _HEXAGON_CIRC_BREV_INTRINSICS_H_ */
|
||||
|
||||
#ifdef __NOT_DEFINED__
|
||||
/*** comment block template ***/
|
||||
/* ==========================================================================
|
||||
Assembly Syntax: Return=instruction()
|
||||
C Intrinsic Prototype: ReturnType Intrinsic(ParamType Rs, ParamType Rt)
|
||||
Instruction Type: InstructionType
|
||||
Execution Slots: SLOT0123
|
||||
========================================================================== */
|
||||
#endif /*** __NOT_DEFINED__ ***/
|
||||
8450
lib/include/hexagon_protos.h
vendored
Normal file
8450
lib/include/hexagon_protos.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2653
lib/include/hexagon_types.h
vendored
Normal file
2653
lib/include/hexagon_types.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4392
lib/include/hvx_hexagon_protos.h
vendored
Normal file
4392
lib/include/hvx_hexagon_protos.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10
lib/include/immintrin.h
vendored
10
lib/include/immintrin.h
vendored
@@ -72,11 +72,6 @@
|
||||
#include <f16cintrin.h>
|
||||
#endif
|
||||
|
||||
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
||||
defined(__VPCLMULQDQ__)
|
||||
#include <vpclmulqdqintrin.h>
|
||||
#endif
|
||||
|
||||
/* No feature check desired due to internal checks */
|
||||
#include <bmiintrin.h>
|
||||
|
||||
@@ -230,6 +225,11 @@
|
||||
#include <pkuintrin.h>
|
||||
#endif
|
||||
|
||||
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
||||
defined(__VPCLMULQDQ__)
|
||||
#include <vpclmulqdqintrin.h>
|
||||
#endif
|
||||
|
||||
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
||||
defined(__VAES__)
|
||||
#include <vaesintrin.h>
|
||||
|
||||
52
lib/include/intrin.h
vendored
52
lib/include/intrin.h
vendored
@@ -451,24 +451,47 @@ unsigned char _InterlockedCompareExchange128_rel(__int64 volatile *_Destination,
|
||||
static __inline__ void __DEFAULT_FN_ATTRS __movsb(unsigned char *__dst,
|
||||
unsigned char const *__src,
|
||||
size_t __n) {
|
||||
__asm__ __volatile__("rep movsb" : "+D"(__dst), "+S"(__src), "+c"(__n)
|
||||
: : "memory");
|
||||
#if defined(__x86_64__)
|
||||
__asm__ __volatile__("rep movsb"
|
||||
: "+D"(__dst), "+S"(__src), "+c"(__n)
|
||||
:
|
||||
: "memory");
|
||||
#else
|
||||
__asm__ __volatile__("xchg %%esi, %1\nrep movsb\nxchg %%esi, %1"
|
||||
: "+D"(__dst), "+r"(__src), "+c"(__n)
|
||||
:
|
||||
: "memory");
|
||||
#endif
|
||||
}
|
||||
static __inline__ void __DEFAULT_FN_ATTRS __movsd(unsigned long *__dst,
|
||||
unsigned long const *__src,
|
||||
size_t __n) {
|
||||
#if defined(__x86_64__)
|
||||
__asm__ __volatile__("rep movsl"
|
||||
: "+D"(__dst), "+S"(__src), "+c"(__n)
|
||||
:
|
||||
: "memory");
|
||||
#else
|
||||
__asm__ __volatile__("xchg %%esi, %1\nrep movsl\nxchg %%esi, %1"
|
||||
: "+D"(__dst), "+r"(__src), "+c"(__n)
|
||||
:
|
||||
: "memory");
|
||||
#endif
|
||||
}
|
||||
static __inline__ void __DEFAULT_FN_ATTRS __movsw(unsigned short *__dst,
|
||||
unsigned short const *__src,
|
||||
size_t __n) {
|
||||
#if defined(__x86_64__)
|
||||
__asm__ __volatile__("rep movsw"
|
||||
: "+D"(__dst), "+S"(__src), "+c"(__n)
|
||||
:
|
||||
: "memory");
|
||||
#else
|
||||
__asm__ __volatile__("xchg %%esi, %1\nrep movsw\nxchg %%esi, %1"
|
||||
: "+D"(__dst), "+r"(__src), "+c"(__n)
|
||||
:
|
||||
: "memory");
|
||||
#endif
|
||||
}
|
||||
static __inline__ void __DEFAULT_FN_ATTRS __stosd(unsigned long *__dst,
|
||||
unsigned long __x,
|
||||
@@ -507,16 +530,26 @@ static __inline__ void __DEFAULT_FN_ATTRS __stosq(unsigned __int64 *__dst,
|
||||
|* Misc
|
||||
\*----------------------------------------------------------------------------*/
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
#if defined(__i386__)
|
||||
#define __cpuid_count(__leaf, __count, __eax, __ebx, __ecx, __edx) \
|
||||
__asm("cpuid" \
|
||||
: "=a"(__eax), "=b"(__ebx), "=c"(__ecx), "=d"(__edx) \
|
||||
: "0"(__leaf), "2"(__count))
|
||||
#else
|
||||
/* x86-64 uses %rbx as the base register, so preserve it. */
|
||||
#define __cpuid_count(__leaf, __count, __eax, __ebx, __ecx, __edx) \
|
||||
__asm("xchgq %%rbx,%q1\n" \
|
||||
"cpuid\n" \
|
||||
"xchgq %%rbx,%q1" \
|
||||
: "=a"(__eax), "=r"(__ebx), "=c"(__ecx), "=d"(__edx) \
|
||||
: "0"(__leaf), "2"(__count))
|
||||
#endif
|
||||
static __inline__ void __DEFAULT_FN_ATTRS __cpuid(int __info[4], int __level) {
|
||||
__asm__("cpuid"
|
||||
: "=a"(__info[0]), "=b"(__info[1]), "=c"(__info[2]), "=d"(__info[3])
|
||||
: "a"(__level), "c"(0));
|
||||
__cpuid_count(__level, 0, __info[0], __info[1], __info[2], __info[3]);
|
||||
}
|
||||
static __inline__ void __DEFAULT_FN_ATTRS __cpuidex(int __info[4], int __level,
|
||||
int __ecx) {
|
||||
__asm__("cpuid"
|
||||
: "=a"(__info[0]), "=b"(__info[1]), "=c"(__info[2]), "=d"(__info[3])
|
||||
: "a"(__level), "c"(__ecx));
|
||||
__cpuid_count(__level, __ecx, __info[0], __info[1], __info[2], __info[3]);
|
||||
}
|
||||
static __inline__ void __DEFAULT_FN_ATTRS __halt(void) {
|
||||
__asm__ volatile("hlt");
|
||||
@@ -541,6 +574,9 @@ void _WriteStatusReg(int, __int64);
|
||||
unsigned short __cdecl _byteswap_ushort(unsigned short val);
|
||||
unsigned long __cdecl _byteswap_ulong (unsigned long val);
|
||||
unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64 val);
|
||||
|
||||
__int64 __mulh(__int64 __a, __int64 __b);
|
||||
unsigned __int64 __umulh(unsigned __int64 __a, unsigned __int64 __b);
|
||||
#endif
|
||||
|
||||
/*----------------------------------------------------------------------------*\
|
||||
|
||||
30
lib/include/keylockerintrin.h
vendored
30
lib/include/keylockerintrin.h
vendored
@@ -230,10 +230,12 @@ _mm_aesenc128kl_u8(__m128i* __odata, __m128i __idata, const void *__h) {
|
||||
/// HandleKeyType (Handle[511:0]) != HANDLE_KEY_TYPE_AES256 )
|
||||
/// IF (IllegalHandle)
|
||||
/// ZF := 1
|
||||
/// MEM[__odata+127:__odata] := 0
|
||||
/// ELSE
|
||||
/// (UnwrappedKey, Authentic) := UnwrapKeyAndAuthenticate512 (Handle[511:0], IWKey)
|
||||
/// IF (Authentic == 0)
|
||||
/// ZF := 1
|
||||
/// MEM[__odata+127:__odata] := 0
|
||||
/// ELSE
|
||||
/// MEM[__odata+127:__odata] := AES256Encrypt (__idata[127:0], UnwrappedKey)
|
||||
/// ZF := 0
|
||||
@@ -267,10 +269,12 @@ _mm_aesenc256kl_u8(__m128i* __odata, __m128i __idata, const void *__h) {
|
||||
/// HandleKeyType (Handle[383:0]) != HANDLE_KEY_TYPE_AES128)
|
||||
/// IF (IllegalHandle)
|
||||
/// ZF := 1
|
||||
/// MEM[__odata+127:__odata] := 0
|
||||
/// ELSE
|
||||
/// (UnwrappedKey, Authentic) := UnwrapKeyAndAuthenticate384 (Handle[383:0], IWKey)
|
||||
/// IF (Authentic == 0)
|
||||
/// ZF := 1
|
||||
/// MEM[__odata+127:__odata] := 0
|
||||
/// ELSE
|
||||
/// MEM[__odata+127:__odata] := AES128Decrypt (__idata[127:0], UnwrappedKey)
|
||||
/// ZF := 0
|
||||
@@ -304,10 +308,12 @@ _mm_aesdec128kl_u8(__m128i* __odata, __m128i __idata, const void *__h) {
|
||||
/// HandleKeyType (Handle[511:0]) != HANDLE_KEY_TYPE_AES256)
|
||||
/// IF (IllegalHandle)
|
||||
/// ZF := 1
|
||||
/// MEM[__odata+127:__odata] := 0
|
||||
/// ELSE
|
||||
/// (UnwrappedKey, Authentic) := UnwrapKeyAndAuthenticate512 (Handle[511:0], IWKey)
|
||||
/// IF (Authentic == 0)
|
||||
/// ZF := 1
|
||||
/// MEM[__odata+127:__odata] := 0
|
||||
/// ELSE
|
||||
/// MEM[__odata+127:__odata] := AES256Decrypt (__idata[127:0], UnwrappedKey)
|
||||
/// ZF := 0
|
||||
@@ -354,10 +360,16 @@ _mm_aesdec256kl_u8(__m128i* __odata, __m128i __idata, const void *__h) {
|
||||
/// HandleKeyType (Handle[383:0]) != HANDLE_KEY_TYPE_AES128 )
|
||||
/// IF (IllegalHandle)
|
||||
/// ZF := 1
|
||||
/// FOR i := 0 to 7
|
||||
/// __odata[i] := 0
|
||||
/// ENDFOR
|
||||
/// ELSE
|
||||
/// (UnwrappedKey, Authentic) := UnwrapKeyAndAuthenticate384 (Handle[383:0], IWKey)
|
||||
/// IF Authentic == 0
|
||||
/// ZF := 1
|
||||
/// FOR i := 0 to 7
|
||||
/// __odata[i] := 0
|
||||
/// ENDFOR
|
||||
/// ELSE
|
||||
/// FOR i := 0 to 7
|
||||
/// __odata[i] := AES128Encrypt (__idata[i], UnwrappedKey)
|
||||
@@ -394,10 +406,16 @@ _mm_aesencwide128kl_u8(__m128i __odata[8], const __m128i __idata[8], const void*
|
||||
/// HandleKeyType (Handle[511:0]) != HANDLE_KEY_TYPE_AES512 )
|
||||
/// IF (IllegalHandle)
|
||||
/// ZF := 1
|
||||
/// FOR i := 0 to 7
|
||||
/// __odata[i] := 0
|
||||
/// ENDFOR
|
||||
/// ELSE
|
||||
/// (UnwrappedKey, Authentic) := UnwrapKeyAndAuthenticate512 (Handle[511:0], IWKey)
|
||||
/// IF Authentic == 0
|
||||
/// ZF := 1
|
||||
/// FOR i := 0 to 7
|
||||
/// __odata[i] := 0
|
||||
/// ENDFOR
|
||||
/// ELSE
|
||||
/// FOR i := 0 to 7
|
||||
/// __odata[i] := AES256Encrypt (__idata[i], UnwrappedKey)
|
||||
@@ -434,10 +452,16 @@ _mm_aesencwide256kl_u8(__m128i __odata[8], const __m128i __idata[8], const void*
|
||||
/// HandleKeyType (Handle) != HANDLE_KEY_TYPE_AES128 )
|
||||
/// IF (IllegalHandle)
|
||||
/// ZF := 1
|
||||
/// FOR i := 0 to 7
|
||||
/// __odata[i] := 0
|
||||
/// ENDFOR
|
||||
/// ELSE
|
||||
/// (UnwrappedKey, Authentic) := UnwrapKeyAndAuthenticate384 (Handle[383:0], IWKey)
|
||||
/// IF Authentic == 0
|
||||
/// ZF := 1
|
||||
/// FOR i := 0 to 7
|
||||
/// __odata[i] := 0
|
||||
/// ENDFOR
|
||||
/// ELSE
|
||||
/// FOR i := 0 to 7
|
||||
/// __odata[i] := AES128Decrypt (__idata[i], UnwrappedKey)
|
||||
@@ -474,10 +498,16 @@ _mm_aesdecwide128kl_u8(__m128i __odata[8], const __m128i __idata[8], const void*
|
||||
/// HandleKeyType (Handle) != HANDLE_KEY_TYPE_AES512 )
|
||||
/// If (IllegalHandle)
|
||||
/// ZF := 1
|
||||
/// FOR i := 0 to 7
|
||||
/// __odata[i] := 0
|
||||
/// ENDFOR
|
||||
/// ELSE
|
||||
/// (UnwrappedKey, Authentic) := UnwrapKeyAndAuthenticate512 (Handle[511:0], IWKey)
|
||||
/// IF Authentic == 0
|
||||
/// ZF := 1
|
||||
/// FOR i := 0 to 7
|
||||
/// __odata[i] := 0
|
||||
/// ENDFOR
|
||||
/// ELSE
|
||||
/// FOR i := 0 to 7
|
||||
/// __odata[i] := AES256Decrypt (__idata[i], UnwrappedKey)
|
||||
|
||||
147
lib/include/opencl-c-base.h
vendored
147
lib/include/opencl-c-base.h
vendored
@@ -21,9 +21,37 @@
|
||||
#define cl_khr_subgroup_shuffle 1
|
||||
#define cl_khr_subgroup_shuffle_relative 1
|
||||
#define cl_khr_subgroup_clustered_reduce 1
|
||||
#define cl_khr_extended_bit_ops 1
|
||||
#define cl_khr_integer_dot_product 1
|
||||
#define __opencl_c_integer_dot_product_input_4x8bit 1
|
||||
#define __opencl_c_integer_dot_product_input_4x8bit_packed 1
|
||||
|
||||
#endif // defined(__SPIR__)
|
||||
#endif // (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
|
||||
|
||||
// Define feature macros for OpenCL C 2.0
|
||||
#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ == 200)
|
||||
#define __opencl_c_pipes 1
|
||||
#define __opencl_c_generic_address_space 1
|
||||
#define __opencl_c_work_group_collective_functions 1
|
||||
#define __opencl_c_atomic_order_acq_rel 1
|
||||
#define __opencl_c_atomic_order_seq_cst 1
|
||||
#define __opencl_c_atomic_scope_device 1
|
||||
#define __opencl_c_atomic_scope_all_devices 1
|
||||
#define __opencl_c_device_enqueue 1
|
||||
#define __opencl_c_read_write_images 1
|
||||
#define __opencl_c_program_scope_global_variables 1
|
||||
#define __opencl_c_images 1
|
||||
#endif
|
||||
|
||||
// Define header-only feature macros for OpenCL C 3.0.
|
||||
#if (__OPENCL_C_VERSION__ == 300)
|
||||
// For the SPIR target all features are supported.
|
||||
#if defined(__SPIR__)
|
||||
#define __opencl_c_atomic_scope_all_devices 1
|
||||
#endif // defined(__SPIR__)
|
||||
#endif // (__OPENCL_C_VERSION__ == 300)
|
||||
|
||||
// built-in scalar data types:
|
||||
|
||||
/**
|
||||
@@ -141,7 +169,9 @@ typedef double double8 __attribute__((ext_vector_type(8)));
|
||||
typedef double double16 __attribute__((ext_vector_type(16)));
|
||||
#endif
|
||||
|
||||
#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
|
||||
#if defined(__OPENCL_CPP_VERSION__)
|
||||
#define NULL nullptr
|
||||
#elif defined(__OPENCL_C_VERSION__)
|
||||
#define NULL ((void*)0)
|
||||
#endif
|
||||
|
||||
@@ -297,7 +327,12 @@ typedef enum memory_scope {
|
||||
memory_scope_work_item = __OPENCL_MEMORY_SCOPE_WORK_ITEM,
|
||||
memory_scope_work_group = __OPENCL_MEMORY_SCOPE_WORK_GROUP,
|
||||
memory_scope_device = __OPENCL_MEMORY_SCOPE_DEVICE,
|
||||
#if defined(__opencl_c_atomic_scope_all_devices)
|
||||
memory_scope_all_svm_devices = __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES,
|
||||
#if (__OPENCL_C_VERSION__ >= CL_VERSION_3_0)
|
||||
memory_scope_all_devices = memory_scope_all_svm_devices,
|
||||
#endif // __OPENCL_C_VERSION__ >= CL_VERSION_3_0
|
||||
#endif // defined(__opencl_c_atomic_scope_all_devices)
|
||||
#if defined(cl_intel_subgroups) || defined(cl_khr_subgroups)
|
||||
memory_scope_sub_group = __OPENCL_MEMORY_SCOPE_SUB_GROUP
|
||||
#endif
|
||||
@@ -322,7 +357,9 @@ typedef enum memory_order
|
||||
memory_order_acquire = __ATOMIC_ACQUIRE,
|
||||
memory_order_release = __ATOMIC_RELEASE,
|
||||
memory_order_acq_rel = __ATOMIC_ACQ_REL,
|
||||
#if defined(__opencl_c_atomic_order_seq_cst)
|
||||
memory_order_seq_cst = __ATOMIC_SEQ_CST
|
||||
#endif
|
||||
} memory_order;
|
||||
|
||||
#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
|
||||
@@ -445,8 +482,113 @@ typedef struct {
|
||||
|
||||
#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
|
||||
|
||||
/**
|
||||
* OpenCL v1.1/1.2/2.0 s6.2.4.2 - as_type operators
|
||||
* Reinterprets a data type as another data type of the same size
|
||||
*/
|
||||
#define as_char(x) __builtin_astype((x), char)
|
||||
#define as_char2(x) __builtin_astype((x), char2)
|
||||
#define as_char3(x) __builtin_astype((x), char3)
|
||||
#define as_char4(x) __builtin_astype((x), char4)
|
||||
#define as_char8(x) __builtin_astype((x), char8)
|
||||
#define as_char16(x) __builtin_astype((x), char16)
|
||||
|
||||
#define as_uchar(x) __builtin_astype((x), uchar)
|
||||
#define as_uchar2(x) __builtin_astype((x), uchar2)
|
||||
#define as_uchar3(x) __builtin_astype((x), uchar3)
|
||||
#define as_uchar4(x) __builtin_astype((x), uchar4)
|
||||
#define as_uchar8(x) __builtin_astype((x), uchar8)
|
||||
#define as_uchar16(x) __builtin_astype((x), uchar16)
|
||||
|
||||
#define as_short(x) __builtin_astype((x), short)
|
||||
#define as_short2(x) __builtin_astype((x), short2)
|
||||
#define as_short3(x) __builtin_astype((x), short3)
|
||||
#define as_short4(x) __builtin_astype((x), short4)
|
||||
#define as_short8(x) __builtin_astype((x), short8)
|
||||
#define as_short16(x) __builtin_astype((x), short16)
|
||||
|
||||
#define as_ushort(x) __builtin_astype((x), ushort)
|
||||
#define as_ushort2(x) __builtin_astype((x), ushort2)
|
||||
#define as_ushort3(x) __builtin_astype((x), ushort3)
|
||||
#define as_ushort4(x) __builtin_astype((x), ushort4)
|
||||
#define as_ushort8(x) __builtin_astype((x), ushort8)
|
||||
#define as_ushort16(x) __builtin_astype((x), ushort16)
|
||||
|
||||
#define as_int(x) __builtin_astype((x), int)
|
||||
#define as_int2(x) __builtin_astype((x), int2)
|
||||
#define as_int3(x) __builtin_astype((x), int3)
|
||||
#define as_int4(x) __builtin_astype((x), int4)
|
||||
#define as_int8(x) __builtin_astype((x), int8)
|
||||
#define as_int16(x) __builtin_astype((x), int16)
|
||||
|
||||
#define as_uint(x) __builtin_astype((x), uint)
|
||||
#define as_uint2(x) __builtin_astype((x), uint2)
|
||||
#define as_uint3(x) __builtin_astype((x), uint3)
|
||||
#define as_uint4(x) __builtin_astype((x), uint4)
|
||||
#define as_uint8(x) __builtin_astype((x), uint8)
|
||||
#define as_uint16(x) __builtin_astype((x), uint16)
|
||||
|
||||
#define as_long(x) __builtin_astype((x), long)
|
||||
#define as_long2(x) __builtin_astype((x), long2)
|
||||
#define as_long3(x) __builtin_astype((x), long3)
|
||||
#define as_long4(x) __builtin_astype((x), long4)
|
||||
#define as_long8(x) __builtin_astype((x), long8)
|
||||
#define as_long16(x) __builtin_astype((x), long16)
|
||||
|
||||
#define as_ulong(x) __builtin_astype((x), ulong)
|
||||
#define as_ulong2(x) __builtin_astype((x), ulong2)
|
||||
#define as_ulong3(x) __builtin_astype((x), ulong3)
|
||||
#define as_ulong4(x) __builtin_astype((x), ulong4)
|
||||
#define as_ulong8(x) __builtin_astype((x), ulong8)
|
||||
#define as_ulong16(x) __builtin_astype((x), ulong16)
|
||||
|
||||
#define as_float(x) __builtin_astype((x), float)
|
||||
#define as_float2(x) __builtin_astype((x), float2)
|
||||
#define as_float3(x) __builtin_astype((x), float3)
|
||||
#define as_float4(x) __builtin_astype((x), float4)
|
||||
#define as_float8(x) __builtin_astype((x), float8)
|
||||
#define as_float16(x) __builtin_astype((x), float16)
|
||||
|
||||
#ifdef cl_khr_fp64
|
||||
#define as_double(x) __builtin_astype((x), double)
|
||||
#define as_double2(x) __builtin_astype((x), double2)
|
||||
#define as_double3(x) __builtin_astype((x), double3)
|
||||
#define as_double4(x) __builtin_astype((x), double4)
|
||||
#define as_double8(x) __builtin_astype((x), double8)
|
||||
#define as_double16(x) __builtin_astype((x), double16)
|
||||
#endif // cl_khr_fp64
|
||||
|
||||
#ifdef cl_khr_fp16
|
||||
#define as_half(x) __builtin_astype((x), half)
|
||||
#define as_half2(x) __builtin_astype((x), half2)
|
||||
#define as_half3(x) __builtin_astype((x), half3)
|
||||
#define as_half4(x) __builtin_astype((x), half4)
|
||||
#define as_half8(x) __builtin_astype((x), half8)
|
||||
#define as_half16(x) __builtin_astype((x), half16)
|
||||
#endif // cl_khr_fp16
|
||||
|
||||
#define as_size_t(x) __builtin_astype((x), size_t)
|
||||
#define as_ptrdiff_t(x) __builtin_astype((x), ptrdiff_t)
|
||||
#define as_intptr_t(x) __builtin_astype((x), intptr_t)
|
||||
#define as_uintptr_t(x) __builtin_astype((x), uintptr_t)
|
||||
|
||||
// OpenCL v1.1 s6.9, v1.2/2.0 s6.10 - Function qualifiers
|
||||
|
||||
#define __kernel_exec(X, typen) __kernel \
|
||||
__attribute__((work_group_size_hint(X, 1, 1))) \
|
||||
__attribute__((vec_type_hint(typen)))
|
||||
|
||||
#define kernel_exec(X, typen) __kernel \
|
||||
__attribute__((work_group_size_hint(X, 1, 1))) \
|
||||
__attribute__((vec_type_hint(typen)))
|
||||
|
||||
#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_1_2)
|
||||
// OpenCL v1.2 s6.12.13, v2.0 s6.13.13 - printf
|
||||
|
||||
int printf(__constant const char* st, ...) __attribute__((format(printf, 1, 2)));
|
||||
#endif
|
||||
|
||||
#ifdef cl_intel_device_side_avc_motion_estimation
|
||||
#pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : begin
|
||||
|
||||
#define CLK_AVC_ME_MAJOR_16x16_INTEL 0x0
|
||||
#define CLK_AVC_ME_MAJOR_16x8_INTEL 0x1
|
||||
@@ -580,7 +722,6 @@ typedef struct {
|
||||
#define CLK_AVC_IME_RESULT_DUAL_REFERENCE_STREAMOUT_INITIALIZE_INTEL 0x0
|
||||
#define CLK_AVC_IME_RESULT_DUAL_REFERENCE_STREAMIN_INITIALIZE_INTEL 0x0
|
||||
|
||||
#pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : end
|
||||
#endif // cl_intel_device_side_avc_motion_estimation
|
||||
|
||||
// Disable any extensions we may have enabled previously.
|
||||
|
||||
864
lib/include/opencl-c.h
vendored
864
lib/include/opencl-c.h
vendored
File diff suppressed because it is too large
Load Diff
@@ -14,13 +14,13 @@
|
||||
#error "This file is for OpenMP compilation only."
|
||||
#endif
|
||||
|
||||
#pragma omp begin declare variant match( \
|
||||
device = {arch(nvptx, nvptx64)}, implementation = {extension(match_any)})
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#pragma omp begin declare variant match( \
|
||||
device = {arch(nvptx, nvptx64)}, implementation = {extension(match_any)})
|
||||
|
||||
#define __CUDA__
|
||||
#define __OPENMP_NVPTX__
|
||||
|
||||
@@ -33,10 +33,74 @@ extern "C" {
|
||||
#undef __OPENMP_NVPTX__
|
||||
#undef __CUDA__
|
||||
|
||||
#pragma omp end declare variant
|
||||
|
||||
#ifdef __AMDGCN__
|
||||
#pragma omp begin declare variant match(device = {arch(amdgcn)})
|
||||
|
||||
// Import types which will be used by __clang_hip_libdevice_declares.h
|
||||
#ifndef __cplusplus
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#define __OPENMP_AMDGCN__
|
||||
#pragma push_macro("__device__")
|
||||
#define __device__
|
||||
|
||||
/// Include declarations for libdevice functions.
|
||||
#include <__clang_hip_libdevice_declares.h>
|
||||
|
||||
#pragma pop_macro("__device__")
|
||||
#undef __OPENMP_AMDGCN__
|
||||
|
||||
#pragma omp end declare variant
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#pragma omp end declare variant
|
||||
// Ensure we make `_ZdlPv`, aka. `operator delete(void*)` available without the
|
||||
// need to `include <new>` in C++ mode.
|
||||
#ifdef __cplusplus
|
||||
|
||||
// We require malloc/free.
|
||||
#include <cstdlib>
|
||||
|
||||
#pragma push_macro("OPENMP_NOEXCEPT")
|
||||
#if __cplusplus >= 201103L
|
||||
#define OPENMP_NOEXCEPT noexcept
|
||||
#else
|
||||
#define OPENMP_NOEXCEPT
|
||||
#endif
|
||||
|
||||
// Device overrides for non-placement new and delete.
|
||||
inline void *operator new(__SIZE_TYPE__ size) {
|
||||
if (size == 0)
|
||||
size = 1;
|
||||
return ::malloc(size);
|
||||
}
|
||||
|
||||
inline void *operator new[](__SIZE_TYPE__ size) { return ::operator new(size); }
|
||||
|
||||
inline void operator delete(void *ptr)OPENMP_NOEXCEPT { ::free(ptr); }
|
||||
|
||||
inline void operator delete[](void *ptr) OPENMP_NOEXCEPT {
|
||||
::operator delete(ptr);
|
||||
}
|
||||
|
||||
// Sized delete, C++14 only.
|
||||
#if __cplusplus >= 201402L
|
||||
inline void operator delete(void *ptr, __SIZE_TYPE__ size)OPENMP_NOEXCEPT {
|
||||
::operator delete(ptr);
|
||||
}
|
||||
inline void operator delete[](void *ptr, __SIZE_TYPE__ size) OPENMP_NOEXCEPT {
|
||||
::operator delete(ptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
#pragma pop_macro("OPENMP_NOEXCEPT")
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
54
lib/include/openmp_wrappers/cmath
vendored
54
lib/include/openmp_wrappers/cmath
vendored
@@ -75,4 +75,58 @@ __DEVICE__ float tgamma(float __x) { return ::tgammaf(__x); }
|
||||
|
||||
#pragma omp end declare variant
|
||||
|
||||
#ifdef __AMDGCN__
|
||||
#pragma omp begin declare variant match(device = {arch(amdgcn)})
|
||||
|
||||
#pragma push_macro("__constant__")
|
||||
#define __constant__ __attribute__((constant))
|
||||
#define __OPENMP_AMDGCN__
|
||||
|
||||
#include <__clang_hip_cmath.h>
|
||||
|
||||
#pragma pop_macro("__constant__")
|
||||
#undef __OPENMP_AMDGCN__
|
||||
|
||||
// Define overloads otherwise which are absent
|
||||
#define __DEVICE__ static constexpr __attribute__((always_inline, nothrow))
|
||||
|
||||
__DEVICE__ float acos(float __x) { return ::acosf(__x); }
|
||||
__DEVICE__ float acosh(float __x) { return ::acoshf(__x); }
|
||||
__DEVICE__ float asin(float __x) { return ::asinf(__x); }
|
||||
__DEVICE__ float asinh(float __x) { return ::asinhf(__x); }
|
||||
__DEVICE__ float atan(float __x) { return ::atanf(__x); }
|
||||
__DEVICE__ float atan2(float __x, float __y) { return ::atan2f(__x, __y); }
|
||||
__DEVICE__ float atanh(float __x) { return ::atanhf(__x); }
|
||||
__DEVICE__ float cbrt(float __x) { return ::cbrtf(__x); }
|
||||
__DEVICE__ float cosh(float __x) { return ::coshf(__x); }
|
||||
__DEVICE__ float erf(float __x) { return ::erff(__x); }
|
||||
__DEVICE__ float erfc(float __x) { return ::erfcf(__x); }
|
||||
__DEVICE__ float exp2(float __x) { return ::exp2f(__x); }
|
||||
__DEVICE__ float expm1(float __x) { return ::expm1f(__x); }
|
||||
__DEVICE__ float fdim(float __x, float __y) { return ::fdimf(__x, __y); }
|
||||
__DEVICE__ float hypot(float __x, float __y) { return ::hypotf(__x, __y); }
|
||||
__DEVICE__ int ilogb(float __x) { return ::ilogbf(__x); }
|
||||
__DEVICE__ float ldexp(float __arg, int __exp) {
|
||||
return ::ldexpf(__arg, __exp);
|
||||
}
|
||||
__DEVICE__ float lgamma(float __x) { return ::lgammaf(__x); }
|
||||
__DEVICE__ float log1p(float __x) { return ::log1pf(__x); }
|
||||
__DEVICE__ float logb(float __x) { return ::logbf(__x); }
|
||||
__DEVICE__ float nextafter(float __x, float __y) {
|
||||
return ::nextafterf(__x, __y);
|
||||
}
|
||||
__DEVICE__ float remainder(float __x, float __y) {
|
||||
return ::remainderf(__x, __y);
|
||||
}
|
||||
__DEVICE__ float scalbn(float __x, int __y) { return ::scalbnf(__x, __y); }
|
||||
__DEVICE__ float sinh(float __x) { return ::sinhf(__x); }
|
||||
__DEVICE__ float tan(float __x) { return ::tanf(__x); }
|
||||
__DEVICE__ float tanh(float __x) { return ::tanhf(__x); }
|
||||
__DEVICE__ float tgamma(float __x) { return ::tgammaf(__x); }
|
||||
|
||||
#undef __DEVICE__
|
||||
|
||||
#pragma omp end declare variant
|
||||
#endif // __AMDGCN__
|
||||
|
||||
#endif
|
||||
|
||||
6
lib/include/openmp_wrappers/complex
vendored
6
lib/include/openmp_wrappers/complex
vendored
@@ -17,7 +17,6 @@
|
||||
// We require std::math functions in the complex builtins below.
|
||||
#include <cmath>
|
||||
|
||||
#define __CUDA__
|
||||
#define __OPENMP_NVPTX__
|
||||
#include <__clang_cuda_complex_builtins.h>
|
||||
#undef __OPENMP_NVPTX__
|
||||
@@ -26,9 +25,6 @@
|
||||
// Grab the host header too.
|
||||
#include_next <complex>
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
// If we are compiling against libc++, the macro _LIBCPP_STD_VER should be set
|
||||
// after including <cmath> above. Since the complex header we use is a
|
||||
// simplified version of the libc++, we don't need it in this case. If we
|
||||
@@ -48,5 +44,3 @@
|
||||
#pragma omp end declare variant
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
1
lib/include/openmp_wrappers/complex.h
vendored
1
lib/include/openmp_wrappers/complex.h
vendored
@@ -17,7 +17,6 @@
|
||||
// We require math functions in the complex builtins below.
|
||||
#include <math.h>
|
||||
|
||||
#define __CUDA__
|
||||
#define __OPENMP_NVPTX__
|
||||
#include <__clang_cuda_complex_builtins.h>
|
||||
#undef __OPENMP_NVPTX__
|
||||
|
||||
10
lib/include/openmp_wrappers/math.h
vendored
10
lib/include/openmp_wrappers/math.h
vendored
@@ -48,4 +48,14 @@
|
||||
|
||||
#pragma omp end declare variant
|
||||
|
||||
#ifdef __AMDGCN__
|
||||
#pragma omp begin declare variant match(device = {arch(amdgcn)})
|
||||
|
||||
#define __OPENMP_AMDGCN__
|
||||
#include <__clang_hip_math.h>
|
||||
#undef __OPENMP_AMDGCN__
|
||||
|
||||
#pragma omp end declare variant
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
26
lib/include/openmp_wrappers/new
vendored
26
lib/include/openmp_wrappers/new
vendored
@@ -9,6 +9,8 @@
|
||||
#ifndef __CLANG_OPENMP_WRAPPERS_NEW
|
||||
#define __CLANG_OPENMP_WRAPPERS_NEW
|
||||
|
||||
// We need the system <new> for the std::nothrow_t. The new/delete operators
|
||||
// which do not use nothrow_t are provided without the <new> header.
|
||||
#include_next <new>
|
||||
|
||||
#if defined(__NVPTX__) && defined(_OPENMP)
|
||||
@@ -22,48 +24,24 @@
|
||||
#define OPENMP_NOEXCEPT
|
||||
#endif
|
||||
|
||||
// Device overrides for non-placement new and delete.
|
||||
inline void *operator new(__SIZE_TYPE__ size) {
|
||||
if (size == 0)
|
||||
size = 1;
|
||||
return ::malloc(size);
|
||||
}
|
||||
inline void *operator new(__SIZE_TYPE__ size,
|
||||
const std::nothrow_t &) OPENMP_NOEXCEPT {
|
||||
return ::operator new(size);
|
||||
}
|
||||
|
||||
inline void *operator new[](__SIZE_TYPE__ size) { return ::operator new(size); }
|
||||
inline void *operator new[](__SIZE_TYPE__ size, const std::nothrow_t &) {
|
||||
return ::operator new(size);
|
||||
}
|
||||
|
||||
inline void operator delete(void *ptr)OPENMP_NOEXCEPT {
|
||||
if (ptr)
|
||||
::free(ptr);
|
||||
}
|
||||
inline void operator delete(void *ptr, const std::nothrow_t &)OPENMP_NOEXCEPT {
|
||||
::operator delete(ptr);
|
||||
}
|
||||
|
||||
inline void operator delete[](void *ptr) OPENMP_NOEXCEPT {
|
||||
::operator delete(ptr);
|
||||
}
|
||||
inline void operator delete[](void *ptr,
|
||||
const std::nothrow_t &) OPENMP_NOEXCEPT {
|
||||
::operator delete(ptr);
|
||||
}
|
||||
|
||||
// Sized delete, C++14 only.
|
||||
#if __cplusplus >= 201402L
|
||||
inline void operator delete(void *ptr, __SIZE_TYPE__ size)OPENMP_NOEXCEPT {
|
||||
::operator delete(ptr);
|
||||
}
|
||||
inline void operator delete[](void *ptr, __SIZE_TYPE__ size) OPENMP_NOEXCEPT {
|
||||
::operator delete(ptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
#pragma pop_macro("OPENMP_NOEXCEPT")
|
||||
#endif
|
||||
|
||||
|
||||
9
lib/include/ppc_wrappers/xmmintrin.h
vendored
9
lib/include/ppc_wrappers/xmmintrin.h
vendored
@@ -28,7 +28,7 @@
|
||||
Most SSE scalar float intrinsic operations can be performed more
|
||||
efficiently as C language float scalar operations or optimized to
|
||||
use vector SIMD operations. We recommend this for new applications. */
|
||||
#error "Please read comment above. Use -DNO_WARN_X86_INTRINSICS to disable this error."
|
||||
#error "Please read comment above. Use -DNO_WARN_X86_INTRINSICS to disable this error."
|
||||
#endif
|
||||
|
||||
#ifndef _XMMINTRIN_H_INCLUDED
|
||||
@@ -62,14 +62,13 @@
|
||||
|
||||
/* The Intel API is flexible enough that we must allow aliasing with other
|
||||
vector types, and their scalar components. */
|
||||
typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
|
||||
typedef vector float __m128 __attribute__((__may_alias__));
|
||||
|
||||
/* Unaligned version of the same type. */
|
||||
typedef float __m128_u __attribute__ ((__vector_size__ (16), __may_alias__,
|
||||
__aligned__ (1)));
|
||||
typedef vector float __m128_u __attribute__((__may_alias__, __aligned__(1)));
|
||||
|
||||
/* Internal data types for implementing the intrinsics. */
|
||||
typedef float __v4sf __attribute__ ((__vector_size__ (16)));
|
||||
typedef vector float __v4sf;
|
||||
|
||||
/* Create an undefined vector. */
|
||||
extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||
|
||||
123865
lib/include/riscv_vector.h
vendored
Normal file
123865
lib/include/riscv_vector.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
lib/include/uintrintrin.h
vendored
7
lib/include/uintrintrin.h
vendored
@@ -20,6 +20,13 @@
|
||||
|
||||
#ifdef __x86_64__
|
||||
|
||||
struct __uintr_frame
|
||||
{
|
||||
unsigned long long rip;
|
||||
unsigned long long rflags;
|
||||
unsigned long long rsp;
|
||||
};
|
||||
|
||||
/// Clears the user interrupt flag (UIF). Its effect takes place immediately: a
|
||||
/// user interrupt cannot be delivered on the instruction boundary following
|
||||
/// CLUI. Can be executed only if CR4.UINT = 1, the logical processor is in
|
||||
|
||||
45
lib/include/vaesintrin.h
vendored
45
lib/include/vaesintrin.h
vendored
@@ -28,13 +28,6 @@ static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||
(__v4di) __B);
|
||||
}
|
||||
|
||||
static __inline__ __m512i __DEFAULT_FN_ATTRS_F
|
||||
_mm512_aesenc_epi128(__m512i __A, __m512i __B)
|
||||
{
|
||||
return (__m512i) __builtin_ia32_aesenc512((__v8di) __A,
|
||||
(__v8di) __B);
|
||||
}
|
||||
|
||||
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||
_mm256_aesdec_epi128(__m256i __A, __m256i __B)
|
||||
{
|
||||
@@ -42,13 +35,6 @@ static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||
(__v4di) __B);
|
||||
}
|
||||
|
||||
static __inline__ __m512i __DEFAULT_FN_ATTRS_F
|
||||
_mm512_aesdec_epi128(__m512i __A, __m512i __B)
|
||||
{
|
||||
return (__m512i) __builtin_ia32_aesdec512((__v8di) __A,
|
||||
(__v8di) __B);
|
||||
}
|
||||
|
||||
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||
_mm256_aesenclast_epi128(__m256i __A, __m256i __B)
|
||||
{
|
||||
@@ -56,13 +42,6 @@ static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||
(__v4di) __B);
|
||||
}
|
||||
|
||||
static __inline__ __m512i __DEFAULT_FN_ATTRS_F
|
||||
_mm512_aesenclast_epi128(__m512i __A, __m512i __B)
|
||||
{
|
||||
return (__m512i) __builtin_ia32_aesenclast512((__v8di) __A,
|
||||
(__v8di) __B);
|
||||
}
|
||||
|
||||
static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||
_mm256_aesdeclast_epi128(__m256i __A, __m256i __B)
|
||||
{
|
||||
@@ -70,13 +49,35 @@ static __inline__ __m256i __DEFAULT_FN_ATTRS
|
||||
(__v4di) __B);
|
||||
}
|
||||
|
||||
#ifdef __AVX512FINTRIN_H
|
||||
static __inline__ __m512i __DEFAULT_FN_ATTRS_F
|
||||
_mm512_aesenc_epi128(__m512i __A, __m512i __B)
|
||||
{
|
||||
return (__m512i) __builtin_ia32_aesenc512((__v8di) __A,
|
||||
(__v8di) __B);
|
||||
}
|
||||
|
||||
static __inline__ __m512i __DEFAULT_FN_ATTRS_F
|
||||
_mm512_aesdec_epi128(__m512i __A, __m512i __B)
|
||||
{
|
||||
return (__m512i) __builtin_ia32_aesdec512((__v8di) __A,
|
||||
(__v8di) __B);
|
||||
}
|
||||
|
||||
static __inline__ __m512i __DEFAULT_FN_ATTRS_F
|
||||
_mm512_aesenclast_epi128(__m512i __A, __m512i __B)
|
||||
{
|
||||
return (__m512i) __builtin_ia32_aesenclast512((__v8di) __A,
|
||||
(__v8di) __B);
|
||||
}
|
||||
|
||||
static __inline__ __m512i __DEFAULT_FN_ATTRS_F
|
||||
_mm512_aesdeclast_epi128(__m512i __A, __m512i __B)
|
||||
{
|
||||
return (__m512i) __builtin_ia32_aesdeclast512((__v8di) __A,
|
||||
(__v8di) __B);
|
||||
}
|
||||
|
||||
#endif // __AVX512FINTRIN_H
|
||||
|
||||
#undef __DEFAULT_FN_ATTRS
|
||||
#undef __DEFAULT_FN_ATTRS_F
|
||||
|
||||
283
lib/include/vecintrin.h
vendored
283
lib/include/vecintrin.h
vendored
@@ -1016,64 +1016,84 @@ vec_scatter_element(__vector double __vec,
|
||||
|
||||
static inline __ATTRS_o_ai __vector signed char
|
||||
vec_xl(long __offset, const signed char *__ptr) {
|
||||
return *(const __vector signed char *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector signed char V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector signed char));
|
||||
return V;
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai __vector unsigned char
|
||||
vec_xl(long __offset, const unsigned char *__ptr) {
|
||||
return *(const __vector unsigned char *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector unsigned char V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector unsigned char));
|
||||
return V;
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai __vector signed short
|
||||
vec_xl(long __offset, const signed short *__ptr) {
|
||||
return *(const __vector signed short *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector signed short V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector signed short));
|
||||
return V;
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai __vector unsigned short
|
||||
vec_xl(long __offset, const unsigned short *__ptr) {
|
||||
return *(const __vector unsigned short *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector unsigned short V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector unsigned short));
|
||||
return V;
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai __vector signed int
|
||||
vec_xl(long __offset, const signed int *__ptr) {
|
||||
return *(const __vector signed int *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector signed int V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector signed int));
|
||||
return V;
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai __vector unsigned int
|
||||
vec_xl(long __offset, const unsigned int *__ptr) {
|
||||
return *(const __vector unsigned int *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector unsigned int V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector unsigned int));
|
||||
return V;
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai __vector signed long long
|
||||
vec_xl(long __offset, const signed long long *__ptr) {
|
||||
return *(const __vector signed long long *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector signed long long V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector signed long long));
|
||||
return V;
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai __vector unsigned long long
|
||||
vec_xl(long __offset, const unsigned long long *__ptr) {
|
||||
return *(const __vector unsigned long long *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector unsigned long long V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector unsigned long long));
|
||||
return V;
|
||||
}
|
||||
|
||||
#if __ARCH__ >= 12
|
||||
static inline __ATTRS_o_ai __vector float
|
||||
vec_xl(long __offset, const float *__ptr) {
|
||||
return *(const __vector float *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector float V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector float));
|
||||
return V;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline __ATTRS_o_ai __vector double
|
||||
vec_xl(long __offset, const double *__ptr) {
|
||||
return *(const __vector double *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector double V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector double));
|
||||
return V;
|
||||
}
|
||||
|
||||
/*-- vec_xld2 ---------------------------------------------------------------*/
|
||||
@@ -1081,64 +1101,82 @@ vec_xl(long __offset, const double *__ptr) {
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector signed char
|
||||
vec_xld2(long __offset, const signed char *__ptr) {
|
||||
return *(const __vector signed char *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector signed char V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector signed char));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector unsigned char
|
||||
vec_xld2(long __offset, const unsigned char *__ptr) {
|
||||
return *(const __vector unsigned char *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector unsigned char V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector unsigned char));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector signed short
|
||||
vec_xld2(long __offset, const signed short *__ptr) {
|
||||
return *(const __vector signed short *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector signed short V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector signed short));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector unsigned short
|
||||
vec_xld2(long __offset, const unsigned short *__ptr) {
|
||||
return *(const __vector unsigned short *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector unsigned short V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector unsigned short));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector signed int
|
||||
vec_xld2(long __offset, const signed int *__ptr) {
|
||||
return *(const __vector signed int *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector signed int V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector signed int));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector unsigned int
|
||||
vec_xld2(long __offset, const unsigned int *__ptr) {
|
||||
return *(const __vector unsigned int *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector unsigned int V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector unsigned int));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector signed long long
|
||||
vec_xld2(long __offset, const signed long long *__ptr) {
|
||||
return *(const __vector signed long long *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector signed long long V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector signed long long));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector unsigned long long
|
||||
vec_xld2(long __offset, const unsigned long long *__ptr) {
|
||||
return *(const __vector unsigned long long *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector unsigned long long V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector unsigned long long));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector double
|
||||
vec_xld2(long __offset, const double *__ptr) {
|
||||
return *(const __vector double *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector double V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector double));
|
||||
return V;
|
||||
}
|
||||
|
||||
/*-- vec_xlw4 ---------------------------------------------------------------*/
|
||||
@@ -1146,99 +1184,128 @@ vec_xld2(long __offset, const double *__ptr) {
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector signed char
|
||||
vec_xlw4(long __offset, const signed char *__ptr) {
|
||||
return *(const __vector signed char *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector signed char V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector signed char));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector unsigned char
|
||||
vec_xlw4(long __offset, const unsigned char *__ptr) {
|
||||
return *(const __vector unsigned char *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector unsigned char V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector unsigned char));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector signed short
|
||||
vec_xlw4(long __offset, const signed short *__ptr) {
|
||||
return *(const __vector signed short *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector signed short V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector signed short));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector unsigned short
|
||||
vec_xlw4(long __offset, const unsigned short *__ptr) {
|
||||
return *(const __vector unsigned short *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector unsigned short V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector unsigned short));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector signed int
|
||||
vec_xlw4(long __offset, const signed int *__ptr) {
|
||||
return *(const __vector signed int *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector signed int V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector signed int));
|
||||
return V;
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai __vector unsigned int
|
||||
vec_xlw4(long __offset, const unsigned int *__ptr) {
|
||||
return *(const __vector unsigned int *)
|
||||
((const char *)__ptr + __offset);
|
||||
__vector unsigned int V;
|
||||
__builtin_memcpy(&V, ((const char *)__ptr + __offset),
|
||||
sizeof(__vector unsigned int));
|
||||
return V;
|
||||
}
|
||||
|
||||
/*-- vec_xst ----------------------------------------------------------------*/
|
||||
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xst(__vector signed char __vec, long __offset, signed char *__ptr) {
|
||||
*(__vector signed char *)((char *)__ptr + __offset) = __vec;
|
||||
__vector signed char V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector signed char));
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xst(__vector unsigned char __vec, long __offset, unsigned char *__ptr) {
|
||||
*(__vector unsigned char *)((char *)__ptr + __offset) = __vec;
|
||||
__vector unsigned char V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector unsigned char));
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xst(__vector signed short __vec, long __offset, signed short *__ptr) {
|
||||
*(__vector signed short *)((char *)__ptr + __offset) = __vec;
|
||||
__vector signed short V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector signed short));
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xst(__vector unsigned short __vec, long __offset, unsigned short *__ptr) {
|
||||
*(__vector unsigned short *)((char *)__ptr + __offset) = __vec;
|
||||
__vector unsigned short V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector unsigned short));
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xst(__vector signed int __vec, long __offset, signed int *__ptr) {
|
||||
*(__vector signed int *)((char *)__ptr + __offset) = __vec;
|
||||
__vector signed int V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector signed int));
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xst(__vector unsigned int __vec, long __offset, unsigned int *__ptr) {
|
||||
*(__vector unsigned int *)((char *)__ptr + __offset) = __vec;
|
||||
__vector unsigned int V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector unsigned int));
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xst(__vector signed long long __vec, long __offset,
|
||||
signed long long *__ptr) {
|
||||
*(__vector signed long long *)((char *)__ptr + __offset) = __vec;
|
||||
signed long long *__ptr) {
|
||||
__vector signed long long V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector signed long long));
|
||||
}
|
||||
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xst(__vector unsigned long long __vec, long __offset,
|
||||
unsigned long long *__ptr) {
|
||||
*(__vector unsigned long long *)((char *)__ptr + __offset) = __vec;
|
||||
unsigned long long *__ptr) {
|
||||
__vector unsigned long long V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector unsigned long long));
|
||||
}
|
||||
|
||||
#if __ARCH__ >= 12
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xst(__vector float __vec, long __offset, float *__ptr) {
|
||||
*(__vector float *)((char *)__ptr + __offset) = __vec;
|
||||
__vector float V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector float));
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xst(__vector double __vec, long __offset, double *__ptr) {
|
||||
*(__vector double *)((char *)__ptr + __offset) = __vec;
|
||||
__vector double V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector double));
|
||||
}
|
||||
|
||||
/*-- vec_xstd2 --------------------------------------------------------------*/
|
||||
@@ -1246,57 +1313,73 @@ vec_xst(__vector double __vec, long __offset, double *__ptr) {
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstd2(__vector signed char __vec, long __offset, signed char *__ptr) {
|
||||
*(__vector signed char *)((char *)__ptr + __offset) = __vec;
|
||||
__vector signed char V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector signed char));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstd2(__vector unsigned char __vec, long __offset, unsigned char *__ptr) {
|
||||
*(__vector unsigned char *)((char *)__ptr + __offset) = __vec;
|
||||
__vector unsigned char V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector unsigned char));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstd2(__vector signed short __vec, long __offset, signed short *__ptr) {
|
||||
*(__vector signed short *)((char *)__ptr + __offset) = __vec;
|
||||
__vector signed short V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector signed short));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstd2(__vector unsigned short __vec, long __offset, unsigned short *__ptr) {
|
||||
*(__vector unsigned short *)((char *)__ptr + __offset) = __vec;
|
||||
__vector unsigned short V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector unsigned short));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstd2(__vector signed int __vec, long __offset, signed int *__ptr) {
|
||||
*(__vector signed int *)((char *)__ptr + __offset) = __vec;
|
||||
__vector signed int V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector signed int));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstd2(__vector unsigned int __vec, long __offset, unsigned int *__ptr) {
|
||||
*(__vector unsigned int *)((char *)__ptr + __offset) = __vec;
|
||||
__vector unsigned int V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector unsigned int));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstd2(__vector signed long long __vec, long __offset,
|
||||
signed long long *__ptr) {
|
||||
*(__vector signed long long *)((char *)__ptr + __offset) = __vec;
|
||||
__vector signed long long V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector signed long long));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstd2(__vector unsigned long long __vec, long __offset,
|
||||
unsigned long long *__ptr) {
|
||||
*(__vector unsigned long long *)((char *)__ptr + __offset) = __vec;
|
||||
__vector unsigned long long V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector unsigned long long));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstd2(__vector double __vec, long __offset, double *__ptr) {
|
||||
*(__vector double *)((char *)__ptr + __offset) = __vec;
|
||||
__vector double V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector double));
|
||||
}
|
||||
|
||||
/*-- vec_xstw4 --------------------------------------------------------------*/
|
||||
@@ -1304,37 +1387,48 @@ vec_xstd2(__vector double __vec, long __offset, double *__ptr) {
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstw4(__vector signed char __vec, long __offset, signed char *__ptr) {
|
||||
*(__vector signed char *)((char *)__ptr + __offset) = __vec;
|
||||
__vector signed char V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector signed char));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstw4(__vector unsigned char __vec, long __offset, unsigned char *__ptr) {
|
||||
*(__vector unsigned char *)((char *)__ptr + __offset) = __vec;
|
||||
__vector unsigned char V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector unsigned char));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstw4(__vector signed short __vec, long __offset, signed short *__ptr) {
|
||||
*(__vector signed short *)((char *)__ptr + __offset) = __vec;
|
||||
__vector signed short V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector signed short));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstw4(__vector unsigned short __vec, long __offset, unsigned short *__ptr) {
|
||||
*(__vector unsigned short *)((char *)__ptr + __offset) = __vec;
|
||||
__vector unsigned short V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector unsigned short));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstw4(__vector signed int __vec, long __offset, signed int *__ptr) {
|
||||
*(__vector signed int *)((char *)__ptr + __offset) = __vec;
|
||||
__vector signed int V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector signed int));
|
||||
}
|
||||
|
||||
// This prototype is deprecated.
|
||||
static inline __ATTRS_o_ai void
|
||||
vec_xstw4(__vector unsigned int __vec, long __offset, unsigned int *__ptr) {
|
||||
*(__vector unsigned int *)((char *)__ptr + __offset) = __vec;
|
||||
__vector unsigned int V = __vec;
|
||||
__builtin_memcpy(((char *)__ptr + __offset), &V,
|
||||
sizeof(__vector unsigned int));
|
||||
}
|
||||
|
||||
/*-- vec_load_bndry ---------------------------------------------------------*/
|
||||
@@ -9259,6 +9353,41 @@ vec_fp_test_data_class(__vector double __a, int __b, int *__c)
|
||||
__VEC_CLASS_FP_ZERO | \
|
||||
__VEC_CLASS_FP_INFINITY)
|
||||
|
||||
/*-- vec_extend_to_fp32_hi --------------------------------------------------*/
|
||||
|
||||
#if __ARCH__ >= 14
|
||||
#define vec_extend_to_fp32_hi(X, W) \
|
||||
((__vector float)__builtin_s390_vclfnhs((X), (W)));
|
||||
#endif
|
||||
|
||||
/*-- vec_extend_to_fp32_hi --------------------------------------------------*/
|
||||
|
||||
#if __ARCH__ >= 14
|
||||
#define vec_extend_to_fp32_lo(X, W) \
|
||||
((__vector float)__builtin_s390_vclfnls((X), (W)));
|
||||
#endif
|
||||
|
||||
/*-- vec_round_from_fp32 ----------------------------------------------------*/
|
||||
|
||||
#if __ARCH__ >= 14
|
||||
#define vec_round_from_fp32(X, Y, W) \
|
||||
((__vector unsigned short)__builtin_s390_vcrnfs((X), (Y), (W)));
|
||||
#endif
|
||||
|
||||
/*-- vec_convert_to_fp16 ----------------------------------------------------*/
|
||||
|
||||
#if __ARCH__ >= 14
|
||||
#define vec_convert_to_fp16(X, W) \
|
||||
((__vector unsigned short)__builtin_s390_vcfn((X), (W)));
|
||||
#endif
|
||||
|
||||
/*-- vec_convert_from_fp16 --------------------------------------------------*/
|
||||
|
||||
#if __ARCH__ >= 14
|
||||
#define vec_convert_from_fp16(X, W) \
|
||||
((__vector unsigned short)__builtin_s390_vcnf((X), (W)));
|
||||
#endif
|
||||
|
||||
/*-- vec_cp_until_zero ------------------------------------------------------*/
|
||||
|
||||
static inline __ATTRS_o_ai __vector signed char
|
||||
|
||||
2
lib/include/vpclmulqdqintrin.h
vendored
2
lib/include/vpclmulqdqintrin.h
vendored
@@ -19,10 +19,12 @@
|
||||
(__v4di)(__m256i)(B), \
|
||||
(char)(I))
|
||||
|
||||
#ifdef __AVX512FINTRIN_H
|
||||
#define _mm512_clmulepi64_epi128(A, B, I) \
|
||||
(__m512i)__builtin_ia32_pclmulqdq512((__v8di)(__m512i)(A), \
|
||||
(__v8di)(__m512i)(B), \
|
||||
(char)(I))
|
||||
#endif // __AVX512FINTRIN_H
|
||||
|
||||
#endif /* __VPCLMULQDQINTRIN_H */
|
||||
|
||||
|
||||
1041
lib/include/wasm_simd128.h
vendored
1041
lib/include/wasm_simd128.h
vendored
File diff suppressed because it is too large
Load Diff
3061
lib/libc/darwin/libSystem.10.tbd
vendored
Normal file
3061
lib/libc/darwin/libSystem.10.tbd
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3703
lib/libc/darwin/libSystem.11.tbd
vendored
Normal file
3703
lib/libc/darwin/libSystem.11.tbd
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3781
lib/libc/darwin/libSystem.12.tbd
vendored
Normal file
3781
lib/libc/darwin/libSystem.12.tbd
vendored
Normal file
File diff suppressed because it is too large
Load Diff
59565
lib/libc/glibc/abi.txt
vendored
59565
lib/libc/glibc/abi.txt
vendored
File diff suppressed because it is too large
Load Diff
BIN
lib/libc/glibc/abilists
vendored
Normal file
BIN
lib/libc/glibc/abilists
vendored
Normal file
Binary file not shown.
2
lib/libc/glibc/bits/byteswap.h
vendored
2
lib/libc/glibc/bits/byteswap.h
vendored
@@ -1,5 +1,5 @@
|
||||
/* Macros and inline functions to swap the order of bytes in integer values.
|
||||
Copyright (C) 1997-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
|
||||
2
lib/libc/glibc/bits/floatn-common.h
vendored
2
lib/libc/glibc/bits/floatn-common.h
vendored
@@ -1,6 +1,6 @@
|
||||
/* Macros to control TS 18661-3 glibc features where the same
|
||||
definitions are appropriate for all platforms.
|
||||
Copyright (C) 2017-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 2017-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
|
||||
30
lib/libc/glibc/bits/libc-header-start.h
vendored
30
lib/libc/glibc/bits/libc-header-start.h
vendored
@@ -1,5 +1,5 @@
|
||||
/* Handle feature test macros at the start of a header.
|
||||
Copyright (C) 2016-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 2016-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -44,8 +44,26 @@
|
||||
|
||||
/* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
|
||||
macro. Most but not all symbols enabled by that macro in TS
|
||||
18661-1 are enabled unconditionally in C2X; the symbols in Annex F
|
||||
still require that macro in C2X. */
|
||||
18661-1 are enabled unconditionally in C2X. In C2X, the symbols in
|
||||
Annex F still require a new feature test macro
|
||||
__STDC_WANT_IEC_60559_EXT__ instead (C2X does not define
|
||||
__STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS
|
||||
18661-1 are not included in C2X (and thus should depend on
|
||||
__STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are
|
||||
enabled).
|
||||
|
||||
__GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS
|
||||
18661-1 not included in C2X.
|
||||
|
||||
__GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS
|
||||
18661-1 that are also included in C2X (with no feature test macro
|
||||
required in C2X).
|
||||
|
||||
__GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1
|
||||
that are included in C2X but conditional on
|
||||
__STDC_WANT_IEC_60559_EXT__. (There are currently no features
|
||||
conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS
|
||||
18661-1.) */
|
||||
#undef __GLIBC_USE_IEC_60559_BFP_EXT
|
||||
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_BFP_EXT__
|
||||
# define __GLIBC_USE_IEC_60559_BFP_EXT 1
|
||||
@@ -58,6 +76,12 @@
|
||||
#else
|
||||
# define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 0
|
||||
#endif
|
||||
#undef __GLIBC_USE_IEC_60559_EXT
|
||||
#if __GLIBC_USE (IEC_60559_BFP_EXT) || defined __STDC_WANT_IEC_60559_EXT__
|
||||
# define __GLIBC_USE_IEC_60559_EXT 1
|
||||
#else
|
||||
# define __GLIBC_USE_IEC_60559_EXT 0
|
||||
#endif
|
||||
|
||||
/* ISO/IEC TS 18661-4:2015 defines the
|
||||
__STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction
|
||||
|
||||
17
lib/libc/glibc/bits/long-double.h
vendored
17
lib/libc/glibc/bits/long-double.h
vendored
@@ -1,5 +1,5 @@
|
||||
/* Properties of long double type.
|
||||
Copyright (C) 2016-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 2016-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -37,4 +37,17 @@
|
||||
#ifndef __NO_LONG_DOUBLE_MATH
|
||||
# define __NO_LONG_DOUBLE_MATH 1
|
||||
#endif
|
||||
#define __LONG_DOUBLE_USES_FLOAT128 0
|
||||
|
||||
/* The macro __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI is used to determine the
|
||||
choice of the underlying ABI of long double. It will always assume
|
||||
a constant value for each translation unit.
|
||||
|
||||
If the value is non-zero, any API which is parameterized by the long
|
||||
double type (i.e the scanf/printf family of functions or the explicitly
|
||||
parameterized math.h functions) will be redirected to a compatible
|
||||
implementation using _Float128 ABI via symbols suffixed with ieee128.
|
||||
|
||||
The mechanism this macro uses to acquire may be a function
|
||||
of architecture, or target specific options used to invoke the
|
||||
compiler. */
|
||||
#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
|
||||
|
||||
2
lib/libc/glibc/bits/select.h
vendored
2
lib/libc/glibc/bits/select.h
vendored
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
|
||||
29
lib/libc/glibc/bits/signum-generic.h
vendored
29
lib/libc/glibc/bits/signum-generic.h
vendored
@@ -1,5 +1,5 @@
|
||||
/* Signal number constants. Generic template.
|
||||
Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 1991-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -57,31 +57,9 @@
|
||||
#define SIGQUIT 3 /* Quit. */
|
||||
#define SIGTRAP 5 /* Trace/breakpoint trap. */
|
||||
#define SIGKILL 9 /* Killed. */
|
||||
#define SIGBUS 10 /* Bus error. */
|
||||
#define SIGSYS 12 /* Bad system call. */
|
||||
#define SIGPIPE 13 /* Broken pipe. */
|
||||
#define SIGALRM 14 /* Alarm clock. */
|
||||
|
||||
/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */
|
||||
#define SIGURG 16 /* Urgent data is available at a socket. */
|
||||
#define SIGSTOP 17 /* Stop, unblockable. */
|
||||
#define SIGTSTP 18 /* Keyboard stop. */
|
||||
#define SIGCONT 19 /* Continue. */
|
||||
#define SIGCHLD 20 /* Child terminated or stopped. */
|
||||
#define SIGTTIN 21 /* Background read from control terminal. */
|
||||
#define SIGTTOU 22 /* Background write to control terminal. */
|
||||
#define SIGPOLL 23 /* Pollable event occurred (System V). */
|
||||
#define SIGXCPU 24 /* CPU time limit exceeded. */
|
||||
#define SIGXFSZ 25 /* File size limit exceeded. */
|
||||
#define SIGVTALRM 26 /* Virtual timer expired. */
|
||||
#define SIGPROF 27 /* Profiling timer expired. */
|
||||
#define SIGUSR1 30 /* User-defined signal 1. */
|
||||
#define SIGUSR2 31 /* User-defined signal 2. */
|
||||
|
||||
/* Nonstandard signals found in all modern POSIX systems
|
||||
(including both BSD and Linux). */
|
||||
#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */
|
||||
|
||||
/* Archaic names for compatibility. */
|
||||
#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
|
||||
#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
|
||||
@@ -93,8 +71,9 @@
|
||||
but some real-time signals may be used internally by glibc. Do not
|
||||
use these constants in application code; use SIGRTMIN and SIGRTMAX
|
||||
(defined in signal.h) instead. */
|
||||
#define __SIGRTMIN 32
|
||||
#define __SIGRTMAX __SIGRTMIN
|
||||
|
||||
/* Include system specific bits. */
|
||||
#include <bits/signum-arch.h>
|
||||
|
||||
/* Biggest signal number + 1 (including real-time signals). */
|
||||
#define _NSIG (__SIGRTMAX + 1)
|
||||
|
||||
2
lib/libc/glibc/bits/stat.h
vendored
2
lib/libc/glibc/bits/stat.h
vendored
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1992-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
|
||||
2
lib/libc/glibc/bits/stdint-intn.h
vendored
2
lib/libc/glibc/bits/stdint-intn.h
vendored
@@ -1,5 +1,5 @@
|
||||
/* Define intN_t types.
|
||||
Copyright (C) 2017-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 2017-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
|
||||
2
lib/libc/glibc/bits/stdlib-bsearch.h
vendored
2
lib/libc/glibc/bits/stdlib-bsearch.h
vendored
@@ -1,5 +1,5 @@
|
||||
/* Perform binary search - inline version.
|
||||
Copyright (C) 1991-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 1991-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
|
||||
2
lib/libc/glibc/bits/time64.h
vendored
2
lib/libc/glibc/bits/time64.h
vendored
@@ -1,5 +1,5 @@
|
||||
/* bits/time64.h -- underlying types for __time64_t. Generic version.
|
||||
Copyright (C) 2018-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 2018-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
|
||||
2
lib/libc/glibc/bits/timesize.h
vendored
2
lib/libc/glibc/bits/timesize.h
vendored
@@ -1,5 +1,5 @@
|
||||
/* Bit size of the time_t type at glibc build time, general case.
|
||||
Copyright (C) 2018-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 2018-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Sched parameter structure. Generic version.
|
||||
Copyright (C) 1996-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
|
||||
9
lib/libc/glibc/bits/typesizes.h
vendored
9
lib/libc/glibc/bits/typesizes.h
vendored
@@ -1,5 +1,5 @@
|
||||
/* bits/typesizes.h -- underlying types for *_t. Generic version.
|
||||
Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -50,6 +50,7 @@
|
||||
#define __TIME_T_TYPE __SLONGWORD_TYPE
|
||||
#define __USECONDS_T_TYPE __U32_TYPE
|
||||
#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
|
||||
#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
|
||||
#define __DADDR_T_TYPE __S32_TYPE
|
||||
#define __KEY_T_TYPE __S32_TYPE
|
||||
#define __CLOCKID_T_TYPE __S32_TYPE
|
||||
@@ -75,10 +76,16 @@
|
||||
|
||||
/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
|
||||
# define __STATFS_MATCHES_STATFS64 1
|
||||
|
||||
/* And for getitimer, setitimer and rusage */
|
||||
# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
|
||||
#else
|
||||
# define __RLIM_T_MATCHES_RLIM64_T 0
|
||||
|
||||
# define __STATFS_MATCHES_STATFS64 0
|
||||
|
||||
/* And for getitimer, setitimer and rusage */
|
||||
# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
|
||||
#endif
|
||||
|
||||
/* Number of descriptors that can fit in an `fd_set'. */
|
||||
|
||||
2
lib/libc/glibc/bits/uintn-identity.h
vendored
2
lib/libc/glibc/bits/uintn-identity.h
vendored
@@ -1,5 +1,5 @@
|
||||
/* Inline functions to return unsigned integer values unchanged.
|
||||
Copyright (C) 2017-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 2017-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
|
||||
10
lib/libc/glibc/bits/waitflags.h
vendored
10
lib/libc/glibc/bits/waitflags.h
vendored
@@ -1,5 +1,5 @@
|
||||
/* Definitions of flag bits for `waitpid' et al.
|
||||
Copyright (C) 1992-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 1992-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -24,3 +24,11 @@
|
||||
/* Bits in the third argument to `waitpid'. */
|
||||
#define WNOHANG 1 /* Don't block waiting. */
|
||||
#define WUNTRACED 2 /* Report status of stopped children. */
|
||||
|
||||
/* Bits in the fourth argument to `waitid'. */
|
||||
#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
|
||||
# define WSTOPPED WUNTRACED /* Report stopped child. */
|
||||
# define WCONTINUED 4 /* Report continued child. */
|
||||
# define WNOWAIT 8 /* Don't reap, just poll status. */
|
||||
# define WEXITED 16 /* Report dead child. */
|
||||
#endif
|
||||
|
||||
2
lib/libc/glibc/bits/waitstatus.h
vendored
2
lib/libc/glibc/bits/waitstatus.h
vendored
@@ -1,5 +1,5 @@
|
||||
/* Definitions of status bits for `wait' et al.
|
||||
Copyright (C) 1992-2020 Free Software Foundation, Inc.
|
||||
Copyright (C) 1992-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
|
||||
35
lib/libc/glibc/csu/errno.c
vendored
Normal file
35
lib/libc/glibc/csu/errno.c
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
/* Definition of `errno' variable. Canonical version.
|
||||
Copyright (C) 2002-2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <tls.h>
|
||||
#include <dl-sysdep.h>
|
||||
#undef errno
|
||||
|
||||
#if RTLD_PRIVATE_ERRNO
|
||||
|
||||
/* Code compiled for rtld refers only to this name. */
|
||||
int rtld_errno attribute_hidden;
|
||||
|
||||
#else
|
||||
|
||||
__thread int errno;
|
||||
extern __thread int __libc_errno __attribute__ ((alias ("errno")))
|
||||
attribute_hidden;
|
||||
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user