Skip to content

Commit

Permalink
printer: flush instructions after JMP
Browse files Browse the repository at this point in the history
For compatibility with `asmfmt`

Updates #8
  • Loading branch information
mmcloughlin committed Jan 28, 2020
1 parent 2050717 commit ef318f1
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 18 deletions.
3 changes: 3 additions & 0 deletions printer/goasm.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,9 @@ func (p *goasm) function(f *ir.Function) {
switch n := node.(type) {
case *ir.Instruction:
p.instruction(n)
if n.IsTerminal || n.IsUnconditionalBranch() {
p.flush()
}
case ir.Label:
p.flush()
p.ensureclear()
Expand Down
36 changes: 18 additions & 18 deletions tests/fixedbugs/issue100/allocfail/allocfail.s
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ emit_lit_memmove_repeat_emit_encodeBlockAsm_memmove_move_256through2048:
LEAQ 256(BX), BX
JGE emit_lit_memmove_repeat_emit_encodeBlockAsm_memmove_move_256through2048
JMP emit_lit_memmove_repeat_emit_encodeBlockAsm_memmove_tail
MOVQ R8, BX
MOVQ R8, BX

emit_literal_done_repeat_emit_encodeBlockAsm:
MOVQ BX, dst_base+0(FP)
Expand Down Expand Up @@ -911,7 +911,7 @@ emit_lit_memmove_match_emit_encodeBlockAsm_memmove_move_256through2048:
LEAQ 256(SI), SI
JGE emit_lit_memmove_match_emit_encodeBlockAsm_memmove_move_256through2048
JMP emit_lit_memmove_match_emit_encodeBlockAsm_memmove_tail
MOVQ R8, SI
MOVQ R8, SI

emit_literal_done_match_emit_encodeBlockAsm:
MOVQ SI, dst_base+0(FP)
Expand Down Expand Up @@ -1418,7 +1418,7 @@ emit_lit_memmove_emit_remainder_encodeBlockAsm_memmove_move_256through2048:
LEAQ 256(CX), CX
JGE emit_lit_memmove_emit_remainder_encodeBlockAsm_memmove_move_256through2048
JMP emit_lit_memmove_emit_remainder_encodeBlockAsm_memmove_tail
MOVQ DX, CX
MOVQ DX, CX

emit_literal_done_emit_remainder_encodeBlockAsm:
MOVQ CX, dst_base+0(FP)
Expand Down Expand Up @@ -1739,7 +1739,7 @@ emit_lit_memmove_repeat_emit_encodeBlockAsm14B_memmove_move_256through2048:
LEAQ 256(BX), BX
JGE emit_lit_memmove_repeat_emit_encodeBlockAsm14B_memmove_move_256through2048
JMP emit_lit_memmove_repeat_emit_encodeBlockAsm14B_memmove_tail
MOVQ R8, BX
MOVQ R8, BX

emit_literal_done_repeat_emit_encodeBlockAsm14B:
MOVQ BX, dst_base+0(FP)
Expand Down Expand Up @@ -2334,7 +2334,7 @@ emit_lit_memmove_match_emit_encodeBlockAsm14B_memmove_move_256through2048:
LEAQ 256(SI), SI
JGE emit_lit_memmove_match_emit_encodeBlockAsm14B_memmove_move_256through2048
JMP emit_lit_memmove_match_emit_encodeBlockAsm14B_memmove_tail
MOVQ R8, SI
MOVQ R8, SI

emit_literal_done_match_emit_encodeBlockAsm14B:
MOVQ SI, dst_base+0(FP)
Expand Down Expand Up @@ -2841,7 +2841,7 @@ emit_lit_memmove_emit_remainder_encodeBlockAsm14B_memmove_move_256through2048:
LEAQ 256(CX), CX
JGE emit_lit_memmove_emit_remainder_encodeBlockAsm14B_memmove_move_256through2048
JMP emit_lit_memmove_emit_remainder_encodeBlockAsm14B_memmove_tail
MOVQ DX, CX
MOVQ DX, CX

emit_literal_done_emit_remainder_encodeBlockAsm14B:
MOVQ CX, dst_base+0(FP)
Expand Down Expand Up @@ -3162,7 +3162,7 @@ emit_lit_memmove_repeat_emit_encodeBlockAsm12B_memmove_move_256through2048:
LEAQ 256(BX), BX
JGE emit_lit_memmove_repeat_emit_encodeBlockAsm12B_memmove_move_256through2048
JMP emit_lit_memmove_repeat_emit_encodeBlockAsm12B_memmove_tail
MOVQ R8, BX
MOVQ R8, BX

emit_literal_done_repeat_emit_encodeBlockAsm12B:
MOVQ BX, dst_base+0(FP)
Expand Down Expand Up @@ -3757,7 +3757,7 @@ emit_lit_memmove_match_emit_encodeBlockAsm12B_memmove_move_256through2048:
LEAQ 256(SI), SI
JGE emit_lit_memmove_match_emit_encodeBlockAsm12B_memmove_move_256through2048
JMP emit_lit_memmove_match_emit_encodeBlockAsm12B_memmove_tail
MOVQ R8, SI
MOVQ R8, SI

emit_literal_done_match_emit_encodeBlockAsm12B:
MOVQ SI, dst_base+0(FP)
Expand Down Expand Up @@ -4264,7 +4264,7 @@ emit_lit_memmove_emit_remainder_encodeBlockAsm12B_memmove_move_256through2048:
LEAQ 256(CX), CX
JGE emit_lit_memmove_emit_remainder_encodeBlockAsm12B_memmove_move_256through2048
JMP emit_lit_memmove_emit_remainder_encodeBlockAsm12B_memmove_tail
MOVQ DX, CX
MOVQ DX, CX

emit_literal_done_emit_remainder_encodeBlockAsm12B:
MOVQ CX, dst_base+0(FP)
Expand Down Expand Up @@ -4633,7 +4633,7 @@ emit_lit_memmove_repeat_emit_encodeBlockAsmAvx_memmove_gobble_128_loop:
MOVOU X11, -32(SI)
MOVOU X12, -16(SI)
JMP emit_literal_done_repeat_emit_encodeBlockAsmAvx
MOVQ R8, BX
MOVQ R8, BX

emit_literal_done_repeat_emit_encodeBlockAsmAvx:
MOVQ BX, dst_base+0(FP)
Expand Down Expand Up @@ -5276,7 +5276,7 @@ emit_lit_memmove_match_emit_encodeBlockAsmAvx_memmove_gobble_128_loop:
MOVOU X11, -32(DI)
MOVOU X12, -16(DI)
JMP emit_literal_done_match_emit_encodeBlockAsmAvx
MOVQ R8, SI
MOVQ R8, SI

emit_literal_done_match_emit_encodeBlockAsmAvx:
MOVQ SI, dst_base+0(FP)
Expand Down Expand Up @@ -5831,7 +5831,7 @@ emit_lit_memmove_emit_remainder_encodeBlockAsmAvx_memmove_gobble_128_loop:
MOVOU X11, -32(BX)
MOVOU X12, -16(BX)
JMP emit_literal_done_emit_remainder_encodeBlockAsmAvx
MOVQ DX, CX
MOVQ DX, CX

emit_literal_done_emit_remainder_encodeBlockAsmAvx:
MOVQ CX, dst_base+0(FP)
Expand Down Expand Up @@ -6200,7 +6200,7 @@ emit_lit_memmove_repeat_emit_encodeBlockAsm14BAvx_memmove_gobble_128_loop:
MOVOU X11, -32(SI)
MOVOU X12, -16(SI)
JMP emit_literal_done_repeat_emit_encodeBlockAsm14BAvx
MOVQ R8, BX
MOVQ R8, BX

emit_literal_done_repeat_emit_encodeBlockAsm14BAvx:
MOVQ BX, dst_base+0(FP)
Expand Down Expand Up @@ -6843,7 +6843,7 @@ emit_lit_memmove_match_emit_encodeBlockAsm14BAvx_memmove_gobble_128_loop:
MOVOU X11, -32(DI)
MOVOU X12, -16(DI)
JMP emit_literal_done_match_emit_encodeBlockAsm14BAvx
MOVQ R8, SI
MOVQ R8, SI

emit_literal_done_match_emit_encodeBlockAsm14BAvx:
MOVQ SI, dst_base+0(FP)
Expand Down Expand Up @@ -7398,7 +7398,7 @@ emit_lit_memmove_emit_remainder_encodeBlockAsm14BAvx_memmove_gobble_128_loop:
MOVOU X11, -32(BX)
MOVOU X12, -16(BX)
JMP emit_literal_done_emit_remainder_encodeBlockAsm14BAvx
MOVQ DX, CX
MOVQ DX, CX

emit_literal_done_emit_remainder_encodeBlockAsm14BAvx:
MOVQ CX, dst_base+0(FP)
Expand Down Expand Up @@ -7767,7 +7767,7 @@ emit_lit_memmove_repeat_emit_encodeBlockAsm12BAvx_memmove_gobble_128_loop:
MOVOU X11, -32(SI)
MOVOU X12, -16(SI)
JMP emit_literal_done_repeat_emit_encodeBlockAsm12BAvx
MOVQ R8, BX
MOVQ R8, BX

emit_literal_done_repeat_emit_encodeBlockAsm12BAvx:
MOVQ BX, dst_base+0(FP)
Expand Down Expand Up @@ -8410,7 +8410,7 @@ emit_lit_memmove_match_emit_encodeBlockAsm12BAvx_memmove_gobble_128_loop:
MOVOU X11, -32(DI)
MOVOU X12, -16(DI)
JMP emit_literal_done_match_emit_encodeBlockAsm12BAvx
MOVQ R8, SI
MOVQ R8, SI

emit_literal_done_match_emit_encodeBlockAsm12BAvx:
MOVQ SI, dst_base+0(FP)
Expand Down Expand Up @@ -8965,7 +8965,7 @@ emit_lit_memmove_emit_remainder_encodeBlockAsm12BAvx_memmove_gobble_128_loop:
MOVOU X11, -32(BX)
MOVOU X12, -16(BX)
JMP emit_literal_done_emit_remainder_encodeBlockAsm12BAvx
MOVQ DX, CX
MOVQ DX, CX

emit_literal_done_emit_remainder_encodeBlockAsm12BAvx:
MOVQ CX, dst_base+0(FP)
Expand Down

0 comments on commit ef318f1

Please sign in to comment.