Skip to content

Commit

Permalink
RISC-V: Add disassembler arch option tests
Browse files Browse the repository at this point in the history
This commit adds certain tests for arch=ARCH disassembler option
(to override ISA and extensions).

gas/ChangeLog:

	* testsuite/gas/riscv/dis-arch-override.s: New test.
	* testsuite/gas/riscv/dis-arch-override-1.d: Likewise.
	* testsuite/gas/riscv/dis-arch-override-2.d: Likewise.
	* testsuite/gas/riscv/dis-arch-override-3.d: Likewise.
  • Loading branch information
a4lg committed Jul 2, 2022
1 parent 7247b8d commit 2978fb9
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 0 deletions.
13 changes: 13 additions & 0 deletions gas/testsuite/gas/riscv/dis-arch-override-1.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#as: -march=rv64imfd_zbb
#source: dis-arch-override.s
#objdump: -d

.*:[ ]+file format .*

Disassembly of section .text:

0+000 <target>:
[ ]+[0-9a-f]+:[ ]+00c5f053[ ]+fadd.s[ ]+ft0,fa1,fa2
[ ]+[0-9a-f]+:[ ]+02c5f053[ ]+fadd.d[ ]+ft0,fa1,fa2
[ ]+[0-9a-f]+:[ ]+30102573[ ]+csrr[ ]+a0,misa
[ ]+[0-9a-f]+:[ ]+0805c53b[ ]+zext.h[ ]+a0,a1
13 changes: 13 additions & 0 deletions gas/testsuite/gas/riscv/dis-arch-override-2.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#as: -march=rv64imfd_zbb
#source: dis-arch-override.s
#objdump: -d -M arch=rv32im_zfinx_zbkb

.*:[ ]+file format .*

Disassembly of section .text:

0+000 <target>:
[ ]+[0-9a-f]+:[ ]+00c5f053[ ]+fadd.s[ ]+zero,a1,a2
[ ]+[0-9a-f]+:[ ]+02c5f053[ ]+\.4byte[ ]+0x2c5f053
[ ]+[0-9a-f]+:[ ]+30102573[ ]+csrr[ ]+a0,misa
[ ]+[0-9a-f]+:[ ]+0805c53b[ ]+packw[ ]+a0,a1,zero
13 changes: 13 additions & 0 deletions gas/testsuite/gas/riscv/dis-arch-override-3.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#as: -march=rv64imfd_zbb
#source: dis-arch-override.s
#objdump: -d -m riscv -M arch=rv32im_zfinx_zbkb

.*:[ ]+file format .*

Disassembly of section .text:

0+000 <target>:
[ ]+[0-9a-f]+:[ ]+00c5f053[ ]+fadd.s[ ]+zero,a1,a2
[ ]+[0-9a-f]+:[ ]+02c5f053[ ]+\.4byte[ ]+0x2c5f053
[ ]+[0-9a-f]+:[ ]+30102573[ ]+csrr[ ]+a0,misa
[ ]+[0-9a-f]+:[ ]+0805c53b[ ]+\.4byte[ ]+0x805c53b
45 changes: 45 additions & 0 deletions gas/testsuite/gas/riscv/dis-arch-override.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Assembler configuration:
# -march=rv64imfd_zbb
# Disassembler configurations:
# Test 1: -d
# Test 2: -d -M arch=rv32im_zfinx_zbkb
# Test 3: -d -m riscv -M arch=rv32im_zfinx_zbkb

target:
# Assembler : fadd.s (F)
# Disassembler (test 2/3) : fadd.s (Zfinx)
# Test that all three operands point to GPRs.
fadd.s ft0, fa1, fa2

# Assembler : fadd.d (D)
# Disassembler (test 2/3) : (invalid)
# On disassembler option on test 2, Zdinx is not present. So,
# it should be disassembled as an invalid instruction.
fadd.d ft0, fa1, fa2

# Assembler : csrr (Zicsr)
# Disassembler (test 2/3) : csrr (Zicsr)
# When assembling, Zicsr is implied by F. When disassembling,
# Zicsr is implied by Zfinx. On both cases, csrr should be
# disassembled as csrr.
csrr a0, misa

# Assembler : zext.h (Zbb)
# Disassembler (test 2) : packw (Zbkb)
# Disassembler (test 3) : (invalid)
# Since zext.h specialized instruction does not exist in Zbkb
# and we disassemble the output with Zbkb, this instruction
# should be disassembled as a packw instruction (on RV64).
#
# We specify -M arch=rv32im_zfinx_zbkb on disassembling on test
# 2 and 3. But, XLEN part of the ISA string is effective
# only if XLEN-neutral machine is specified by `-m riscv' option
# (because we are disassembling 64-bit RISC-V ELF file, BFD
# architecture is set to `riscv:rv64' unless `-m' option
# is specified).
#
# As a result, test 3 (with `-m riscv' option) disassembles with
# RV32 but test 2 (without it) does with RV64.
# It changes the result of disassembling since packw instruction
# is invalid on RV32.
zext.h a0, a1

0 comments on commit 2978fb9

Please sign in to comment.