Implement support for large immediates on RISC-V.

This commit is contained in:
Andrius Štikonas 2021-10-03 11:31:34 +01:00
parent 5e74995c13
commit 56ee526c4c
3 changed files with 36 additions and 17 deletions

View File

@ -654,7 +654,8 @@ void primary_expr_number()
emit_out(global_token->s);
emit_out(" ADDI");
}
else {
else if (0 == (size >> 30))
{
emit_out("RD_A0 ~");
emit_out(global_token->s);
emit_out(" LUI\n");
@ -662,6 +663,24 @@ void primary_expr_number()
emit_out(global_token->s);
emit_out(" ADDI");
}
else {
int high = size >> 30;
int low = ((size >> 30) << 30) ^ size;
emit_out("RD_A0 ~");
emit_out(int2str(high, 10, TRUE));
emit_out(" LUI\n");
emit_out("RD_A0 RS1_A0 !");
emit_out(int2str(high, 10, TRUE));
emit_out(" ADDI\n");
emit_out("RD_A0 RS1_A0 RS2_X30 SLLI\n");
emit_out("RD_T1 ~");
emit_out(int2str(low, 10, TRUE));
emit_out(" LUI\n");
emit_out("RD_T1 RS1_T1 !");
emit_out(int2str(low, 10, TRUE));
emit_out(" ADDI\n");
emit_out("RD_A0 RS1_A0 RS2_T1 OR\n");
}
}
emit_out("\n");
global_token = global_token->next;

View File

@ -59,7 +59,7 @@ c5ee99709aae9902b9f3e1c964c6f032aa1fcb6ffde22a0f70a39817f1d3e6d1 test/results/t
ee0af07393d392e4bf327dd98c256481830cdf5ebd22542c39ff0c56849d8db8 test/results/test0008-armv7l-binary
0bfda5393996b2b7fd8231eabc3bba43727f10a489bebbb56bf763223e462fd7 test/results/test0008-knight-native-binary
f5c0f8860daf86d1327c321de9647dd7acab478c500826c87fbad7af06999c27 test/results/test0008-knight-posix-binary
24f43c64930ea3fb2b4e4c76e1e9639e9507b5c510bc9ff1c6f8ccf36eec91cf test/results/test0008-riscv64-binary
108daf4a533aaefdf442e9b40b21f1c89a3372b695bff50895407c8e7f1bbbd1 test/results/test0008-riscv64-binary
cdc49e5c50b72858ef3910e796ca30a6def56a87a0c51d61808d615c7d0a71a3 test/results/test0008-x86-binary
9b64d8a96e9cc8cc6d45e1a66455c12bb7aaff524b6f28534b90cc88f45daf76 test/results/test0009-aarch64-binary
df2ca3e2ecea73a1ad571b3bb20dabba4981cd37fe24b02fa4e953216405f1bb test/results/test0009-amd64-binary
@ -73,7 +73,7 @@ cbbc0a92b5345ba1ec9551ffa5b8ddd406b63578ccfa36bbba6dce5897a5cabb test/results/t
5cf6b1a4f65687ad7c1691a8492c6bbbd0bdfc84bab060bcedab200ae651e9a9 test/results/test0010-armv7l-binary
b69b69e26372d008a5c6696f3e4e8dd26fa97b197cf5a87a36c9daa6c3c768d4 test/results/test0010-knight-native-binary
c75c25d9003a0e5660f52324262b2b69ea8cedeeda0120304f73b84d2979cc42 test/results/test0010-knight-posix-binary
1f07be87339da7abe074d640defdae73d82b74c3c52c151130e5f3a6210cd34e test/results/test0010-riscv64-binary
d50489ddea305a9b477f2ebd1ba7df67dca38686e36995b2d6281ceb94491d15 test/results/test0010-riscv64-binary
43caeff474ae1f337bcef0aa83330121a4290e8bb9d54133391b8eecdba0d84a test/results/test0010-x86-binary
84ff3cff178c655af99354166b8511c2cb754ee90d1d6fe1732cc78ebf472d31 test/results/test0011-aarch64-binary
4749482e5fa5fbc0951a2084afb46815130862f0fb044358edd6da80de41fafe test/results/test0011-amd64-binary
@ -132,14 +132,14 @@ b3634bb37ce7285795076df9326f8aa645755e2ab9019083da6de988387aeaf4 test/results/t
680c41682d3e6d1ac9a9decabce38e509ae09b2bf2c3fceabe4748166ba227e7 test/results/test0019-amd64-binary
bfc5de309050856cf34caca6793d12495884cd2500cb557d23a63e9a208ca727 test/results/test0019-armv7l-binary
ad4206531d381639e2367ea203c94ff7f654825a3fa5f354c0aded728b101067 test/results/test0019-knight-posix-binary
b94c8771948c44d8706c053ab49fd0c9ded8d3301304ee252efd283a9dfaeba4 test/results/test0019-riscv64-binary
9f1028d4554b08e318aa494077cfe24b822f4e7194b3e7cd6e534d6a81af1945 test/results/test0019-riscv64-binary
feb79bec4e81edbc9dc4772432f2a11a4e1f4dee90bb6292ef05968c279b324f test/results/test0019-x86-binary
43475701b498d648d5246b3cef25dadc5ecab248c84bc5aa4566b13a1689ff1f test/results/test0020-aarch64-binary
bb03c8c1dd714423ddea7e06708488d83eb86d941b25d631bae02a915c483ad4 test/results/test0020-amd64-binary
17a1a46da1607f4bdfbb24c0902c6c8d28580fe4cfacdd5e931fa42732917ca7 test/results/test0020-armv7l-binary
ead4f942d4a0fd3c48968ea88357a015145eec1c22be446bdc604d49f766eb0e test/results/test0020-knight-native-binary
4fd2a92e4ff7a9d472b6f41a45124a6750f5193a4d5e3f43c291ddf29725a517 test/results/test0020-knight-posix-binary
8e4c805f0aa40c8904f11811e827a5a4198165148b96f195d3f6acd027039202 test/results/test0020-riscv64-binary
33864c1146be4daa91c8e4505ce4f3f595fc03209136e866d20727bfa657695c test/results/test0020-riscv64-binary
d555181ec1a1e2f647a7e161b6c68b88f8b7e3f07a832e324beb959d5db770a6 test/results/test0020-x86-binary
f70268ceee206bb95124a913882d185d8a1de9f9cd668f7dd6d0d32fc2b8c65e test/results/test0021-aarch64-binary
a6706bd32fa7c69c906eb874ef7113fa7da2e0f9a0008cb7a22cc1d9824aa8c2 test/results/test0021-amd64-binary
@ -151,7 +151,7 @@ cb7c0d09d2468dfbad4e275ea2f0820dabbfa1ef49596f302074dc420dc2e2b6 test/results/t
7910c2ef089dc53864af990270b98f811d8aa30ca544582460de2aaecc8a0f41 test/results/test0022-amd64-binary
ccc06f44897513c665472731d587ee3e08268115710c67bb90e0d8b0e20585d7 test/results/test0022-armv7l-binary
8665a85fc02517337e7e1d51bb163154bbc894276715b05f640baea414fb640c test/results/test0022-knight-posix-binary
d8eec4ada6b12595f16f9d93ed1e6855913ff0d0cd8720d5a4aa030dd8c094f1 test/results/test0022-riscv64-binary
28422719abbfacba085731b96349e546a7ef989b0d230f48fb492f1c23617a4c test/results/test0022-riscv64-binary
a405efc6fdf369e1590d68c05a0a763c0dbf4b70e34caab1f68e57c21c1cbdc8 test/results/test0022-x86-binary
7c89643fc880073f9d2dc2e129470a03d82b86e5f0eb7ca3e635ed40eaa85e71 test/results/test0023-aarch64-binary
e3416188528883842f5fd2cbfe699c6d8a23b63bb4d18ca30eae13a45e1d8922 test/results/test0023-amd64-binary
@ -181,13 +181,13 @@ a281f1c4262bca7dd34e236ba693afe9509a5c5bde8a7e61d4fb2bf4fb80fb4f test/results/t
7318f0872bf88ab215fba0ce447c392f47e6a691a119c4fab5a45b9316a998c3 test/results/test0101-amd64-binary
f07899efe2ab667c1f8137dbd235042568f485131b64c778391a31497afa2621 test/results/test0101-armv7l-binary
f7714bb5cf7168bba04bb7b38cceaab92e8df4b4a443305235d58490219d44f1 test/results/test0101-knight-posix-binary
9090490f4fd25d52586d47410644875c8bb19dfa6c2292002ad6bc2e5f89c5e4 test/results/test0101-riscv64-binary
36f09ad3340ba801640ed0c18188b7ab0a4b9f2381cda094dfa122e9a53bc384 test/results/test0101-riscv64-binary
ead6caa8468be14d52e9d81844fb167c140e68de19e398a1311e90161f92ffa7 test/results/test0101-x86-binary
30cdc11e7be5e441a6d9b12ba8b398e413403023bd6dc85fe4075f830bcd5d5b test/results/test0102-aarch64-binary
9186879ba33ac2005562b3f9331439743ef86df7703fb1266bb0cabb362fe661 test/results/test0102-amd64-binary
3fa8c277f27cab6d447e68ce9aa2cad0ab8790e513d753ec712dfb5ae8b4d365 test/results/test0102-armv7l-binary
6617cf46214cb085ad9ab72b72ad8bf30011c2a8dbbb8e86cbb7e9b971562842 test/results/test0102-knight-posix-binary
526c5c87626a7ccbc8f88a83a2716db6a3731921c937101a8f91e0ea70485158 test/results/test0102-riscv64-binary
9a921139177d3ecf84bb2e7ad5ec938f8264a8daac23f48ed1ef2b8a4d2020b6 test/results/test0102-riscv64-binary
db1ea5f9f336af7efd6e7c65b89e72190b513ac01b6123f60dffb90820fdf3b1 test/results/test0102-x86-binary
1d76a736a9f4089dd8ffa6a404f768dc72f6c87ea0fc9efd859fdf43d6b29fe1 test/results/test0103-aarch64-binary
caee5ec7476883435534779cb7e1d3b468464071601c2f1e200e897c77f3f9b0 test/results/test0103-amd64-binary
@ -198,12 +198,12 @@ f63ebb32f3b44e60ff60b50cf9721e09583b71fb608402f0531ebe6381853638 test/results/t
1955401bfea2e675d5bd5ede42a2b96a858218dd023964e363f09320a26d8ef5 test/results/test0104-aarch64-binary
76c2d9e2bbb6051f7433aa5a6eaf5db24571b87bb329aaf214b02e836977fae4 test/results/test0104-amd64-binary
e4809e3dd09e12c23de76872f4220cd80cb46f8337653a8c2e33e7a5b97e8a17 test/results/test0104-armv7l-binary
6368260bd1abe2902512df71540715b6bdf2e07a6e3ed4c23ac000970fc1e77b test/results/test0104-riscv64-binary
d2b2bddc452936a1b10246bed89bce001d0db9cbdb7194c205e65414ac828e40 test/results/test0104-riscv64-binary
ea128db10e8eea2842cba9cd38e88190eb84670ef1dd92f67ecfd0b592d3a107 test/results/test0104-x86-binary
7af3ac6467fccfa9a5eaaf5728df6d840c898fe85af79df89de72b060f42b70c test/results/test0105-aarch64-binary
7f823b5fecee2649b2e64621c1689ad1283d1be25d847394b3b5299d1cb72b3a test/results/test0105-amd64-binary
46b1c077d240f8ef11de323ed2790cf8c955f1ea1df06a27858e7515bd691b52 test/results/test0105-armv7l-binary
0a1cb20f6420950ade08152e8e25b546158db8bc4f13fe9bc5747fa8240b48ce test/results/test0105-riscv64-binary
6b4b74c1a60cb693350826cf2a6aab921929c741645cdb9be36b4fd789a94807 test/results/test0105-riscv64-binary
9832bfe1c81fcc43d18dd9f965ead57cad0342fd867036758206efbc275509f1 test/results/test0105-x86-binary
eb1f6aab09a1a4966f9f49a518d8aa03ca97aa7c46e443871d758a306671a85e test/results/test0106-aarch64-binary
1eaf43e60d9304fe45ca492a673e6b179b45da211542140cbdaa19f14affde9f test/results/test0106-amd64-binary
@ -212,9 +212,9 @@ eb1f6aab09a1a4966f9f49a518d8aa03ca97aa7c46e443871d758a306671a85e test/results/t
a2cbfd5f76d3be8049c6737e3fa02f191caf29b6885db006fa23f86e6eacc186 test/results/test0106-knight-posix-binary
5d25eda44320f9ff2869d9ee5bc0808b4ffd13c8803fb922c3c6759cfa39be32 test/results/test0106-riscv64-binary
473cc504d6cba9eaf648abcf15c83a317ff3f4a7f08f5e8936e3b35b2cc4fbc6 test/results/test0106-x86-binary
f67cfc1c4c858ebb64d616e770def1beb8673e7990cb14baae20380e2311477d test/results/test1000-aarch64-binary
e9ef13ec504619ddc6ee71d700fdabe3034a82d46a1c2e4118dd3415e943907c test/results/test1000-amd64-binary
2b70bddfe076e5a939741722af0039837e83d9df8328c28861082ee0149062fe test/results/test1000-armv7l-binary
88ab59b05b5ad9a0a8545ce0507af1bd25f83d4451b69f74ce209057b652ff32 test/results/test1000-knight-posix-binary
3b0b18b9c4e0310bf2a0e9d4978e2ca2d442242ab18f19329123f26bc81a1768 test/results/test1000-riscv64-binary
f69333a1faf95bf8c183b2d312b1a36acda6c6a27d63a7e33518423ae5a51388 test/results/test1000-x86-binary
78630e29f8800365fe5b45403277cfab1c8d6f74f41d36e51155cf093216da68 test/results/test1000-aarch64-binary
d8c8f6e4bd67179acbac0baa151ae7122f7694aa43da08597bb70c74dce77a79 test/results/test1000-amd64-binary
6929a64a24e3a79db8f527f637c77f91df1fb48999397345cc29d884f86cb090 test/results/test1000-armv7l-binary
0e03b77092d18e92b376cfe29b941ee309119a940162f208db339bbea43187f4 test/results/test1000-knight-posix-binary
654efd2f307d67fddd54fe8182b7cb823e7702760766a802600d80ac17e67694 test/results/test1000-riscv64-binary
e9fc057ddd8b32c5003ae5e948307d99573b8323d81b42e8ebf1c4188724afef test/results/test1000-x86-binary

View File

@ -1 +1 @@
5b105981c7e983384991e2449b30099fa1486c0d68b8408d709edd19936dd863 test/test1000/proof
e2717a208a5649251ab28cf9e46541147074953f179a6dc92c2fe8464220891e test/test1000/proof