123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- #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]);
|