| # RUN: llvm-mc -filetype=obj -triple=riscv64 %s \ |
| # RUN: | llvm-objdump -d -M no-aliases - \ |
| # RUN: | FileCheck --check-prefix=CHECK-INST %s |
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c %s \ |
| # RUN: | llvm-objdump -d -M no-aliases - \ |
| # RUN: | FileCheck --check-prefix=CHECK-INST-C %s |
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+relax %s \ |
| # RUN: | llvm-objdump -dr -M no-aliases - \ |
| # RUN: | FileCheck --check-prefix=CHECK-INST-RELAX %s |
| # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c,+relax %s \ |
| # RUN: | llvm-objdump -dr -M no-aliases - \ |
| # RUN: | FileCheck --check-prefix=CHECK-INST-C-RELAX %s |
| |
| .text |
| .type test,@function |
| test: |
| # CHECK-INST: beq a0, a1, 0x8 |
| # CHECK-INST-NEXT: jal zero, 0x1458 |
| # CHECK-INST-C: beq a0, a1, 0x8 |
| # CHECK-INST-C-NEXT: jal zero, 0x1458 |
| # CHECK-INST-RELAX: beq a0, a1, 0x8 |
| # CHECK-INST-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-RELAX-NEXT: R_RISCV_JAL .L1 |
| # CHECK-INST-C-RELAX: beq a0, a1, 0x8 |
| # CHECK-INST-C-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-C-RELAX-NEXT: R_RISCV_JAL .L1 |
| bne a0, a1, .L1 |
| .fill 1300, 4, 0 |
| .L1: |
| ret |
| # CHECK-INST: bne a0, a1, 0x1464 |
| # CHECK-INST-NEXT: jal zero, 0x28b4 |
| # CHECK-INST-C: bne a0, a1, 0x1462 |
| # CHECK-INST-C-NEXT: jal zero, 0x28b2 |
| # CHECK-INST-RELAX: bne a0, a1, 0x1464 |
| # CHECK-INST-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-RELAX-NEXT: R_RISCV_JAL .L2 |
| # CHECK-INST-C-RELAX: bne a0, a1, 0x1462 |
| # CHECK-INST-C-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-C-RELAX-NEXT: R_RISCV_JAL .L2 |
| beq a0, a1, .L2 |
| .fill 1300, 4, 0 |
| .L2: |
| ret |
| # CHECK-INST: bge a0, a1, 0x28c0 |
| # CHECK-INST-NEXT: jal zero, 0x3d10 |
| # CHECK-INST-C: bge a0, a1, 0x28bc |
| # CHECK-INST-C-NEXT: jal zero, 0x3d0c |
| # CHECK-INST-RELAX: bge a0, a1, 0x28c0 |
| # CHECK-INST-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-RELAX-NEXT: R_RISCV_JAL .L3 |
| # CHECK-INST-C-RELAX: bge a0, a1, 0x28bc |
| # CHECK-INST-C-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-C-RELAX-NEXT: R_RISCV_JAL .L3 |
| blt a0, a1, .L3 |
| .fill 1300, 4, 0 |
| .L3: |
| ret |
| # CHECK-INST: blt a0, a1, 0x3d1c |
| # CHECK-INST-NEXT: jal zero, 0x516c |
| # CHECK-INST-C: blt a0, a1, 0x3d16 |
| # CHECK-INST-C-NEXT: jal zero, 0x5166 |
| # CHECK-INST-RELAX: blt a0, a1, 0x3d1c |
| # CHECK-INST-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-RELAX-NEXT: R_RISCV_JAL .L4 |
| # CHECK-INST-C-RELAX: blt a0, a1, 0x3d16 |
| # CHECK-INST-C-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-C-RELAX-NEXT: R_RISCV_JAL .L4 |
| bge a0, a1, .L4 |
| .fill 1300, 4, 0 |
| .L4: |
| ret |
| # CHECK-INST: bgeu a0, a1, 0x5178 |
| # CHECK-INST-NEXT: jal zero, 0x65c8 |
| # CHECK-INST-C: bgeu a0, a1, 0x5170 |
| # CHECK-INST-C-NEXT: jal zero, 0x65c0 |
| # CHECK-INST-RELAX: bgeu a0, a1, 0x5178 |
| # CHECK-INST-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-RELAX-NEXT: R_RISCV_JAL .L5 |
| # CHECK-INST-C-RELAX: bgeu a0, a1, 0x5170 |
| # CHECK-INST-C-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-C-RELAX-NEXT: R_RISCV_JAL .L5 |
| bltu a0, a1, .L5 |
| .fill 1300, 4, 0 |
| .L5: |
| ret |
| # CHECK-INST: bltu a0, a1, 0x65d4 |
| # CHECK-INST-NEXT: jal zero, 0x7a24 |
| # CHECK-INST-C: bltu a0, a1, 0x65ca |
| # CHECK-INST-C-NEXT: jal zero, 0x7a1a |
| # CHECK-INST-RELAX: bltu a0, a1, 0x65d4 |
| # CHECK-INST-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-RELAX-NEXT: R_RISCV_JAL .L6 |
| # CHECK-INST-C-RELAX: bltu a0, a1, 0x65ca |
| # CHECK-INST-C-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-C-RELAX-NEXT: R_RISCV_JAL .L6 |
| bgeu a0, a1, .L6 |
| .fill 1300, 4, 0 |
| .L6: |
| ret |
| # CHECK-INST: bne a0, zero, 0x7a30 |
| # CHECK-INST-NEXT: jal zero, 0x8e80 |
| # CHECK-INST-C: c.bnez a0, 0x7a22 |
| # CHECK-INST-C-NEXT: jal zero, 0x8e72 |
| # CHECK-INST-RELAX: bne a0, zero, 0x7a30 |
| # CHECK-INST-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-RELAX-NEXT: R_RISCV_JAL .L7 |
| # CHECK-INST-C-RELAX: c.bnez a0, 0x7a22 |
| # CHECK-INST-C-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-C-RELAX-NEXT: R_RISCV_JAL .L7 |
| beqz a0, .L7 |
| .fill 1300, 4, 0 |
| .L7: |
| ret |
| # CHECK-INST: bne zero, a0, 0x8e8c |
| # CHECK-INST-NEXT: jal zero, 0xa2dc |
| # CHECK-INST-C: c.bnez a0, 0x8e7a |
| # CHECK-INST-C-NEXT: jal zero, 0xa2ca |
| # CHECK-INST-RELAX: bne zero, a0, 0x8e8c |
| # CHECK-INST-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-RELAX-NEXT: R_RISCV_JAL .L8 |
| # CHECK-INST-C-RELAX: c.bnez a0, 0x8e7a |
| # CHECK-INST-C-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-C-RELAX-NEXT: R_RISCV_JAL .L8 |
| beq x0, a0, .L8 |
| .fill 1300, 4, 0 |
| .L8: |
| ret |
| # CHECK-INST: beq a0, zero, 0xa2e8 |
| # CHECK-INST-NEXT: jal zero, 0xb738 |
| # CHECK-INST-C: c.beqz a0, 0xa2d2 |
| # CHECK-INST-C-NEXT: jal zero, 0xb722 |
| # CHECK-INST-RELAX: beq a0, zero, 0xa2e8 |
| # CHECK-INST-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-RELAX-NEXT: R_RISCV_JAL .L9 |
| # CHECK-INST-C-RELAX: c.beqz a0, 0xa2d2 |
| # CHECK-INST-C-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-C-RELAX-NEXT: R_RISCV_JAL .L9 |
| bnez a0, .L9 |
| .fill 1300, 4, 0 |
| .L9: |
| ret |
| # CHECK-INST: beq a6, zero, 0xb744 |
| # CHECK-INST-NEXT: jal zero, 0xcb94 |
| # CHECK-INST-C: beq a6, zero, 0xb72c |
| # CHECK-INST-C-NEXT: jal zero, 0xcb7c |
| # CHECK-INST-RELAX: beq a6, zero, 0xb744 |
| # CHECK-INST-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-RELAX-NEXT: R_RISCV_JAL .L10 |
| # CHECK-INST-C-RELAX: beq a6, zero, 0xb72c |
| # CHECK-INST-C-RELAX-NEXT: jal zero, {{.*}} |
| # CHECK-INST-C-RELAX-NEXT: R_RISCV_JAL .L10 |
| bnez x16, .L10 |
| .fill 1300, 4, 0 |
| .L10: |
| ret |
| .Lfunc_end0: |
| .size test, .Lfunc_end0-test |