diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/2c/mul.c |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/2c/mul.c')
-rwxr-xr-x | sys/src/cmd/2c/mul.c | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/sys/src/cmd/2c/mul.c b/sys/src/cmd/2c/mul.c new file mode 100755 index 000000000..65ddda2f5 --- /dev/null +++ b/sys/src/cmd/2c/mul.c @@ -0,0 +1,174 @@ +#include "gc.h" + +/* + * code sequences for multiply by constant + * all sequences start with leading '0'. + * if sequence starts with 'i', then the + * leading '0' is suppressed. + * '0' mov r0,r1 + * '1' sub r0,r1 + * '2' sub r1,r0 + * '3' add r0,r1 + * '4' add r1,r0 + * '5' add r0,r0 + * '6' add r1,r1 + * 'b' lsh $2,r0 + * 'c' lsh $3,r0 + * 'd'-'h' ... + * 'j' lsh $2,r1 + * 'k'-'p' ... + */ +Multab multab[] = +{ + 2, "i5", + 3, "64", + 4, "i55", + 5, "664", + 6, "645", + 7, "c2", + 9, "k4", + 10, "6645", + 11, "66364", + 12, "6455", + 13, "66464", + 14, "6d2", + 15, "d2", + 17, "l4", + 18, "6d4", + 19, "64k4", + 20, "66455", + 21, "664664", + 22, "64c2", + 23, "44c2", + 24, "64c", + 25, "63k4", + 26, "64c4", + 27, "663e2", + 28, "66e2", + 29, "63e2", + 30, "6e2", + 31, "e2", + 33, "m4", + 34, "6e4", + 35, "64l4", + 36, "66e4", + 37, "664k4", + 38, "64k45", + 39, "454c2", + 40, "664c", + 41, "663k4", + 42, "644c4", + 43, "643k4", + 44, "664c4", + 45, "640d2", + 46, "64d2", + 47, "44d2", + 48, "64d", + 49, "63l4", + 50, "64d4", + 51, "640l4", + 52, "646d4", + 53, "643d4", + 54, "6636f2", + 55, "k3f2", + 56, "kf2", + 57, "k2k4", + 58, "636f2", + 59, "663f2", + 60, "66f2", + 61, "63f2", + 62, "6f2", + 63, "f2", + 65, "n4", + 66, "6f4", + 67, "64m4", + 68, "66f4", + 69, "664l4", + 70, "64l45", + 71, "k1f4", + 72, "k4c", + 73, "k4k4", + 74, "664k45", + 75, "6640d2", + 76, "664d2", + 77, "434d2", + 78, "644d2", + 79, "454d2", + 80, "664d", + 81, "663l4", + 82, "644d4", + 83, "643l4", + 84, "664d4", + 85, "6640l4", + 86, "6634l4", + 87, "6443d4", + 88, "6646d4", + 89, "6643d4", + 90, "6406e2", + 91, "643e2", + 92, "646e2", + 93, "640e2", + 94, "64e2", + 95, "44e2", + 96, "64e", + 97, "63m4", + 98, "64e4", + 99, "640m4", + 100, "646e4", + 200, "66f364", + 300, "j40jf2", + 400, "64kg4", + 500, "66h212", + 600, "64m4c4", + 700, "j4c4d2", + 800, "64lh4", + 900, "6464g4", + 1000, "63g2c", + 1100, "j4d2p4", + 1200, "64k4f2", + 1300, "j4n4b4", + 1400, "64j4g2", + 1600, "64d4e", + 1800, "p4c2", + 2000, "63g2d", + 2100, "l4b2o4", + 2200, "k4d4p4", + 2300, "6644h2", + 2400, "j4k4f4", + 2500, "j4e2d4", + 2600, "j40n4c", + 3100, "jd12p2", + 3200, "64d4f", + 3600, "6d1p2", + 3800, "e3k3g2", + 3900, "jf20n4", + 4000, "o4e2", + 4100, "66p455", + 4200, "l4c3e2", + 4300, "l4b1f4", + 4400, "64o4d4", + 4600, "k45h2", + 4700, "k3j4g2", + 4800, "j40d2f", + 5000, "l4c3m4", + 5100, "j40h2b", + 5200, "j40n4d", + 6000, "d1o3h2", + 6100, "o1l4b2", + 6200, "ke12p2", + 6400, "64d4g", + 7200, "66e1p2", + 7400, "m3m4c2", + 7600, "l4f3c2", + 7800, "kg20n4", + 8000, "63g2f", + 8100, "m2b4p4", + 8200, "66p4c", + 8700, "66f4g2", + 8900, "l3j4g4", + 9200, "k45h25", + 9600, "j40d2g", + 9800, "k4f3d4", +}; + +int multabsize = sizeof(multab) / sizeof(multab[0]); |