diff options
Diffstat (limited to 'lisc/emit.c')
-rw-r--r-- | lisc/emit.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lisc/emit.c b/lisc/emit.c index 0ed3296..e055758 100644 --- a/lisc/emit.c +++ b/lisc/emit.c @@ -44,6 +44,8 @@ static struct { { OAdd, Ka, "+add%k %1, %=" }, { OSub, Ka, "-sub%k %1, %=" }, { OAnd, Ki, "+and%k %1, %=" }, + { OOr, Ki, "+or%k %1, %=" }, + { OXor, Ki, "+xor%k %1, %=" }, { OMul, Ki, "+imul%k %1, %=" }, { OMul, Ks, "+mulss %1, %=" }, /* fixme */ { OMul, Kd, "+mulsd %1, %=" }, @@ -68,6 +70,14 @@ static struct { { OExtuh, Ki, "movzw%k %H0, %=" }, { OExtsb, Ki, "movsb%k %B0, %=" }, { OExtub, Ki, "movzb%k %B0, %=" }, + + { OExts, Kd, "cvtss2sd %0, %=" }, /* see if factorization is possible */ + { OTruncd, Ks, "cvttsd2ss %0, %=" }, + { OFtosi, Kw, "cvttss2si %0, %=" }, + { OFtosi, Kl, "cvttsd2si %0, %=" }, + { OSitof, Ks, "cvtsi2ss %W0, %=" }, + { OSitof, Kd, "cvtsi2sd %L0, %=" }, + { OAddr, Ki, "lea%k %M0, %=" }, { OSwap, Ki, "xchg%k %0, %1" }, { OSign, Kl, "cqto" }, |