diff --git a/data/languages/xtensaTodo.sinc b/data/languages/xtensaTodo.sinc index 5c7a29c..0e6060d 100644 --- a/data/languages/xtensaTodo.sinc +++ b/data/languages/xtensaTodo.sinc @@ -52,3 +52,27 @@ :mula.aa.* as, at is op2 = 0b0001 & u2_18.19 = 0b01 & ar = 0 & as & at & op0 = 0b0100 unimpl # FIXME: Add remaining MUL.* opcodes. + + +# TODO this produces correct pcode, tho it would be nicer to display the float in disasm as well +# +0.0 +1.0 +2.0 +0.5 +const.s_imm: tmp is as=0 [ tmp = 0x00000000; ] { export *[const]:4 tmp; } +const.s_imm: tmp is as=1 [ tmp = 0x3F800000; ] { export *[const]:4 tmp; } +const.s_imm: tmp is as=2 [ tmp = 0x40000000; ] { export *[const]:4 tmp; } +const.s_imm: tmp is as=3 [ tmp = 0x3F000000; ] { export *[const]:4 tmp; } + +:const.s fr, const.s_imm is op2=0b1111 & op1=0b1010 & fr & const.s_imm & at=0b0011 & op0=0 { + fr = float2float(const.s_imm); +} + + +# Stub out some insns which mainly appear in boilerplate library functions... +:div0.s fr, fs is op2=0b1111 & op1=0b1010 & fr & fs & at=0b0111 & op0=0 unimpl +:sqrt0.s fr, fs is op2=0b1111 & op1=0b1010 & fr & fs & at=0b1001 & op0=0 unimpl +:nexp01.s fr, fs is op2=0b1111 & op1=0b1010 & fr & fs & at=0b1011 & op0=0 unimpl +:mksadj.s fr, fs is op2=0b1111 & op1=0b1010 & fr & fs & at=0b1100 & op0=0 unimpl +:mkdadj.s fr, fs is op2=0b1111 & op1=0b1010 & fr & fs & at=0b1101 & op0=0 unimpl +:addexp.s fr, fs is op2=0b1111 & op1=0b1010 & fr & fs & at=0b1110 & op0=0 unimpl +:addexpm.s fr, fs is op2=0b1111 & op1=0b1010 & fr & fs & at=0b1111 & op0=0 unimpl +:maddn.s fr, fs, ft is op2=0b0110 & op1=0b1010 & fr & fs & ft & op0=0 unimpl +:divn.s fr, fs, ft is op2=0b0111 & op1=0b1010 & fr & fs & ft & op0=0 unimpl