| # RUN: llc %s -mtriple=m68k -start-after=prologepilog -O0 -filetype=obj -o - \ |
| # RUN: | extract-section .text \ |
| # RUN: | FileCheck %s -check-prefixes=BRA8,BRA16 |
| |
| #------------------------------------------------------------------------------ |
| # MxBRA unconditionally branches somewhere |
| #------------------------------------------------------------------------------ |
| |
| --- # MxBRA8 |
| # -------------------------------+------------------------------- |
| # F E D C B A 9 8 | 7 6 5 4 3 2 1 0 |
| # -------------------------------+------------------------------- |
| # 0 1 1 0 0 0 0 0 | 8-BIT DISPLACEMENT |
| # -------------------------------+------------------------------- |
| # BRA8: 0 1 1 0 0 0 0 0 . 0 0 0 0 0 0 0 1 |
| # BRA8-SAME: 0 1 1 0 0 0 0 0 . 0 0 1 0 1 0 1 0 |
| # |
| # NOTE MxBRA branches cannot encode 0 displacement, 0 in displacement instructs |
| # to use additional word. Also it cannot encode -1 since all 1s instruct to use |
| # two additional words to encode 32bit offset(since M68020). |
| name: MxBRA8 |
| body: | |
| bb.0: |
| BRA8 1, implicit $ccr |
| BRA8 42, implicit $ccr |
| |
| ... |
| --- # MxBRA16 |
| # -------------------------------+------------------------------- |
| # F E D C B A 9 8 | 7 6 5 4 3 2 1 0 |
| # -------------------------------+------------------------------- |
| # 0 1 1 0 0 0 0 0 | 0 0 0 0 0 0 0 0 |
| # --------------------------------------------------------------- |
| # BRA16-SAME: 0 1 1 0 0 0 0 0 . 0 0 0 0 0 0 0 0 |
| # BRA16-SAME: 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 |
| # -------------------------------+------------------------------- |
| # BRA16-SAME: 0 1 1 0 0 0 0 0 . 0 0 0 0 0 0 0 0 |
| # BRA16-SAME: 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 |
| # --------------------------------------------------------------- |
| # BRA16-SAME: 0 1 1 0 0 0 0 0 . 0 0 0 0 0 0 0 0 |
| # BRA16-SAME: 0 0 0 0 0 0 0 0 . 0 0 1 0 1 0 1 0 |
| name: MxBRA16 |
| body: | |
| bb.0: |
| BRA16 0, implicit $ccr |
| BRA16 -1, implicit $ccr |
| BRA16 42, implicit $ccr |
| |
| ... |