brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 83e2581 Raw
117 lines · plain
1# RUN: llvm-mc -triple riscv32 -show-encoding -mattr=+c,+relax \2# RUN:   -M no-aliases %s | FileCheck -check-prefixes=CHECK-ASM,CHECK-INST %s3# RUN: llvm-mc -triple riscv32 -filetype=obj -mattr=+c,+relax %s \4# RUN:   | llvm-objdump  --triple=riscv32 --mattr=+c -dr --no-print-imm-hex -M no-aliases - \5# RUN:   | FileCheck -check-prefixes=CHECK-OBJDUMP,CHECK-INST %s6 7# RUN: llvm-mc -triple riscv64 -show-encoding \8# RUN:   -M no-aliases -mattr=+c,+relax %s \9# RUN:   | FileCheck -check-prefixes=CHECK-ASM %s10# RUN: llvm-mc -triple riscv64 -filetype=obj -mattr=+c,+relax %s \11# RUN:   | llvm-objdump  --triple=riscv64 --mattr=+c -dr --no-print-imm-hex -M no-aliases - \12# RUN:   | FileCheck -check-prefixes=CHECK-OBJDUMP,CHECK-INST %s13 14## `.option exact` disables a variety of assembler behaviour:15## - automatic compression16## - branch relaxation (of short branches to longer equivalent sequences)17## - linker relaxation (emitting R_RISCV_RELAX)18## `.option noexact` enables these behaviours again. It is also the default.19 20# CHECK-OBJDUMP: 410821# CHECK-INST: c.lw a0, 0(a0)22# CHECK-ASM: # encoding: [0x08,0x41]23lw a0, 0(a0)24 25# CHECK-OBJDUMP: 410826# CHECK-INST: c.lw a0, 0(a0)27# CHECK-ASM: # encoding: [0x08,0x41]28c.lw a0, 0(a0)29 30# CHECK-ASM: call undefined31# CHECK-ASM-SAME: # encoding: [0x97'A',A,A,A,0xe7'A',0x80'A',A,A]32# CHECK-OBJDUMP: auipc ra, 033# CHECK-OBJDUMP-NEXT: R_RISCV_CALL_PLT undefined34# CHECK-OBJDUMP-NEXT: R_RISCV_RELAX *ABS*35# CHECK-OBJDUMP-NEXT: jalr ra36call undefined@plt37 38# CHECK-ASM: beq a0, a1, undefined39# CHECK-ASM-SAME: # encoding: [0x63'A',A,0xb5'A',A]40# CHECK-OBJDUMP: bne a0, a1, 0x1441# CHECK-OBJDUMP-NEXT: jal zero, 0x1042# CHECK-OBJDUMP-NEXT: R_RISCV_JAL undefined43beq a0, a1, undefined44 45# CHECK-ASM: c.j undefined46# CHECK-ASM-SAME: # encoding: [0bAAAAAA01,0b101AAAAA]47# CHECK-OBJDUMP: jal zero, 0x1448# CHECK-OBJDUMP-NEXT: R_RISCV_JAL undefined49c.j undefined50 51# CHECK-ASM: .option exact52.option exact53 54# CHECK-OBJDUMP: 0005250355# CHECK-INST: lw a0, 0(a0)56# CHECK-ASM: # encoding: [0x03,0x25,0x05,0x00]57lw a0, 0(a0)58 59# CHECK-OBJDUMP: 410860# CHECK-INST: c.lw a0, 0(a0)61# CHECK-ASM: # encoding: [0x08,0x41]62c.lw a0, 0(a0)63 64# CHECK-ASM: call undefined65# CHECK-ASM-SAME: # encoding: [0x97'A',A,A,A,0xe7'A',0x80'A',A,A]66# CHECK-OBJDUMP: auipc ra, 067# CHECK-OBJDUMP-NEXT: R_RISCV_CALL_PLT undefined68# CHECK-OBJDUMP-NOT: R_RISCV_RELAX69# CHECK-OBJDUMP-NEXT: jalr ra, 0(ra)70call undefined@plt71 72# CHECK-ASM: beq a0, a1, undefined73# CHECK-ASM-SAME: # encoding: [0x63'A',A,0xb5'A',A]74# CHECK-OBJDUMP: beq a0, a1, 0x2675# CHECK-OBJDUMP-NEXT: R_RISCV_BRANCH undefined76beq a0, a1, undefined77 78# CHECK-ASM: c.j undefined79# CHECK-ASM-SAME: # encoding: [0bAAAAAA01,0b101AAAAA]80# CHECK-OBJDUMP: c.j 0x2a81# CHECK-OBJDUMP-NEXT: R_RISCV_RVC_JUMP undefined82c.j undefined83 84# CHECK-ASM: .option noexact85.option noexact86 87# CHECK-OBJDUMP: 410888# CHECK-INST: c.lw a0, 0(a0)89# CHECK-ASM: # encoding: [0x08,0x41]90lw a0, 0(a0)91 92# CHECK-OBJDUMP: 410893# CHECK-INST: c.lw a0, 0(a0)94# CHECK-ASM: # encoding: [0x08,0x41]95c.lw a0, 0(a0)96 97# CHECK-ASM: call undefined98# CHECK-ASM-SAME: # encoding: [0x97'A',A,A,A,0xe7'A',0x80'A',A,A]99# CHECK-OBJDUMP: auipc ra, 0100# CHECK-OBJDUMP-NEXT: R_RISCV_CALL_PLT undefined101# CHECK-OBJDUMP-NEXT: R_RISCV_RELAX *ABS*102# CHECK-OBJDUMP-NEXT: jalr ra, 0(ra)103call undefined@plt104 105# CHECK-ASM: beq a0, a1, undefined106# CHECK-ASM-SAME: # encoding: [0x63'A',A,0xb5'A',A]107# CHECK-OBJDUMP: bne a0, a1, 0x40108# CHECK-OBJDUMP-NEXT: jal zero, 0x3c109# CHECK-OBJDUMP-NEXT: R_RISCV_JAL undefined110beq a0, a1, undefined111 112# CHECK-ASM: c.j undefined113# CHECK-ASM-SAME: # encoding: [0bAAAAAA01,0b101AAAAA]114# CHECK-OBJDUMP: jal zero, 0x40115# CHECK-OBJDUMP-NEXT: R_RISCV_JAL undefined116c.j undefined117