| # RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+c < %s \ |
| # RUN: | llvm-objdump -d -M no-aliases - | FileCheck --check-prefix=INSTR %s |
| # RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+c,+relax < %s \ |
| # RUN: | llvm-objdump -d -M no-aliases - | FileCheck --check-prefix=RELAX-INSTR %s |
| # RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+c,+relax < %s \ |
| # RUN: | llvm-readobj -r - | FileCheck -check-prefix=RELAX-RELOC %s |
| |
| FAR_JUMP_NEGATIVE: |
| c.nop |
| .space 2000 |
| |
| FAR_BRANCH_NEGATIVE: |
| c.nop |
| .space 256 |
| |
| NEAR_NEGATIVE: |
| c.nop |
| |
| start: |
| c.bnez a0, NEAR |
| #INSTR: c.bnez a0, 0x91e |
| #RELAX-INSTR: c.bnez a0, 0 |
| #RELAX-RELOC: R_RISCV_RVC_BRANCH |
| c.bnez a0, NEAR_NEGATIVE |
| #INSTR: c.bnez a0, 0x8d4 |
| #RELAX-INSTR: c.bnez a0, 0 |
| #RELAX-RELOC: R_RISCV_RVC_BRANCH |
| c.bnez a0, FAR_BRANCH |
| #INSTR-NEXT: bne a0, zero, 0xa20 |
| #RELAX-INSTR-NEXT: bne a0, zero, 0 |
| #RELAX-RELOC: R_RISCV_BRANCH |
| c.bnez a0, FAR_BRANCH_NEGATIVE |
| #INSTR-NEXT: bne a0, zero, 0x7d2 |
| #RELAX-INSTR-NEXT: bne a0, zero, 0 |
| #RELAX-RELOC: R_RISCV_BRANCH |
| c.bnez a0, FAR_JUMP |
| #INSTR-NEXT: bne a0, zero, 0x11f2 |
| #RELAX-INSTR-NEXT: bne a0, zero, 0 |
| #RELAX-RELOC: R_RISCV_BRANCH |
| c.bnez a0, FAR_JUMP_NEGATIVE |
| #INSTR-NEXT: bne a0, zero, 0x0 |
| #RELAX-INSTR-NEXT: bne a0, zero, 0 |
| #RELAX-RELOC: R_RISCV_BRANCH |
| |
| c.beqz a0, NEAR |
| #INSTR-NEXT: c.beqz a0, 0x91e |
| #RELAX-INSTR-NEXT: c.beqz a0, 0 |
| #RELAX-RELOC: R_RISCV_RVC_BRANCH |
| c.beqz a0, NEAR_NEGATIVE |
| #INSTR-NEXT: c.beqz a0, 0x8d4 |
| #RELAX-INSTR-NEXT: c.beqz a0, 0 |
| #RELAX-RELOC: R_RISCV_RVC_BRANCH |
| c.beqz a0, FAR_BRANCH |
| #INSTR-NEXT: beq a0, zero, 0xa20 |
| #RELAX-INSTR-NEXT: beq a0, zero, 0 |
| #RELAX-RELOC: R_RISCV_BRANCH |
| c.beqz a0, FAR_BRANCH_NEGATIVE |
| #INSTR-NEXT: beq a0, zero, 0x7d2 |
| #RELAX-INSTR-NEXT: beq a0, zero, 0 |
| #RELAX-RELOC: R_RISCV_BRANCH |
| c.beqz a0, FAR_JUMP |
| #INSTR-NEXT: beq a0, zero, 0x11f2 |
| #RELAX-INSTR-NEXT: beq a0, zero, 0 |
| #RELAX-RELOC: R_RISCV_BRANCH |
| c.beqz a0, FAR_JUMP_NEGATIVE |
| #INSTR-NEXT: beq a0, zero, 0x0 |
| #RELAX-INSTR-NEXT: beq a0, zero, 0 |
| #RELAX-RELOC: R_RISCV_BRANCH |
| |
| c.j NEAR |
| #INSTR-NEXT: c.j 0x91e |
| #RELAX-INSTR-NEXT: c.j 0 |
| #RELAX-RELOC: R_RISCV_RVC_JUMP |
| c.j NEAR_NEGATIVE |
| #INSTR-NEXT: c.j 0x8d4 |
| #RELAX-INSTR-NEXT: c.j 0 |
| #RELAX-RELOC: R_RISCV_RVC_JUMP |
| c.j FAR_BRANCH |
| #INSTR-NEXT: c.j 0xa20 |
| #RELAX-INSTR-NEXT: c.j 0 |
| #RELAX-RELOC: R_RISCV_RVC_JUMP |
| c.j FAR_BRANCH_NEGATIVE |
| #INSTR-NEXT: c.j 0x7d2 |
| #RELAX-INSTR-NEXT: c.j 0 |
| #RELAX-RELOC: R_RISCV_RVC_JUMP |
| c.j FAR_JUMP |
| #INSTR-NEXT: jal zero, 0x11f2 |
| #RELAX-INSTR-NEXT: jal zero, 0 |
| #RELAX-RELOC: R_RISCV_JAL |
| c.j FAR_JUMP_NEGATIVE |
| #INSTR-NEXT: jal zero, 0x0 |
| #RELAX-INSTR-NEXT: jal zero, 0 |
| #RELAX-RELOC: R_RISCV_JAL |
| |
| c.jal NEAR |
| #INSTR: c.jal 0x91e |
| #RELAX-INSTR: c.jal 0 |
| #RELAX-RELOC: R_RISCV_RVC_JUMP |
| c.jal NEAR_NEGATIVE |
| #INSTR: c.jal 0x8d4 |
| #RELAX-INSTR: c.jal 0 |
| #RELAX-RELOC: R_RISCV_RVC_JUMP |
| c.jal FAR_BRANCH |
| #INSTR-NEXT: c.jal 0xa20 |
| #RELAX-INSTR-NEXT: c.jal 0 |
| #RELAX-RELOC: R_RISCV_RVC_JUMP |
| c.jal FAR_BRANCH_NEGATIVE |
| #INSTR-NEXT: c.jal 0x7d2 |
| #RELAX-INSTR-NEXT: c.jal 0 |
| #RELAX-RELOC: R_RISCV_RVC_JUMP |
| c.jal FAR_JUMP |
| #INSTR-NEXT: jal ra, 0x11f2 |
| #RELAX-INSTR-NEXT: jal ra, 0 |
| #RELAX-RELOC: R_RISCV_JAL |
| c.jal FAR_JUMP_NEGATIVE |
| #INSTR-NEXT: jal ra, 0x0 |
| #RELAX-INSTR-NEXT: jal ra, 0 |
| #RELAX-RELOC: R_RISCV_JAL |
| |
| NEAR: |
| c.nop |
| .space 256 |
| FAR_BRANCH: |
| c.nop |
| .space 2000 |
| FAR_JUMP: |
| c.nop |