[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / MC / RISCV / rv64-relaxation.s
blobe71cf20a64135fb74efc8faaf2632cda8651e545
1 # RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+c < %s \
2 # RUN: | llvm-objdump -d -M no-aliases - | FileCheck --check-prefix=INSTR %s
3 # RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+c,+relax < %s \
4 # RUN: | llvm-objdump -d -M no-aliases - | FileCheck --check-prefix=RELAX-INSTR %s
5 # RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+c,+relax < %s \
6 # RUN: | llvm-readobj -r - | FileCheck -check-prefix=RELAX-RELOC %s
8 FAR_JUMP_NEGATIVE:
9 c.nop
10 .space 2000
12 FAR_BRANCH_NEGATIVE:
13 c.nop
14 .space 256
16 NEAR_NEGATIVE:
17 c.nop
19 start:
20 c.bnez a0, NEAR
21 #INSTR: c.bnez a0, 0x90e
22 #RELAX-INSTR: c.bnez a0, 0
23 #RELAX-RELOC: R_RISCV_RVC_BRANCH
24 c.bnez a0, NEAR_NEGATIVE
25 #INSTR: c.bnez a0, 0x8d4
26 #RELAX-INSTR: c.bnez a0, 0
27 #RELAX-RELOC: R_RISCV_RVC_BRANCH
28 c.bnez a0, FAR_BRANCH
29 #INSTR-NEXT: bne a0, zero, 0xa10
30 #RELAX-INSTR-NEXT: bne a0, zero, 0
31 #RELAX-RELOC: R_RISCV_BRANCH
32 c.bnez a0, FAR_BRANCH_NEGATIVE
33 #INSTR-NEXT: bne a0, zero, 0x7d2
34 #RELAX-INSTR-NEXT: bne a0, zero, 0
35 #RELAX-RELOC: R_RISCV_BRANCH
36 c.bnez a0, FAR_JUMP
37 #INSTR-NEXT: bne a0, zero, 0x11e2
38 #RELAX-INSTR-NEXT: bne a0, zero, 0
39 #RELAX-RELOC: R_RISCV_BRANCH
40 c.bnez a0, FAR_JUMP_NEGATIVE
41 #INSTR-NEXT: bne a0, zero, 0x0
42 #RELAX-INSTR-NEXT: bne a0, zero, 0
43 #RELAX-RELOC: R_RISCV_BRANCH
45 c.beqz a0, NEAR
46 #INSTR-NEXT: c.beqz a0, 0x90e
47 #RELAX-INSTR-NEXT: c.beqz a0, 0
48 #RELAX-RELOC: R_RISCV_RVC_BRANCH
49 c.beqz a0, NEAR_NEGATIVE
50 #INSTR-NEXT: c.beqz a0, 0x8d4
51 #RELAX-INSTR-NEXT: c.beqz a0, 0
52 #RELAX-RELOC: R_RISCV_RVC_BRANCH
53 c.beqz a0, FAR_BRANCH
54 #INSTR-NEXT: beq a0, zero, 0xa10
55 #RELAX-INSTR-NEXT: beq a0, zero, 0
56 #RELAX-RELOC: R_RISCV_BRANCH
57 c.beqz a0, FAR_BRANCH_NEGATIVE
58 #INSTR-NEXT: beq a0, zero, 0x7d2
59 #RELAX-INSTR-NEXT: beq a0, zero, 0
60 #RELAX-RELOC: R_RISCV_BRANCH
61 c.beqz a0, FAR_JUMP
62 #INSTR-NEXT: beq a0, zero, 0x11e2
63 #RELAX-INSTR-NEXT: beq a0, zero, 0
64 #RELAX-RELOC: R_RISCV_BRANCH
65 c.beqz a0, FAR_JUMP_NEGATIVE
66 #INSTR-NEXT: beq a0, zero, 0x0
67 #RELAX-INSTR-NEXT: beq a0, zero, 0
68 #RELAX-RELOC: R_RISCV_BRANCH
70 c.j NEAR
71 #INSTR-NEXT: c.j 0x90e
72 #RELAX-INSTR-NEXT: c.j 0
73 #RELAX-RELOC: R_RISCV_RVC_JUMP
74 c.j NEAR_NEGATIVE
75 #INSTR-NEXT: c.j 0x8d4
76 #RELAX-INSTR-NEXT: c.j 0
77 #RELAX-RELOC: R_RISCV_RVC_JUMP
78 c.j FAR_BRANCH
79 #INSTR-NEXT: c.j 0xa10
80 #RELAX-INSTR-NEXT: c.j 0
81 #RELAX-RELOC: R_RISCV_RVC_JUMP
82 c.j FAR_BRANCH_NEGATIVE
83 #INSTR-NEXT: c.j 0x7d2
84 #RELAX-INSTR-NEXT: c.j 0
85 #RELAX-RELOC: R_RISCV_RVC_JUMP
86 c.j FAR_JUMP
87 #INSTR-NEXT: jal zero, 0x11e2
88 #RELAX-INSTR-NEXT: jal zero, 0
89 #RELAX-RELOC: R_RISCV_JAL
90 c.j FAR_JUMP_NEGATIVE
91 #INSTR-NEXT: jal zero, 0x0
92 #RELAX-INSTR-NEXT: jal zero, 0
93 #RELAX-RELOC: R_RISCV_JAL
95 NEAR:
96 c.nop
98 .space 256
99 FAR_BRANCH:
100 c.nop
102 .space 2000
103 FAR_JUMP:
104 c.nop