diff options
| author | Andrew Chambers <[email protected]> | 2021-10-15 19:51:03 +1300 |
|---|---|---|
| committer | Andrew Chambers <[email protected]> | 2021-10-15 19:51:03 +1300 |
| commit | 40739d6fb733229732ec2e6ad808ef9002df2ad8 (patch) | |
| tree | 03b30621efa22a5cd990acb00958dc2373da13ae /asm.peg | |
| parent | b457444efaa0afcdb41601ca86a10bb81bbbd8c1 (diff) | |
Pass more tests.
Diffstat (limited to 'asm.peg')
| -rw-r--r-- | asm.peg | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -113,10 +113,14 @@ instr = | i:cqto { $$ = i; } | i:nop { $$ = i; } # Floating point is less common, so check last. + | i:addss { $$ = i; } + | i:addsd { $$ = i; } | i:divsd { $$ = i; } | i:pxor { $$ = i; } | i:xorpd { $$ = i; } | i:xorps { $$ = i; } + | i:subsd { $$ = i; } + | i:subss { $$ = i; } | i:ucomisd { $$ = i; } | i:ucomiss { $$ = i; } | (& 'c' @@ -422,6 +426,26 @@ test = "test" ( # Floating point instructions. +addsd = "addsd" ( + ws s:xmm ws? ',' ws? d:xmm { $$ = INSTR2(0, s, d); } + | ws s:mem ws? ',' ws? d:xmm { $$ = INSTR2(1, s, d); } +) { $$.instr.kind = ASM_ADDSD; } + +addss = "addss" ( + ws s:xmm ws? ',' ws? d:xmm { $$ = INSTR2(0, s, d); } + | ws s:mem ws? ',' ws? d:xmm { $$ = INSTR2(1, s, d); } +) { $$.instr.kind = ASM_ADDSS; } + +subsd = "subsd" ( + ws s:xmm ws? ',' ws? d:xmm { $$ = INSTR2(0, s, d); } + | ws s:mem ws? ',' ws? d:xmm { $$ = INSTR2(1, s, d); } +) { $$.instr.kind = ASM_SUBSD; } + +subss = "subss" ( + ws s:xmm ws? ',' ws? d:xmm { $$ = INSTR2(0, s, d); } + | ws s:mem ws? ',' ws? d:xmm { $$ = INSTR2(1, s, d); } +) { $$.instr.kind = ASM_SUBSS; } + cvtsi2sd = "cvtsi2sd" ( ws s:r32 ws? ',' ws? d:xmm { $$ = INSTR2(0, s, d); } | ws s:mem ws? ',' ws? d:xmm { $$ = INSTR2(1, s, d); } |
